5a4b555069e13d8943d77ebdc73bcc3dbe2030ec
[releng.git] / utils / test / result_collection_api / opnfv_testapi / resources / pod_handlers.py
1 from opnfv_testapi.tornado_swagger_ui.tornado_swagger import swagger
2 from handlers import GenericApiHandler
3 from pod_models import Pod
4 from opnfv_testapi.common.constants import HTTP_FORBIDDEN
5
6
7 class GenericPodHandler(GenericApiHandler):
8     def __init__(self, application, request, **kwargs):
9         super(GenericPodHandler, self).__init__(application, request, **kwargs)
10         self.table = 'pods'
11         self.table_cls = Pod
12
13
14 class PodCLHandler(GenericPodHandler):
15     @swagger.operation(nickname='list-all')
16     def get(self):
17         """
18             @description: list all pods
19             @return 200: list all pods, empty list is no pod exist
20             @rtype: L{Pods}
21         """
22         self._list()
23
24     @swagger.operation(nickname='create')
25     def post(self):
26         """
27             @description: create a pod
28             @param body: pod to be created
29             @type body: L{PodCreateRequest}
30             @in body: body
31             @rtype: L{Pod}
32             @return 200: pod is created.
33             @raise 403: pod already exists
34             @raise 400: body or name not provided
35         """
36         def query(data):
37             return {'name': data.name}
38
39         def error(data):
40             message = '{} already exists as a pod'.format(data.name)
41             return HTTP_FORBIDDEN, message
42
43         miss_checks = ['name']
44         db_checks = [(self.table, False, query, error)]
45         self._create(miss_checks, db_checks)
46
47
48 class PodGURHandler(GenericPodHandler):
49     @swagger.operation(nickname='get-one')
50     def get(self, pod_name):
51         """
52             @description: get a single pod by pod_name
53             @rtype: L{Pod}
54             @return 200: pod exist
55             @raise 404: pod not exist
56         """
57         query = dict()
58         query['name'] = pod_name
59         self._get_one(query)
60
61     def delete(self, pod_name):
62         """ Remove a POD
63
64         # check for an existing pod to be deleted
65         mongo_dict = yield self.db.pods.find_one(
66             {'name': pod_name})
67         pod = TestProject.pod(mongo_dict)
68         if pod is None:
69             raise HTTPError(HTTP_NOT_FOUND,
70                             "{} could not be found as a pod to be deleted"
71                             .format(pod_name))
72
73         # just delete it, or maybe save it elsewhere in a future
74         res = yield self.db.projects.remove(
75             {'name': pod_name})
76
77         self.finish_request(answer)
78         """
79         pass