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 DmsLcmNfDeploymentDTO
19 from o2dms.api import dms_lcm_nfdeployment 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/"
36 .param('deploymentManagerID', 'ID of the deployment manager')
37 @api_dms_lcm_v1.response(404, 'DMS LCM not found')
38 class DmsLcmNfDeploymentListRouter(Resource):
40 model = DmsLcmNfDeploymentDTO.NfDeployment_get
42 createdto = DmsLcmNfDeploymentDTO.NfDeployment_create
43 post_resp = DmsLcmNfDeploymentDTO.\
44 NfDeployment_create_post_resp
46 @api_dms_lcm_v1.doc('Get a list of NfDeployment')
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_nfdeployment_list(
51 deploymentManagerID, bus.uow)
53 @api_dms_lcm_v1.doc('Create a NfDeployment')
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:{}".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_nfdeployment_create(
64 deploymentManagerID, data, bus)
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 "NfDeployment/<nfDeploymentId>")
75 .param('deploymentManagerID', 'ID of the deployment manager')
76 @api_dms_lcm_v1.param('nfDeploymentId',
77 'ID of the NfDeployment')
78 @api_dms_lcm_v1.response(404, 'DMS LCM not found')
79 class DmsLcmNfDeploymentGetRouter(Resource):
81 model = DmsLcmNfDeploymentDTO.NfDeployment_get
82 updatedto = DmsLcmNfDeploymentDTO.\
85 @api_dms_lcm_v1.doc('Get a NfDeployment')
86 @api_dms_lcm_v1.marshal_with(model)
87 def get(self, nfDeploymentId, deploymentManagerID):
88 bus = MessageBus.get_instance()
89 result = dms_lcm_view\
90 .lcm_nfdeployment_one(nfDeploymentId, bus.uow)
91 if result is not None:
94 404, "NfDeployment {} doesn't exist".format(
97 @api_dms_lcm_v1.doc('Update a NfDeployment')
98 @api_dms_lcm_v1.expect(updatedto)
99 def put(self, nfDeploymentId, deploymentManagerID):
101 logger.debug("update deployment:{},{}".format(
103 api_dms_lcm_v1.payload
105 bus = MessageBus.get_instance()
106 data = api_dms_lcm_v1.payload
107 dms_lcm_view.lcm_nfdeployment_update(
108 nfDeploymentId, data, bus)
110 except Exception as ex:
111 logger.warning("{}".format(str(ex)))
112 api_dms_lcm_v1.abort(400, str(ex))
114 @api_dms_lcm_v1.doc('Delete NfDeployment by ID')
115 @api_dms_lcm_v1.response(204, 'NfDeployment deleted')
116 def delete(self, nfDeploymentId, deploymentManagerID):
117 bus = MessageBus.get_instance()
118 result = dms_lcm_view\
119 .lcm_nfdeployment_uninstall(nfDeploymentId, bus)
120 if result is not None:
122 api_dms_lcm_v1.abort(
123 404, "NfDeployment {} doesn't exist".format(