1 ##############################################################################
2 # Copyright (c) 2017 Huawei Technologies Co.,Ltd.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
12 from datetime import datetime
14 from api import ApiResource
15 from api.database.v2.handlers import V2ProjectHandler
16 from api.database.v2.handlers import V2TaskHandler
17 from yardstick.common.utils import result_handler
18 from yardstick.common.utils import change_obj_to_dict
19 from yardstick.common import constants as consts
21 LOG = logging.getLogger(__name__)
22 LOG.setLevel(logging.DEBUG)
25 class V2Projects(ApiResource):
28 project_handler = V2ProjectHandler()
29 projects = [change_obj_to_dict(p) for p in project_handler.list_all()]
33 p['tasks'] = tasks.split(',') if tasks else []
35 return result_handler(consts.API_SUCCESS, {'projects': projects})
38 return self._dispatch_post()
40 def create_project(self, args):
44 return result_handler(consts.API_ERROR, 'name must be provided')
46 project_id = str(uuid.uuid4())
47 create_time = datetime.now()
48 project_handler = V2ProjectHandler()
55 project_handler.insert(project_init_data)
57 return result_handler(consts.API_SUCCESS, {'uuid': project_id})
60 class V2Project(ApiResource):
62 def get(self, project_id):
66 return result_handler(consts.API_ERROR, 'invalid project id')
68 project_handler = V2ProjectHandler()
70 project = project_handler.get_by_uuid(project_id)
72 return result_handler(consts.API_ERROR, 'no such project id')
74 project_info = change_obj_to_dict(project)
75 tasks = project_info['tasks']
76 project_info['tasks'] = tasks.split(',') if tasks else []
78 return result_handler(consts.API_SUCCESS, {'project': project_info})
80 def delete(self, project_id):
84 return result_handler(consts.API_ERROR, 'invalid project id')
86 project_handler = V2ProjectHandler()
88 project = project_handler.get_by_uuid(project_id)
90 return result_handler(consts.API_ERROR, 'no such project id')
93 LOG.info('delete related task')
94 task_handler = V2TaskHandler()
95 for task_id in project.tasks.split(','):
96 LOG.debug('delete task: %s', task_id)
98 task_handler.delete_by_uuid(task_id)
100 LOG.exception('no such task id: %s', task_id)
102 LOG.info('delete project in database')
103 project_handler.delete_by_uuid(project_id)
105 return result_handler(consts.API_SUCCESS, {'project': project_id})