Rewrite `export_to_file` as decorator 65/33765/1
authorYujun Zhang <zhang.yujunz@zte.com.cn>
Tue, 25 Apr 2017 06:08:01 +0000 (14:08 +0800)
committerYujun Zhang <zhang.yujunz@zte.com.cn>
Tue, 25 Apr 2017 08:58:31 +0000 (16:58 +0800)
Change-Id: Ibf852038fac986801a3fc2c608a0ddb1572abbde
Signed-off-by: Yujun Zhang <zhang.yujunz@zte.com.cn>
qtip/ansible_library/plugins/action/calculate.py
qtip/ansible_library/plugins/action/collect.py
qtip/util/export_to.py

index 01c80a0..ee3b8e3 100644 (file)
@@ -38,12 +38,13 @@ class ActionModule(ActionBase):
             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))
@@ -63,9 +64,6 @@ def calc_qpi(qpi_spec, metrics, dest=None):
         'metrics': metrics
     }
 
-    if dest is not None:
-        export_to_file(results, dest)
-
     return results
 
 
index c54cbe7..9d3b2a7 100644 (file)
@@ -27,12 +27,13 @@ class ActionModule(ActionBase):
 
         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)
@@ -45,7 +46,4 @@ def collect(patterns, string, dest=None):
             for (key, value) in match_obj.groupdict().items():
                 captured[key].append(value)
 
-    if dest is not None:
-        export_to_file(captured, dest)
-
     return captured
index 98c39b5..17adae7 100644 (file)
 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