5 from oslo_serialization import jsonutils
7 from yardstick.common import constants as consts
9 LOG = logging.getLogger(__name__)
10 LOG.setLevel(logging.DEBUG)
13 class TaskThread(threading.Thread):
15 def __init__(self, target, args, handler):
16 super(TaskThread, self).__init__(target=target, args=args)
19 self.handler = handler
22 if self.handler.__class__.__name__.lower().startswith('v2'):
23 self.handler.update_attr(self.args.task_id, {'status': consts.TASK_NOT_DONE})
25 update_data = {'task_id': self.args.task_id, 'status': consts.TASK_NOT_DONE}
26 self.handler.insert(update_data)
28 LOG.info('Starting run task')
30 data = self.target(self.args)
31 except Exception as e:
32 LOG.exception('Task Failed')
33 update_data = {'status': consts.TASK_FAILED, 'error': str(e)}
34 self.handler.update_attr(self.args.task_id, update_data)
36 LOG.info('Task Finished')
37 LOG.debug('Result: %s', data)
39 if self.handler.__class__.__name__.lower().startswith('v2'):
40 new_data = {'status': consts.TASK_DONE, 'result': jsonutils.dumps(data['result'])}
41 self.handler.update_attr(self.args.task_id, new_data)
42 os.remove(self.args.inputfile[0])
44 data['result'] = jsonutils.dumps(data.get('result', {}))
45 self.handler.update_attr(self.args.task_id, data)