3 from datetime import datetime
5 from oslo_serialization import jsonutils
7 from api import ApiResource
8 from api.database.v2.handlers import V2TaskHandler
9 from api.database.v2.handlers import V2ProjectHandler
10 from api.database.v2.handlers import V2EnvironmentHandler
11 from yardstick.common.utils import result_handler
12 from yardstick.common.utils import change_obj_to_dict
13 from yardstick.common import constants as consts
15 LOG = logging.getLogger(__name__)
16 LOG.setLevel(logging.DEBUG)
19 class V2Tasks(ApiResource):
22 return self._dispatch_post()
24 def create_task(self, args):
28 return result_handler(consts.API_ERROR, 'name must be provided')
31 project_id = args['project_id']
33 return result_handler(consts.API_ERROR, 'project_id must be provided')
35 task_id = str(uuid.uuid4())
36 create_time = datetime.now()
37 task_handler = V2TaskHandler()
39 LOG.info('create task in database')
42 'project_id': project_id,
47 task_handler.insert(task_init_data)
49 LOG.info('create task in project')
50 project_handler = V2ProjectHandler()
51 project_handler.append_attr(project_id, {'tasks': task_id})
53 return result_handler(consts.API_SUCCESS, {'uuid': task_id})
56 class V2Task(ApiResource):
58 def get(self, task_id):
62 return result_handler(consts.API_ERROR, 'invalid task id')
64 task_handler = V2TaskHandler()
66 task = task_handler.get_by_uuid(task_id)
68 return result_handler(consts.API_ERROR, 'no such task id')
70 task_info = change_obj_to_dict(task)
71 result = task_info['result']
72 task_info['result'] = jsonutils.loads(result) if result else None
74 return result_handler(consts.API_SUCCESS, {'task': task_info})
76 def put(self, task_id):
81 return result_handler(consts.API_ERROR, 'invalid task id')
83 task_handler = V2TaskHandler()
85 task_handler.get_by_uuid(task_id)
87 return result_handler(consts.API_ERROR, 'no such task id')
89 return self._dispatch_post(task_id=task_id)
91 def add_environment(self, args):
93 task_id = args['task_id']
95 environment_id = args['environment_id']
97 return result_handler(consts.API_ERROR, 'environment_id must be provided')
100 uuid.UUID(environment_id)
102 return result_handler(consts.API_ERROR, 'invalid environment id')
104 environment_handler = V2EnvironmentHandler()
106 environment_handler.get_by_uuid(environment_id)
108 return result_handler(consts.API_ERROR, 'no such environment id')
110 LOG.info('update environment_id in task')
111 task_handler = V2TaskHandler()
112 task_handler.update_attr(task_id, {'environment_id': environment_id})
114 return result_handler(consts.API_SUCCESS, {'uuid': task_id})