aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-12 15:37:24 +0800
committerYujun Zhang <zhang.yujunz@zte.com.cn>2017-04-12 16:09:49 +0800
commit9c274969f1d8cee2012ec16a21ad85d20d585c84 (patch)
treeb86f2ebb4b43985ccc7507b03d52c7693fa3a68f
parente7b739f9a202ebcee56e1707161477829ce6a683 (diff)
Dump collected facts
Change-Id: Id0b7b2e94016a73ffcaa2d737af1ca33230b3662 Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
-rw-r--r--.gitignore6
-rw-r--r--qtip/ansible_library/plugins/action/collect.py13
-rw-r--r--tests/integration/run.yaml3
-rw-r--r--tests/integration/tasks/inxi.yaml5
4 files changed, 25 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 64945b8a..03de790a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,3 +73,9 @@ ChangeLog
# unignore external data
!/tests/data/**/*
+
+# integration data
+/tests/integration/hosts
+/tests/integration/ssh.cfg
+/tests/integration/reports/*
+!/tests/integration/reports/*.sample
diff --git a/qtip/ansible_library/plugins/action/collect.py b/qtip/ansible_library/plugins/action/collect.py
index 88ad0e35..26e813b8 100644
--- a/qtip/ansible_library/plugins/action/collect.py
+++ b/qtip/ansible_library/plugins/action/collect.py
@@ -10,6 +10,7 @@
##############################################################################
from collections import defaultdict
+import os
import re
from ansible.plugins.action import ActionBase
@@ -26,6 +27,10 @@ class ActionModule(ActionBase):
string = self._task.args.get('string')
patterns = self._task.args.get('patterns')
+ dump = self._task.args.get('dump')
+ if dump is not None:
+ dump_facts(task_vars['inventory_hostname'], [{'name': 'inxi.log', 'content': string}])
+
return collect(patterns, string)
@@ -43,3 +48,11 @@ def collect(patterns, string):
captured[key].append(value)
return captured
+
+
+def dump_facts(hostname, facts):
+ dump_root = os.path.join('dump', hostname)
+ if not os.path.exists(dump_root):
+ os.mkdir(dump_root)
+ return [{'name': fact['name'], 'result': open(os.path.join(dump_root, fact['name']), 'w+').write(fact['content'])}
+ for fact in facts]
diff --git a/tests/integration/run.yaml b/tests/integration/run.yaml
index 7eb141d7..d2768d68 100644
--- a/tests/integration/run.yaml
+++ b/tests/integration/run.yaml
@@ -21,6 +21,7 @@
include: tasks/inxi.yaml
- name: ssl metrics
include: tasks/openssl.yaml
+ tags: [ssl]
- hosts: compute
tasks:
@@ -59,6 +60,7 @@
baseline: 6402.9
register: qpi_result
delegate_to: localhost
+ tags: [calculate]
# Generate and publish report
- hosts: local
@@ -67,4 +69,5 @@
template: src=templates/system-info.j2 dest=reports/system-info
- name: create qpi report
template: src=templates/qpi-report.j2 dest=reports/qpi-report
+ tags: [report]
# TODO(yujunz) push test result to testapi
diff --git a/tests/integration/tasks/inxi.yaml b/tests/integration/tasks/inxi.yaml
index 6c2db6a4..47eb2e73 100644
--- a/tests/integration/tasks/inxi.yaml
+++ b/tests/integration/tasks/inxi.yaml
@@ -14,7 +14,7 @@
- name: check hardware information with inxi
command: inxi -b -c0 -n
- register: inxi_log
+ register: inxi_out
# TODO(yujunz) normalize system information, test condition and performance metrics for future data mining
# e.g. convert "2 Deca core Intel Xeon E5-2650 v3s (-HT-MCP-SMP-) speed/max: 1200/3000 MHz" to
@@ -31,7 +31,7 @@
# cache_mb: None
- name: collect system information from inxi
collect:
- string: "{{ inxi_log.stdout }}"
+ string: "{{ inxi_out.stdout }}"
patterns:
- '.+\s+Host:\s+(?P<hostname>.+)\sKernel'
- '.+\sMemory:\s+(?P<memory>.+MB)\s'
@@ -40,4 +40,5 @@
- '.+\sKernel:\s+(?P<kernel>.+)\sConsole'
- '.+\s+HDD Total Size:\s+(?P<disk>.+)\s'
- '.+\sproduct:\s+(?P<product>.+)\sv'
+ dump: 'inix.log'
register: system_info