aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/database/v2/models.py1
-rw-r--r--api/resources/v2/environments.py35
-rw-r--r--api/resources/v2/tasks.py24
-rw-r--r--api/urls.py1
4 files changed, 58 insertions, 3 deletions
diff --git a/api/database/v2/models.py b/api/database/v2/models.py
index 59dab3ebc..0ee811698 100644
--- a/api/database/v2/models.py
+++ b/api/database/v2/models.py
@@ -92,6 +92,7 @@ class V2Task(Base):
case_name = Column(String(30))
suite = Column(Boolean)
content = Column(Text)
+ params = Column(Text)
result = Column(Text)
error = Column(Text)
status = Column(Integer)
diff --git a/api/resources/v2/environments.py b/api/resources/v2/environments.py
index 158e98be7..7e587be85 100644
--- a/api/resources/v2/environments.py
+++ b/api/resources/v2/environments.py
@@ -11,6 +11,7 @@ import logging
from oslo_serialization import jsonutils
from docker import Client
+from docker.errors import APIError
from api import ApiResource
from api.database.v2.handlers import V2EnvironmentHandler
@@ -20,6 +21,7 @@ from api.database.v2.handlers import V2ContainerHandler
from yardstick.common.utils import result_handler
from yardstick.common.utils import change_obj_to_dict
from yardstick.common import constants as consts
+from yardstick.service.environment import Environment
LOG = logging.getLogger(__name__)
LOG.setLevel(logging.DEBUG)
@@ -124,10 +126,41 @@ class V2Environment(ApiResource):
LOG.debug('container name: %s', container.name)
try:
client.remove_container(container.name, force=True)
- except Exception:
+ except APIError:
LOG.exception('remove container failed')
container_handler.delete_by_uuid(v)
environment_handler.delete_by_uuid(environment_id)
return result_handler(consts.API_SUCCESS, {'environment': environment_id})
+
+
+class V2SUT(ApiResource):
+
+ def get(self, environment_id):
+ try:
+ uuid.UUID(environment_id)
+ except ValueError:
+ return result_handler(consts.API_ERROR, 'invalid environment id')
+
+ environment_handler = V2EnvironmentHandler()
+ try:
+ environment = environment_handler.get_by_uuid(environment_id)
+ except ValueError:
+ return result_handler(consts.API_ERROR, 'no such environment id')
+
+ if not environment.pod_id:
+ return result_handler(consts.API_SUCCESS, {'sut': {}})
+
+ pod_handler = V2PodHandler()
+ try:
+ pod = pod_handler.get_by_uuid(environment.pod_id)
+ except ValueError:
+ return result_handler(consts.API_ERROR, 'no such pod id')
+ else:
+ pod_content = pod.content
+
+ env = Environment(pod=pod_content)
+ sut_info = env.get_sut_info()
+
+ return result_handler(consts.API_SUCCESS, {'sut': sut_info})
diff --git a/api/resources/v2/tasks.py b/api/resources/v2/tasks.py
index 25a9cf109..17241ed63 100644
--- a/api/resources/v2/tasks.py
+++ b/api/resources/v2/tasks.py
@@ -38,6 +38,8 @@ class V2Tasks(ApiResource):
for t in tasks:
result = t['result']
t['result'] = jsonutils.loads(result) if result else None
+ params = t['params']
+ t['params'] = jsonutils.loads(params) if params else None
return result_handler(consts.API_SUCCESS, {'tasks': tasks})
@@ -94,6 +96,9 @@ class V2Task(ApiResource):
result = task_info['result']
task_info['result'] = jsonutils.loads(result) if result else None
+ params = task_info['params']
+ task_info['params'] = jsonutils.loads(params) if params else None
+
return result_handler(consts.API_SUCCESS, {'task': task_info})
def delete(self, task_id):
@@ -127,7 +132,6 @@ class V2Task(ApiResource):
return result_handler(consts.API_SUCCESS, {'task': task_id})
def put(self, task_id):
-
try:
uuid.UUID(task_id)
except ValueError:
@@ -166,6 +170,21 @@ class V2Task(ApiResource):
return result_handler(consts.API_SUCCESS, {'uuid': task_id})
+ def add_params(self, args):
+ task_id = args['task_id']
+ try:
+ params = args['params']
+ except KeyError:
+ return result_handler(consts.API_ERROR, 'params must be provided')
+
+ LOG.info('update params info in task')
+
+ task_handler = V2TaskHandler()
+ task_update_data = {'params': jsonutils.dumps(params)}
+ task_handler.update_attr(task_id, task_update_data)
+
+ return result_handler(consts.API_SUCCESS, {'uuid': task_id})
+
def add_case(self, args):
task_id = args['task_id']
try:
@@ -243,7 +262,8 @@ class V2Task(ApiResource):
data = {
'inputfile': ['/tmp/{}.yaml'.format(task.case_name)],
- 'task_id': task_id
+ 'task_id': task_id,
+ 'task-args': task.params
}
if task.suite:
data.update({'suite': True})
diff --git a/api/urls.py b/api/urls.py
index 4b8e39e8f..9f0abcade 100644
--- a/api/urls.py
+++ b/api/urls.py
@@ -26,6 +26,7 @@ urlpatterns = [
Url('/api/v2/yardstick/environments', 'v2_environments'),
Url('/api/v2/yardstick/environments/action', 'v2_environments'),
Url('/api/v2/yardstick/environments/<environment_id>', 'v2_environment'),
+ Url('/api/v2/yardstick/environments/<environment_id>/sut', 'v2_sut'),
Url('/api/v2/yardstick/openrcs', 'v2_openrcs'),
Url('/api/v2/yardstick/openrcs/action', 'v2_openrcs'),