1 ##############################################################################
2 # Copyright (c) 2015 Orange
3 # guyrodrigue.koffi@orange.com / koffirodrigue@gmail.com
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 ##############################################################################
11 from opnfv_testapi.tornado_swagger import swagger
15 class GenericProjectHandler(handlers.GenericApiHandler):
16 def __init__(self, application, request, **kwargs):
17 super(GenericProjectHandler, self).__init__(application,
20 self.table = 'projects'
21 self.table_cls = project_models.Project
24 class ProjectCLHandler(GenericProjectHandler):
25 @swagger.operation(nickname="listAllProjects")
28 @description: list all projects
29 @return 200: return all projects, empty list is no project exist
34 @swagger.operation(nickname="createProject")
37 @description: create a project
38 @param body: project to be created
39 @type body: L{ProjectCreateRequest}
41 @rtype: L{CreateResponse}
42 @return 200: project is created.
43 @raise 403: project already exists
44 @raise 400: body or name not provided
47 return {'name': self.json_args.get('name')}
48 miss_fields = ['name']
49 self._create(miss_fields=miss_fields, query=query)
52 class ProjectGURHandler(GenericProjectHandler):
53 @swagger.operation(nickname='getProjectByName')
54 def get(self, project_name):
56 @description: get a single project by project_name
58 @return 200: project exist
59 @raise 404: project not exist
61 self._get_one(query={'name': project_name})
63 @swagger.operation(nickname="updateProjectByName")
64 def put(self, project_name):
66 @description: update a single project by project_name
67 @param body: project to be updated
68 @type body: L{ProjectUpdateRequest}
71 @return 200: update success
72 @raise 404: project not exist
73 @raise 403: new project name already exist or nothing to update
75 query = {'name': project_name}
77 self._update(query=query, db_keys=db_keys)
79 @swagger.operation(nickname='deleteProjectByName')
80 def delete(self, project_name):
82 @description: delete a project by project_name
83 @return 200: delete success
84 @raise 404: project not exist
86 self._delete(query={'name': project_name})