diff options
Diffstat (limited to 'qtip/api/controllers')
-rw-r--r-- | qtip/api/controllers/metric.py | 23 | ||||
-rw-r--r-- | qtip/api/controllers/plan.py | 23 | ||||
-rw-r--r-- | qtip/api/controllers/qpi.py | 23 |
3 files changed, 48 insertions, 21 deletions
diff --git a/qtip/api/controllers/metric.py b/qtip/api/controllers/metric.py index a026b5fc..86bf70f9 100644 --- a/qtip/api/controllers/metric.py +++ b/qtip/api/controllers/metric.py @@ -7,17 +7,26 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import connexion import httplib +import connexion + +from qtip.base import error +from qtip.loader import metric + def list_metrics(): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'List metrics', - 'Metrics listing not implemented') + metric_list = list(metric.MetricSpec.list_all()) + return metric_list, httplib.OK def get_metric(name): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'Get a metric', - 'metric retrieval not implemented') + 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.') diff --git a/qtip/api/controllers/plan.py b/qtip/api/controllers/plan.py index e202b413..93836a32 100644 --- a/qtip/api/controllers/plan.py +++ b/qtip/api/controllers/plan.py @@ -7,20 +7,29 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import connexion import httplib +import connexion + +from qtip.base import error +from qtip.loader import plan + def list_plans(): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'List plans', - 'Plans listing not implemented') + plan_list = list(plan.Plan.list_all()) + return plan_list, httplib.OK def get_plan(name): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'Get a plan', - 'Plan retrieval not implemented') + try: + plan_spec = plan.Plan(name) + return {'name': plan_spec.name, + 'abspath': plan_spec.abspath, + 'content': plan_spec.content}, httplib.OK + except error.NotFoundError: + return connexion.problem(httplib.NOT_FOUND, + 'Plan Not Found', + 'requested plan `' + name + '` not found.') def run_plan(name, action="run"): diff --git a/qtip/api/controllers/qpi.py b/qtip/api/controllers/qpi.py index 0b5c5b09..3c4dd718 100644 --- a/qtip/api/controllers/qpi.py +++ b/qtip/api/controllers/qpi.py @@ -7,17 +7,26 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import connexion import httplib +import connexion + +from qtip.base import error +from qtip.loader import qpi + def list_qpis(): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'List QPIs', - 'QPIs listing not implemented') + qpi_spec_list = list(qpi.QPISpec.list_all()) + return qpi_spec_list, httplib.OK def get_qpi(name): - return connexion.problem(httplib.NOT_IMPLEMENTED, - 'Get a QPI', - 'QPI retrieval not implemented') + try: + qpi_spec = qpi.QPISpec(name) + return {'name': qpi_spec.name, + 'abspath': qpi_spec.abspath, + 'content': qpi_spec.content}, httplib.OK + except error.NotFoundError: + return connexion.problem(httplib.NOT_FOUND, + 'QPI Not Found', + 'Requested QPI Spec `' + name + '` not found.') |