diff options
author | chenjiankun <chenjiankun1@huawei.com> | 2017-07-13 06:14:43 +0000 |
---|---|---|
committer | chenjiankun <chenjiankun1@huawei.com> | 2017-07-13 07:12:47 +0000 |
commit | cc3c7796ccb30b021c219cabdbe73bfc14fb38cc (patch) | |
tree | 95e3b5468ee76e4d8e023fad7a43775fa6213ef2 | |
parent | 49be6a8c0f42c9a12af305721beac95285f74b2b (diff) |
Add API to get environments
JIRA: YARDSTICK-716
API: /api/v2/yardstick/environments
METHOD: GET
Change-Id: I46b7fb2b143fe76b6a0edbf1ecc8281187b85918
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
-rw-r--r-- | api/database/v2/handlers.py | 3 | ||||
-rw-r--r-- | api/resources/v2/environments.py | 18 | ||||
-rw-r--r-- | api/urls.py | 1 | ||||
-rw-r--r-- | tests/unit/common/test_utils.py | 13 | ||||
-rw-r--r-- | yardstick/common/utils.py | 10 |
5 files changed, 45 insertions, 0 deletions
diff --git a/api/database/v2/handlers.py b/api/database/v2/handlers.py index eb732817d..095ad724c 100644 --- a/api/database/v2/handlers.py +++ b/api/database/v2/handlers.py @@ -24,6 +24,9 @@ class V2EnvironmentHandler(object): db_session.commit() return environment + def list_all(self): + return V2Environment.query.all() + def get_by_uuid(self, uuid): environment = V2Environment.query.filter_by(uuid=uuid).first() if not environment: diff --git a/api/resources/v2/environments.py b/api/resources/v2/environments.py index dc6eac725..4b27c45b8 100644 --- a/api/resources/v2/environments.py +++ b/api/resources/v2/environments.py @@ -1,9 +1,12 @@ import uuid import logging +from oslo_serialization import jsonutils + from api import ApiResource from api.database.v2.handlers import V2EnvironmentHandler from yardstick.common.utils import result_handler +from yardstick.common.utils import change_obj_to_dict from yardstick.common import constants as consts LOG = logging.getLogger(__name__) @@ -12,6 +15,20 @@ LOG.setLevel(logging.DEBUG) class V2Environments(ApiResource): + def get(self): + environment_handler = V2EnvironmentHandler() + environments = [change_obj_to_dict(e) for e in environment_handler.list_all()] + + for e in environments: + container_info = e['container_id'] + e['container_id'] = jsonutils.loads(container_info) if container_info else {} + + data = { + 'environments': environments + } + + return result_handler(consts.API_SUCCESS, data) + def post(self): return self._dispatch_post() @@ -24,6 +41,7 @@ class V2Environments(ApiResource): env_id = str(uuid.uuid4()) environment_handler = V2EnvironmentHandler() + env_init_data = { 'name': name, 'uuid': env_id diff --git a/api/urls.py b/api/urls.py index 0ffba89c9..0c63fb040 100644 --- a/api/urls.py +++ b/api/urls.py @@ -22,5 +22,6 @@ urlpatterns = [ Url('/yardstick/env/action', 'v1_env'), # api v2 + Url('/api/v2/yardstick/environments', 'v2_environments'), Url('/api/v2/yardstick/environments/action', 'v2_environments'), ] diff --git a/tests/unit/common/test_utils.py b/tests/unit/common/test_utils.py index 7f260cfe6..664b38b13 100644 --- a/tests/unit/common/test_utils.py +++ b/tests/unit/common/test_utils.py @@ -163,6 +163,19 @@ class TranslateToStrTestCase(unittest.TestCase): self.assertEqual(result, output_str) +class ChangeObjToDictTestCase(unittest.TestCase): + + def test_change_obj_to_dict(self): + class A(object): + def __init__(self): + self.name = 'yardstick' + + obj = A() + obj_r = utils.change_obj_to_dict(obj) + obj_s = {'name': 'yardstick'} + self.assertEqual(obj_r, obj_s) + + def main(): unittest.main() diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py index 1faba4d9e..0c0bac934 100644 --- a/yardstick/common/utils.py +++ b/yardstick/common/utils.py @@ -232,3 +232,13 @@ def result_handler(status, data): 'result': data } return jsonify(result) + + +def change_obj_to_dict(obj): + dic = {} + for k, v in vars(obj).items(): + try: + vars(v) + except TypeError: + dic.update({k: v}) + return dic |