3 from datetime import datetime
5 from api import ApiResource
6 from api.database.v2.handlers import V2TaskHandler
7 from api.database.v2.handlers import V2ProjectHandler
8 from api.database.v2.handlers import V2EnvironmentHandler
9 from yardstick.common.utils import result_handler
10 from yardstick.common import constants as consts
12 LOG = logging.getLogger(__name__)
13 LOG.setLevel(logging.DEBUG)
16 class V2Tasks(ApiResource):
19 return self._dispatch_post()
21 def create_task(self, args):
25 return result_handler(consts.API_ERROR, 'name must be provided')
28 project_id = args['project_id']
30 return result_handler(consts.API_ERROR, 'project_id must be provided')
32 task_id = str(uuid.uuid4())
33 create_time = datetime.now()
34 task_handler = V2TaskHandler()
36 LOG.info('create task in database')
39 'project_id': project_id,
44 task_handler.insert(task_init_data)
46 LOG.info('create task in project')
47 project_handler = V2ProjectHandler()
48 project_handler.append_attr(project_id, {'tasks': task_id})
50 return result_handler(consts.API_SUCCESS, {'uuid': task_id})
53 class V2Task(ApiResource):
55 def put(self, task_id):
60 return result_handler(consts.API_ERROR, 'invalid task id')
62 task_handler = V2TaskHandler()
64 task_handler.get_by_uuid(task_id)
66 return result_handler(consts.API_ERROR, 'no such task id')
68 return self._dispatch_post(task_id=task_id)
70 def add_environment(self, args):
72 task_id = args['task_id']
74 environment_id = args['environment_id']
76 return result_handler(consts.API_ERROR, 'environment_id must be provided')
79 uuid.UUID(environment_id)
81 return result_handler(consts.API_ERROR, 'invalid environment id')
83 environment_handler = V2EnvironmentHandler()
85 environment_handler.get_by_uuid(environment_id)
87 return result_handler(consts.API_ERROR, 'no such environment id')
89 LOG.info('update environment_id in task')
90 task_handler = V2TaskHandler()
91 task_handler.update_attr(task_id, {'environment_id': environment_id})
93 return result_handler(consts.API_SUCCESS, {'uuid': task_id})