diff options
author | SerenaFeng <feng.xiaowei@zte.com.cn> | 2017-03-14 10:06:41 +0800 |
---|---|---|
committer | SerenaFeng <feng.xiaowei@zte.com.cn> | 2017-03-15 15:27:49 +0800 |
commit | 9f87878becc36b19110e151e802180aa5f7fb305 (patch) | |
tree | d2356c4434a07caa506dd3963a84e663ee157a01 | |
parent | a5145885c7a43622f803534ed97890ef9acb852d (diff) |
provide get_one_exceptions to unify get_xx process
add refactor get_metric()
Change-Id: I972c77e63a654eeb286c573d75efe842b2887c1d
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
-rw-r--r-- | qtip/api/controllers/common.py | 19 | ||||
-rw-r--r-- | qtip/api/controllers/metric.py | 12 |
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} |