def get_o2dms_api_base():
- return get_root_api_base() + "o2dms/v1"
+ return get_root_api_base() + "o2dms"
def get_redis_host_and_port():
# resource_pools: ResourcePoolRepository
# resources: ResourceRepository
# deployment_managers: DeploymentManagerRepository
+ # nfdeployment_descs: object
def __enter__(self):
return self
def _get(self, nfdeployment_desc_id) -> dms.NfDeploymentDesc:
return self.session.query(dms.NfDeploymentDesc).filter_by(
- nfDeploymentDescId=nfdeployment_desc_id).first()
+ id=nfdeployment_desc_id).first()
def _list(self) -> List[dms.NfDeploymentDesc]:
return self.session.query()
- def _update(self, nfdeployment_desc: dms.NfDeploymentDesc):
- self.session.add(nfdeployment_desc)
+ def _update(self, nfdeployment_desc_id, **kwargs):
+ self.session.query(dms.NfDeploymentDesc).filter_by(
+ id=nfdeployment_desc_id).update(**kwargs)
+
+ def _delete(self, nfdeployment_desc_id):
+ self.session.query(dms.NfDeploymentDesc).filter_by(
+ id=nfdeployment_desc_id
+ ).delete()
Column("deploymentManagerId", String(255)),\r
Column("name", String(255)),\r
Column("description", String(255)),\r
- Column("supportedLocations", String(255)),\r
- Column("capabilities", String(255)),\r
- Column("capacity", String(255)),\r
+ Column("inputParams", String(255)),\r
+ Column("outputParams", String(255)),\r
# Column("extensions", String(1024))\r
)\r
\r
super().__init__()\r
self.id = id\r
self.version_number = 0\r
- self.dmsId = dmsId\r
+ self.deploymentManagerId = dmsId\r
self.name = name\r
self.description = description\r
self.inputParams = inputParams\r
self.outputParams = outputParams\r
- self.extensions = []\r
+ # self.extensions = []\r
def list(self) -> List[dms.NfDeploymentDesc]:\r
return self._list()\r
\r
- def update(self, nfdeployment_descriptor: dms.NfDeploymentDesc):\r
- self._update(nfdeployment_descriptor)\r
+ def update(self, id, **kwargs):\r
+ self._update(id, **kwargs)\r
+\r
+ def delete(self, nfdeployment_descriptor_id):\r
+ self._delete(nfdeployment_descriptor_id)\r
\r
@abc.abstractmethod\r
def _add(self, nfdeployment_descriptor: dms.NfDeploymentDesc):\r
@abc.abstractmethod\r
def _update(self, nfdeployment_descriptor: dms.NfDeploymentDesc):\r
raise NotImplementedError\r
+\r
+ @abc.abstractmethod\r
+ def _delete(self, nfdeployment_descriptor_id):\r
+ raise NotImplementedError\r
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
# See the License for the specific language governing permissions and\r
# limitations under the License.\r
+\r
+from flask_restx import Namespace\r
+\r
+api_dms_lcm_v1 = Namespace(\r
+ "O2DMS_LCM", description='DMS LCM related operations.')\r
# See the License for the specific language governing permissions and
# limitations under the License.
-from flask_restx import Namespace, fields
+from flask_restx import fields
+from o2dms.views import api_dms_lcm_v1
class DmsDTO:
-
- api = Namespace("O2DMS",
- description='DMS related operations.')
-
- dms_get = api.model(
- "Get DMS information",
+ dms_get = api_dms_lcm_v1.model(
+ "DmsGetDto",
{
'deploymentManagerId': fields.String(
required=True,
class DmsLcmNfDeploymentDescriptorDTO:
-
- api = Namespace("O2DMS_LCM_NfDeploymentDescriptor",
- description='DMS LCM NfDeploymentDescritpor operations.')
-
- dmslcm_NfDeploymentDescriptor_get = api.model(
- "Get NfDeploymentDescriptor information",
+ dmslcm_NfDeploymentDescriptor_get = api_dms_lcm_v1.model(
+ "NfDeploymentDescriptorGetDto",
{
'id': fields.String(
required=True,
'outputParams': fields.String
}
)
+
+ NfDeploymentDescriptor_create = api_dms_lcm_v1.model(
+ "NfDeploymentDescriptorCreateDto",
+ {
+ 'name': fields.String,
+ 'description': fields.String,
+ 'inputParams': fields.String,
+ 'outputParams': fields.String
+ }
+ )
+
+ NfDeploymentDescriptor_create_post_resp = api_dms_lcm_v1.model(
+ "NfDeploymentDescriptorCreateRespDto",
+ {
+ 'id': fields.String(
+ required=True, description='NfDeploymentDescriptor ID'),
+ }
+ )
+
+ NfDeploymentDescriptor_update = api_dms_lcm_v1.model(
+ "NfDeploymentDescriptorCreateDto",
+ {
+ 'name': fields.String,
+ 'description': fields.String,
+ 'inputParams': fields.String,
+ 'outputParams': fields.String
+ }
+ )
# limitations under the License.\r
\r
from sqlalchemy import select\r
-\r
+import uuid\r
from o2common.service import unit_of_work\r
from o2ims.adapter.orm import deploymentmanager\r
from o2dms.adapter.orm import nfDeploymentDesc\r
+from o2dms.views.dms_dto import DmsLcmNfDeploymentDescriptorDTO\r
+from o2dms.domain.dms import NfDeploymentDesc\r
\r
\r
def deployment_managers(uow: unit_of_work.AbstractUnitOfWork):\r
\r
\r
def lcm_nfdeploymentdesc_one(nfdeploymentdescriptorid: str,\r
- deploymentManagerID: str,\r
uow: unit_of_work.AbstractUnitOfWork):\r
with uow:\r
- res = uow.session.execute(select(deploymentmanager).where(\r
- nfDeploymentDesc.c.deploymentManagerId == deploymentManagerID,\r
+ res = uow.session.execute(select(nfDeploymentDesc).where(\r
nfDeploymentDesc.c.id == nfdeploymentdescriptorid))\r
first = res.first()\r
return None if first is None else dict(first)\r
\r
\r
-# def lcm_nfdeploymentdesc_create(nfdeploymentdescriptorid: str,\r
-# uow: unit_of_work.AbstractUnitOfWork):\r
-# with uow:\r
-# res = uow.session.execute(select(deploymentmanager).where(\r
-# deploymentmanager.c.id == nfdeploymentdescriptorid))\r
-# first = res.first()\r
-# return None if first is None else dict(first)\r
+def lcm_nfdeploymentdesc_create(\r
+ deploymentManagerId: str,\r
+ input: DmsLcmNfDeploymentDescriptorDTO.\r
+ NfDeploymentDescriptor_create,\r
+ uow: unit_of_work.AbstractUnitOfWork):\r
+\r
+ id = str(uuid.uuid4())\r
+ entity = NfDeploymentDesc(\r
+ id, input['name'], deploymentManagerId, input['description'],\r
+ input['inputParams'], input['outputParams'])\r
+ with uow:\r
+ uow.nfdeployment_descs.add(entity)\r
+ uow.commit()\r
+ return id\r
+\r
\r
+def lcm_nfdeploymentdesc_update(\r
+ nfdeploymentdescriptorid: str,\r
+ input: DmsLcmNfDeploymentDescriptorDTO.NfDeploymentDescriptor_update,\r
+ uow: unit_of_work.AbstractUnitOfWork):\r
\r
-# def lcm_nfdeploymentdesc_delete(nfdeploymentdescriptorid: str,\r
-# uow: unit_of_work.AbstractUnitOfWork):\r
-# with uow:\r
-# res = uow.session.execute(select(deploymentmanager).where(\r
-# deploymentmanager.c.id == nfdeploymentdescriptorid))\r
-# first = res.first()\r
-# return None if first is None else dict(first)\r
+ with uow:\r
+ entity = uow.nfdeployment_descs.get(nfdeploymentdescriptorid)\r
+ entity.name = input['name']\r
+ entity.description = input['description']\r
+ entity.inputParams = input['inputParams']\r
+ entity.outputParams = input['outputParams']\r
+ uow.commit()\r
+ return True\r
+\r
+\r
+def lcm_nfdeploymentdesc_delete(\r
+ nfdeploymentdescriptorid: str, uow: unit_of_work.AbstractUnitOfWork):\r
+\r
+ with uow:\r
+ uow.nfdeployment_descs.delete(nfdeploymentdescriptorid)\r
+ uow.commit()\r
+ return True\r
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
class OcloudDTO:
ocloud = api.model(
- "OcloudList",
+ "OcloudDto",
{
'oCloudId': fields.String(required=True),
'globalCloudId': fields.String,
class ResourceTypeDTO:
resource_type_get = api.model(
- "ResourceTypeGet",
+ "ResourceTypeGetDto",
{
'resourceTypeId': fields.String(required=True,
description='Resource type ID'),
class ResourcePoolDTO:
resource_pool_get = api.model(
- "ResourcePoolGet",
+ "ResourcePoolGetDto",
{
'resourcePoolId': fields.String(required=True,
description='Resource pool ID'),
class ResourceDTO:
resource_list = api.model(
- "ResourceList",
+ "ResourceListDto",
{
'resourceId': fields.String(required=True,
description='Resource ID'),
)
resource_get = api.model(
- "ResourceGet",
+ "ResourceGetDto",
{
'resourceId': fields.String(required=True,
description='Resource ID'),
class DeploymentManagerDTO:
deployment_manager_get = api.model(
- "DeploymentManagerGet",
+ "DeploymentManagerGetDto",
{
'deploymentManagerId': fields.String(
required=True,
class SubscriptionDTO:
subscription_get = api.model(
- "SubscriptionGet",
+ "SubscriptionGetDto",
{
'subscriptionId': fields.String(required=True,
description='Subscription ID'),
)
subscription = api.model(
- "SubscriptionCreate",
+ "SubscriptionCreateDto",
{
'callback': fields.String(
required=True, description='Subscription callback address'),
)
subscription_post_resp = api.model(
- "SubscriptionCreatedResp",
+ "SubscriptionCreatedRespDto",
{
'subscriptionId': fields.String(required=True,
description='Subscription ID'),