diff options
author | Rex Lee <limingjiang@huawei.com> | 2017-06-29 12:07:27 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-06-29 12:07:27 +0000 |
commit | 9ba594fa3f34d551d34abd7582281ce081924c67 (patch) | |
tree | 43e32e6d2a5ca9c09b47ef698f24abe784d8f6cc /api/utils/thread.py | |
parent | 8996240be14d6f7979a6ae02dd474b03d50e79d9 (diff) | |
parent | da62008a0a98cb8793ea42827a7da5e149edd144 (diff) |
Merge "Call core code directly in the API of run test case"
Diffstat (limited to 'api/utils/thread.py')
-rw-r--r-- | api/utils/thread.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/api/utils/thread.py b/api/utils/thread.py new file mode 100644 index 000000000..2106548f5 --- /dev/null +++ b/api/utils/thread.py @@ -0,0 +1,37 @@ +import threading +import logging + +from oslo_serialization import jsonutils + +from api.database.v1.handlers import TasksHandler +from yardstick.common import constants as consts + +logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) + + +class TaskThread(threading.Thread): + + def __init__(self, target, args): + super(TaskThread, self).__init__(target=target, args=args) + self.target = target + self.args = args + + def run(self): + task_handler = TasksHandler() + data = {'task_id': self.args.task_id, 'status': consts.TASK_NOT_DONE} + task_handler.insert(data) + + logger.info('Starting run task') + try: + data = self.target(self.args) + except Exception as e: + logger.exception('Task Failed') + update_data = {'status': consts.TASK_FAILED, 'error': str(e)} + task_handler.update_attr(self.args.task_id, update_data) + else: + logger.info('Task Finished') + logger.debug('Result: %s', data) + + data['result'] = jsonutils.dumps(data.get('result', {})) + task_handler.update_attr(self.args.task_id, data) |