summaryrefslogtreecommitdiffstats
path: root/qtip
diff options
context:
space:
mode:
authorYujun Zhang <zhang.yujunz@zte.com.cn>2017-03-22 07:45:48 +0000
committerGerrit Code Review <gerrit@opnfv.org>2017-03-22 07:45:48 +0000
commit6f553fb49184b05c6765c0bbc352f1f83bc586cc (patch)
treee02348b017d3781baf40a855aa45053f85372481 /qtip
parent829bf5311cc8db0e2295cf6a26be5cdea88e3db8 (diff)
parent1899d336b7172809b8ff8439bec2038d83e976a0 (diff)
Merge "provide get_one_exceptions to unify get_xx process" into stable/danube
Diffstat (limited to 'qtip')
-rw-r--r--qtip/api/controllers/common.py19
-rw-r--r--qtip/api/controllers/metric.py12
2 files changed, 22 insertions, 9 deletions
diff --git a/qtip/api/controllers/common.py b/qtip/api/controllers/common.py
new file mode 100644
index 00000000..6cabbc7f
--- /dev/null
+++ b/qtip/api/controllers/common.py
@@ -0,0 +1,19 @@
+import httplib
+
+import connexion
+
+from qtip.base import error
+
+
+def get_one_exceptions(resource):
+ def _decorator(func):
+ def _execute(name):
+ try:
+ return func(name), httplib.OK
+ except error.NotFoundError:
+ return connexion.problem(
+ httplib.NOT_FOUND,
+ '{} Not Found'.format(resource),
+ 'Requested {} `{}` not found.'.format(resource, name))
+ return _execute
+ return _decorator
diff --git a/qtip/api/controllers/metric.py b/qtip/api/controllers/metric.py
index 86bf70f9..dd4c8ac6 100644
--- a/qtip/api/controllers/metric.py
+++ b/qtip/api/controllers/metric.py
@@ -9,9 +9,7 @@
import httplib
-import connexion
-
-from qtip.base import error
+from qtip.api.controllers import common
from qtip.loader import metric
@@ -20,13 +18,9 @@ def list_metrics():
return metric_list, httplib.OK
+@common.get_one_exceptions(resource='metric')
def get_metric(name):
- try:
metric_spec = metric.MetricSpec(name)
return {'name': metric_spec.name,
'abspath': metric_spec.abspath,
- 'content': metric_spec.content}, httplib.OK
- except error.NotFoundError:
- return connexion.problem(httplib.NOT_FOUND,
- 'Metric Not Found',
- 'Requested metric `' + name + '` not found.')
+ 'content': metric_spec.content}