aboutsummaryrefslogtreecommitdiffstats
path: root/api/resources/v1/testsuites.py
diff options
context:
space:
mode:
authorchenjiankun <chenjiankun1@huawei.com>2017-07-07 03:13:36 +0000
committerchenjiankun <chenjiankun1@huawei.com>2017-07-11 09:47:30 +0000
commit0d18f9d3299480cb43e6b335180e5cbdb58505c3 (patch)
treea35aa6373a88eddb3d13f4fdb7cd3db9bad1a4ee /api/resources/v1/testsuites.py
parent41136dafb30d0c410e92f9f7a7c19eae60f224e2 (diff)
Yardstick API architecture improvement
JIRA: YARDSTICK-710 Since we have the plan to upload api v2 and gui. We need to add put and delete method. So the architecture need to be improved. Change-Id: Ie20a79c26ef6c581897ce4e63980fa2895b162d2 Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
Diffstat (limited to 'api/resources/v1/testsuites.py')
-rw-r--r--api/resources/v1/testsuites.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/api/resources/v1/testsuites.py b/api/resources/v1/testsuites.py
new file mode 100644
index 000000000..5f72c2ea6
--- /dev/null
+++ b/api/resources/v1/testsuites.py
@@ -0,0 +1,64 @@
+##############################################################################
+# Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+from __future__ import absolute_import
+import uuid
+import os
+import logging
+
+from flasgger.utils import swag_from
+
+from api import ApiResource
+from api.utils.thread import TaskThread
+from yardstick.common import constants as consts
+from yardstick.common.utils import result_handler
+from yardstick.benchmark.core import Param
+from yardstick.benchmark.core.task import Task
+from api.swagger import models
+
+LOG = logging.getLogger(__name__)
+LOG.setLevel(logging.DEBUG)
+
+
+TestSuiteActionModel = models.TestSuiteActionModel
+TestSuiteActionArgsModel = models.TestSuiteActionArgsModel
+TestSuiteActionArgsOptsModel = models.TestSuiteActionArgsOptsModel
+TestSuiteActionArgsOptsTaskArgModel = \
+ models.TestSuiteActionArgsOptsTaskArgModel
+
+
+class V1Testsuite(ApiResource):
+
+ @swag_from(os.path.join(consts.REPOS_DIR,
+ 'api/swagger/docs/testsuites_action.yaml'))
+ def post(self):
+ return self._dispatch_post()
+
+ def run_test_suite(self, args):
+ try:
+ name = args['testsuite']
+ except KeyError:
+ return result_handler(consts.API_ERROR,
+ 'testsuite must be provided')
+
+ testsuite = os.path.join(consts.TESTSUITE_DIR, '{}.yaml'.format(name))
+
+ task_id = str(uuid.uuid4())
+
+ task_args = {
+ 'inputfile': [testsuite],
+ 'task_id': task_id,
+ 'suite': True
+ }
+ task_args.update(args.get('opts', {}))
+
+ param = Param(task_args)
+ task_thread = TaskThread(Task().start, param)
+ task_thread.start()
+
+ return result_handler(consts.API_SUCCESS, {'task_id': task_id})