##############################################################################
from collections import defaultdict
+import json
import re
from ansible.plugins.action import ActionBase
string = self._task.args.get('string')
patterns = self._task.args.get('patterns')
+ export_to = self._task.args.get('export_to')
- return collect(patterns, string)
+ return collect(patterns, string, export_to)
-def collect(patterns, string):
+def collect(patterns, string, export_to=None):
"""collect all named subgroups of the match into a list keyed by subgroup name
"""
captured = defaultdict(list)
for (key, value) in match_obj.groupdict().items():
captured[key].append(value)
+ if export_to is not None:
+ with open(export_to, 'w+') as f:
+ f.write(json.dumps(captured, indent=2))
return captured
- name: generating log filename
set_fact:
logfile: "{{ qtip_results }}/inxi.log"
+ tags:
+ - always
- name: saving output to log
copy:
- '.+\sKernel:\s+(?P<kernel>.+)\sConsole'
- '.+\s+HDD Total Size:\s+(?P<disk>.+)\s'
- '.+\sproduct:\s+(?P<product>.+)\sv'
- dump: 'inix.log'
+ export_to: "{{ qtip_results }}/system_info.json"
register: system_info
delegate_to: localhost
+ tags:
+ - collect
- name: create system information report
template:
src: system-info.j2
dest: "{{ qtip_results }}/system-info"
delegate_to: localhost
- tags: [report]
+ tags:
+ - report
roles:
# prepare local environment
- - { role: qtip, tasks: setup-local }
+ - { role: qtip, tasks: setup-local, tags: [setup] }
- hosts: compute
roles:
# prepare environment
- - { role: qtip, tasks: setup-node }
+ - { role: qtip, tasks: setup-node, tags: [setup] }
- hosts: compute
roles:
# run test and collect metrics
- - { role: inxi, tags: [inxi, sysinfo] }
- - { role: unixbench, tags: [unixbench, float, int] }
- - { role: openssl, tags: [openssl, ssl]}
- - { role: nDPI, tags: [ndpi, dpi]}
- - { role: ramspeed, tags: [ramspeed, mem]}
+ - { role: inxi, tags: [run, inxi, sysinfo] }
+ - { role: unixbench, tags: [run, unixbench, arithmetic] }
+ - { role: openssl, tags: [run, openssl, ssl] }
+ - { role: nDPI, tags: [run, ndpi, dpi] }
+ - { role: ramspeed, tags: [run, ramspeed, memory] }
# calculate scores
- - { role: qtip, tasks: calculate}
+ - { role: qtip, tasks: calculate, tags: [calculate] }
- hosts: localhost
roles:
# aggregate results and produce report
- - { role: qtip, tasks: aggregate }
+ - { role: qtip, tasks: aggregate, tags: [aggregate] }
# publish results
- - { role: opnfv-testapi, tasks: report, when: testapi_url is defined}
+ - { role: opnfv-testapi, tasks: report, when: testapi_url is defined, tags: [report] }
---
-- name: setting result directory name
+- name: formatting directory name for current run
set_fact:
- qtip_results_base: "{{ qtip_results }}/{{ pod_name }}-{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
+ pod_results: "{{ pod_name }}-{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
+
+- name: creating directory for current run
+ file:
+ state: directory
+ path: "{{ qtip_results }}/{{ pod_results }}"
+
+- name: creating symbolic link to current test
+ file:
+ state: link
+ src: "{{ pod_results }}"
+ dest: "{{ qtip_results }}/current"
- name: create cache directory
file:
- name: overriding result directory name
set_fact:
- qtip_results: "{{ hostvars['localhost']['qtip_results_base']}}/{{ inventory_hostname }}"
+ qtip_results: "{{ qtip_results }}/current/{{ inventory_hostname }}"
+ tags:
+ - always
- name: creating result directory
file: