Refactor o2dms api swagger
[pti/o2.git] / o2dms / views / dms_route.py
index 895bfcb..e9fd2e2 100644 (file)
@@ -17,80 +17,106 @@ from flask_restx import Resource
 
 from o2common.config import config
 from o2dms.views.dms_dto import DmsDTO, DmsLcmNfDeploymentDescriptorDTO
-from o2dms.views import dms_lcm_view
+from o2dms.views import dms_lcm_view, api_dms_lcm_v1
 
 apibase = config.get_o2dms_api_base()
 
 
 # ----------  DeploymentManagers ---------- #
-api_dms = DmsDTO.api
-
-
-@api_dms.route("/<deploymentManagerID>")
-@api_dms.param('deploymentManagerID', 'ID of the deployment manager')
-@api_dms.response(404, 'Deployment manager not found')
+@api_dms_lcm_v1.route("/<deploymentManagerID>")
+@api_dms_lcm_v1.param('deploymentManagerID', 'ID of the deployment manager')
+@api_dms_lcm_v1.response(404, 'Deployment manager not found')
 class DmsGetRouter(Resource):
 
     model = DmsDTO.dms_get
 
-    @api_dms.doc('Get deployment manager')
-    @api_dms.marshal_with(model)
+    @api_dms_lcm_v1.doc('Get deployment manager')
+    @api_dms_lcm_v1.marshal_with(model)
     def get(self, deploymentManagerID):
         result = dms_lcm_view.deployment_manager_one(
-            deploymentManagerID, uow)
+            deploymentManagerID, bus.uow)
         if result is not None:
             return result
-        api_dms.abort(404, "Deployment manager {} doesn't exist".format(
+        api_dms_lcm_v1.abort(404, "Deployment manager {} doesn't exist".format(
             deploymentManagerID))
 
 
 # LCM services #
-api_lcm_nfdeploymentDesc = DmsLcmNfDeploymentDescriptorDTO.api
-
-
-@api_lcm_nfdeploymentDesc\
-    .route("/<deploymentManagerID>/O2dms_DeploymentLifecycle")
-@api_lcm_nfdeploymentDesc\
+@api_dms_lcm_v1\
+    .route("/<deploymentManagerID>/O2dms_DeploymentLifecycle/"
+           "NfDeploymentDescriptor")
+@api_dms_lcm_v1\
     .param('deploymentManagerID', 'ID of the deployment manager')
-@api_lcm_nfdeploymentDesc.response(404, 'DMS LCM not found')
+@api_dms_lcm_v1.response(404, 'DMS LCM not found')
 class DmsLcmNfDeploymentDescListRouter(Resource):
 
     model = DmsLcmNfDeploymentDescriptorDTO.dmslcm_NfDeploymentDescriptor_get
 
-    @api_lcm_nfdeploymentDesc.doc('Get a list of NfDeploymentDescriptor')
-    @api_lcm_nfdeploymentDesc.marshal_list_with(model)
+    createdto = DmsLcmNfDeploymentDescriptorDTO.NfDeploymentDescriptor_create
+    post_resp = DmsLcmNfDeploymentDescriptorDTO.\
+        NfDeploymentDescriptor_create_post_resp
+
+    @api_dms_lcm_v1.doc('Get a list of NfDeploymentDescriptor')
+    @api_dms_lcm_v1.marshal_list_with(model)
     def get(self, deploymentManagerID):
-        return dms_lcm_view.lcm_nfdeploymentdesc_list(deploymentManagerID, uow)
+        return dms_lcm_view.lcm_nfdeploymentdesc_list(
+            deploymentManagerID, bus.uow)
+
+    @api_dms_lcm_v1.doc('Create a NfDeploymentDescriptor')
+    @api_dms_lcm_v1.expect(createdto)
+    @api_dms_lcm_v1.marshal_with(post_resp, code=201)
+    def post(self, deploymentManagerID):
+        data = api_dms_lcm_v1.payload
+        id = dms_lcm_view.lcm_nfdeploymentdesc_create(
+            deploymentManagerID, data, bus.uow)
+        return {"id": id}, 201
 
 
-@api_lcm_nfdeploymentDesc\
+@api_dms_lcm_v1\
     .route("/<deploymentManagerID>/O2dms_DeploymentLifecycle/"
-           "<nfDeploymentDescriptorId>")
-@api_lcm_nfdeploymentDesc\
+           "NfDeploymentDescriptor/<nfDeploymentDescriptorId>")
+@api_dms_lcm_v1\
     .param('deploymentManagerID', 'ID of the deployment manager')
-@api_lcm_nfdeploymentDesc.param('nfDeploymentDescriptorId',
-                                'ID of the NfDeploymentDescriptor')
-@api_lcm_nfdeploymentDesc.response(404, 'DMS LCM not found')
+@api_dms_lcm_v1.param('nfDeploymentDescriptorId',
+                      'ID of the NfDeploymentDescriptor')
+@api_dms_lcm_v1.response(404, 'DMS LCM not found')
 class DmsLcmNfDeploymentDescGetRouter(Resource):
 
     model = DmsLcmNfDeploymentDescriptorDTO.dmslcm_NfDeploymentDescriptor_get
+    updatedto = DmsLcmNfDeploymentDescriptorDTO.\
+        NfDeploymentDescriptor_update
 
-    @api_lcm_nfdeploymentDesc.doc('Get a NfDeploymentDescriptor')
-    @api_lcm_nfdeploymentDesc.marshal_with(model)
+    @api_dms_lcm_v1.doc('Get a NfDeploymentDescriptor')
+    @api_dms_lcm_v1.marshal_with(model)
     def get(self, nfDeploymentDescriptorId, deploymentManagerID):
         result = dms_lcm_view\
-            .lcm_nfdeploymentdesc_one(nfDeploymentDescriptorId,
-                                      deploymentManagerID, uow)
+            .lcm_nfdeploymentdesc_one(nfDeploymentDescriptorId, bus.uow)
         if result is not None:
             return result
-        api_dms.abort(404, "NfDeploymentDescriptor {} doesn't exist".format(
-            nfDeploymentDescriptorId))
-
-
-def configure_namespace(app, bus):
-    app.add_namespace(api_dms, path=apibase)
-    app.add_namespace(api_lcm_nfdeploymentDesc, path=apibase)
+        api_dms_lcm_v1.abort(
+            404, "NfDeploymentDescriptor {} doesn't exist".format(
+                nfDeploymentDescriptorId))
+
+    @api_dms_lcm_v1.doc('Update a NfDeploymentDescriptor')
+    @api_dms_lcm_v1.expect(updatedto)
+    def put(self, nfDeploymentDescriptorId, deploymentManagerID):
+        data = api_dms_lcm_v1.payload
+        dms_lcm_view.lcm_nfdeploymentdesc_update(
+            nfDeploymentDescriptorId, data, bus.uow)
+        return {}, 201
+
+    @api_dms_lcm_v1.doc('Delete NfDeploymentDescriptor by ID')
+    @api_dms_lcm_v1.response(204, 'NfDeploymentDescriptor deleted')
+    def delete(self, nfDeploymentDescriptorId, deploymentManagerID):
+        with bus.uow:
+            bus.uow.nfdeployment_descs.delete(nfDeploymentDescriptorId)
+            bus.uow.commit()
+        return '', 204
+
+
+def configure_namespace(app, bus_new):
+    app.add_namespace(api_dms_lcm_v1, path=apibase)
 
     # Set global uow
-    global uow
-    uow = bus.uow
+    global bus
+    bus = bus_new