aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchenjiankun <chenjiankun1@huawei.com>2017-07-13 06:14:43 +0000
committerchenjiankun <chenjiankun1@huawei.com>2017-07-13 07:12:47 +0000
commitcc3c7796ccb30b021c219cabdbe73bfc14fb38cc (patch)
tree95e3b5468ee76e4d8e023fad7a43775fa6213ef2
parent49be6a8c0f42c9a12af305721beac95285f74b2b (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.py3
-rw-r--r--api/resources/v2/environments.py18
-rw-r--r--api/urls.py1
-rw-r--r--tests/unit/common/test_utils.py13
-rw-r--r--yardstick/common/utils.py10
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