1 # Copyright (C) 2021 Wind River Systems, Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # from flask import jsonify
16 from flask_restx import Resource
18 from o2dms.api.dms_dto import DmsLcmNfDeploymentDescriptorDTO
19 from o2dms.api import dms_lcm_nfdeploymentdesc as dms_lcm_view
20 from o2dms.api.dms_api_ns import api_dms_lcm_v1
22 from o2common.service.messagebus import MessageBus
23 from o2common.helper import o2logging
24 logger = o2logging.get_logger(__name__)
27 def configure_api_route():
33 .route("/<deploymentManagerID>/O2dms_DeploymentLifecycle/"
34 "NfDeploymentDescriptor")
36 .param('deploymentManagerID', 'ID of the deployment manager')
37 @api_dms_lcm_v1.response(404, 'DMS LCM not found')
38 class DmsLcmNfDeploymentDescListRouter(Resource):
40 model = DmsLcmNfDeploymentDescriptorDTO.NfDeploymentDescriptor_get
42 createdto = DmsLcmNfDeploymentDescriptorDTO.NfDeploymentDescriptor_create
43 post_resp = DmsLcmNfDeploymentDescriptorDTO.\
44 NfDeploymentDescriptor_create_post_resp
46 @api_dms_lcm_v1.doc('Get a list of NfDeploymentDescriptor')
47 @api_dms_lcm_v1.marshal_list_with(model)
48 def get(self, deploymentManagerID):
49 bus = MessageBus.get_instance()
50 return dms_lcm_view.lcm_nfdeploymentdesc_list(
51 deploymentManagerID, bus.uow)
53 @api_dms_lcm_v1.doc('Create a NfDeploymentDescriptor')
54 @api_dms_lcm_v1.expect(createdto)
55 @api_dms_lcm_v1.marshal_with(post_resp, code=201)
56 def post(self, deploymentManagerID):
58 logger.debug("create deployment desc:{}".format(
59 api_dms_lcm_v1.payload
61 bus = MessageBus.get_instance()
62 data = api_dms_lcm_v1.payload
63 id = dms_lcm_view.lcm_nfdeploymentdesc_create(
64 deploymentManagerID, data, bus.uow)
65 return {"id": id}, 201
66 except Exception as ex:
67 logger.warning("{}".format(str(ex)))
68 api_dms_lcm_v1.abort(400, str(ex))
72 .route("/<deploymentManagerID>/O2dms_DeploymentLifecycle/"
73 "NfDeploymentDescriptor/<nfDeploymentDescriptorId>")
75 .param('deploymentManagerID', 'ID of the deployment manager')
76 @api_dms_lcm_v1.param('nfDeploymentDescriptorId',
77 'ID of the NfDeploymentDescriptor')
78 @api_dms_lcm_v1.response(404, 'DMS LCM not found')
79 class DmsLcmNfDeploymentDescGetRouter(Resource):
81 model = DmsLcmNfDeploymentDescriptorDTO.NfDeploymentDescriptor_get
82 updatedto = DmsLcmNfDeploymentDescriptorDTO.\
83 NfDeploymentDescriptor_update
85 @api_dms_lcm_v1.doc('Get a NfDeploymentDescriptor')
86 @api_dms_lcm_v1.marshal_with(model)
87 def get(self, nfDeploymentDescriptorId, deploymentManagerID):
88 bus = MessageBus.get_instance()
89 result = dms_lcm_view\
90 .lcm_nfdeploymentdesc_one(nfDeploymentDescriptorId, bus.uow)
91 if result is not None:
94 404, "NfDeploymentDescriptor {} doesn't exist".format(
95 nfDeploymentDescriptorId))
97 @api_dms_lcm_v1.doc('Update a NfDeploymentDescriptor')
98 @api_dms_lcm_v1.expect(updatedto)
99 def put(self, nfDeploymentDescriptorId, deploymentManagerID):
100 logger.debug("update deployment desc:{}".format(
101 api_dms_lcm_v1.payload
103 bus = MessageBus.get_instance()
104 data = api_dms_lcm_v1.payload
105 dms_lcm_view.lcm_nfdeploymentdesc_update(
106 nfDeploymentDescriptorId, data, bus.uow)
109 @api_dms_lcm_v1.doc('Delete NfDeploymentDescriptor by ID')
110 @api_dms_lcm_v1.response(204, 'NfDeploymentDescriptor deleted')
111 def delete(self, nfDeploymentDescriptorId, deploymentManagerID):
112 bus = MessageBus.get_instance()
114 bus.uow.nfdeployment_descs.delete(nfDeploymentDescriptorId)