spec = yaml.safe_load(stream)
metrics = self._task.args.get('metrics')
- export_to = self._task.args.get('export_to')
+ dest = self._task.args.get('dest')
- return calc_qpi(spec, metrics, export_to)
+ return calc_qpi(spec, metrics, dest=dest)
-def calc_qpi(qpi_spec, metrics, dest=None):
+@export_to_file
+def calc_qpi(qpi_spec, metrics):
display.vv("calculate QPI {}".format(qpi_spec['name']))
display.vvv("spec: {}".format(qpi_spec))
'metrics': metrics
}
- if dest is not None:
- export_to_file(results, dest)
-
return results
string = self._task.args.get('string')
patterns = self._task.args.get('patterns')
- export_to = self._task.args.get('export_to')
+ dest = self._task.args.get('dest')
- return collect(patterns, string, export_to)
+ return collect(patterns, string, dest=dest)
-def collect(patterns, string, dest=None):
+@export_to_file
+def collect(patterns, string):
"""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 dest is not None:
- export_to_file(captured, dest)
-
return captured
import json
-def export_to_file(content, filename):
- with open(filename, 'w+') as f:
- f.write(json.dumps(content, indent=2))
+def export_to_file(func):
+ def func_wrapper(spec, metrics, dest=None):
+ content = func(spec, metrics)
+ if dest is not None:
+ with open(dest, 'w+') as f:
+ f.write(json.dumps(content, indent=2))
+ return content
+ return func_wrapper