diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/resources/v2/pods.py | 19 | ||||
-rw-r--r-- | api/server.py | 13 | ||||
-rw-r--r-- | api/urls.py | 27 |
3 files changed, 52 insertions, 7 deletions
diff --git a/api/resources/v2/pods.py b/api/resources/v2/pods.py index f5cdc3b7b..ffb8a6046 100644 --- a/api/resources/v2/pods.py +++ b/api/resources/v2/pods.py @@ -58,3 +58,22 @@ class V2Pods(ApiResource): environment_handler.update_attr(environment_id, {'pod_id': pod_id}) return result_handler(consts.API_SUCCESS, {'uuid': pod_id, 'pod': data}) + + +class V2Pod(ApiResource): + + def get(self, pod_id): + try: + uuid.UUID(pod_id) + except ValueError: + return result_handler(consts.API_ERROR, 'invalid pod id') + + pod_handler = V2PodHandler() + try: + pod = pod_handler.get_by_uuid(pod_id) + except ValueError: + return result_handler(consts.API_ERROR, 'no such pod') + + content = jsonutils.loads(pod.content) + + return result_handler(consts.API_SUCCESS, {'pod': content}) diff --git a/api/server.py b/api/server.py index c1548ca10..158b8a508 100644 --- a/api/server.py +++ b/api/server.py @@ -32,7 +32,7 @@ try: except ImportError: from urllib.parse import urljoin -logger = logging.getLogger(__name__) +LOG = logging.getLogger(__name__) app = Flask(__name__) @@ -62,7 +62,7 @@ def init_db(): return False subclses = filter(func, inspect.getmembers(models, inspect.isclass)) - logger.debug('Import models: %s', [a[1] for a in subclses]) + LOG.debug('Import models: %s', [a[1] for a in subclses]) Base.metadata.create_all(bind=engine) @@ -77,12 +77,15 @@ def get_endpoint(url): for u in urlpatterns: - api.add_resource(get_resource(u.target), u.url, endpoint=get_endpoint(u.url)) + try: + api.add_resource(get_resource(u.target), u.url, endpoint=get_endpoint(u.url)) + except StopIteration: + LOG.error('url resource not found: %s', u.url) if __name__ == '__main__': _init_logging() - logger.setLevel(logging.DEBUG) - logger.info('Starting server') + LOG.setLevel(logging.DEBUG) + LOG.info('Starting server') init_db() app.run(host='0.0.0.0') diff --git a/api/urls.py b/api/urls.py index be453a651..5c7e9f7b5 100644 --- a/api/urls.py +++ b/api/urls.py @@ -26,8 +26,31 @@ urlpatterns = [ Url('/api/v2/yardstick/environments/action', 'v2_environments'), Url('/api/v2/yardstick/environments/<environment_id>', 'v2_environment'), - Url('/api/v2/yardstick/environments/openrcs/action', 'v2_openrcs'), - Url('/api/v2/yardstick/environments/openrcs/<openrc_id>', 'v2_openrc'), + Url('/api/v2/yardstick/openrcs/action', 'v2_openrcs'), + Url('/api/v2/yardstick/openrcs/<openrc_id>', 'v2_openrc'), Url('/api/v2/yardstick/pods/action', 'v2_pods'), + Url('/api/v2/yardstick/pods/<pod_id>', 'v2_pod'), + + Url('/api/v2/yardstick/images', 'v2_images'), + Url('/api/v2/yardstick/images/action', 'v2_images'), + + Url('/api/v2/yardstick/containers/action', 'v2_containers'), + Url('/api/v2/yardstick/containers/<container_id>', 'v2_container'), + + Url('/api/v2/yardstick/projects', 'v2_projects'), + Url('/api/v2/yardstick/projects/action', 'v2_projects'), + Url('/api/v2/yardstick/projects/<project_id>', 'v2_project'), + + Url('/api/v2/yardstick/tasks', 'v2_tasks'), + Url('/api/v2/yardstick/tasks/action', 'v2_tasks'), + Url('/api/v2/yardstick/tasks/<task_id>', 'v2_task'), + + Url('/api/v2/yardstick/testcases', 'v2_testcases'), + Url('/api/v2/yardstick/testcases/action', 'v2_testcases'), + Url('/api/v2/yardstick/testcases/<case_name>', 'v2_testcase'), + + Url('/api/v2/yardstick/testsuites', 'v2_testsuites'), + Url('/api/v2/yardstick/testsuites/action', 'v2_testsuites'), + Url('/api/v2/yardstick/testsuites/<suite_name>', 'v2_testsuites') ] |