X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_nbi%2Fosm_vnfm%2Fvnf_instance_actions.py;fp=osm_nbi%2Fosm_vnfm%2Fvnf_instance_actions.py;h=0000000000000000000000000000000000000000;hb=b1186b0b9ea287010c9f37ba6062512ea93f0ed4;hp=93c91c5569a041ae0c529b9a52a84eedaa921d41;hpb=59e9d88971c2f513c85ca7095a1e8493f9ebb513;p=osm%2FNBI.git diff --git a/osm_nbi/osm_vnfm/vnf_instance_actions.py b/osm_nbi/osm_vnfm/vnf_instance_actions.py deleted file mode 100644 index 93c91c5..0000000 --- a/osm_nbi/osm_vnfm/vnf_instance_actions.py +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright 2021 K Sai Kiran (Tata Elxsi) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -__author__ = "K Sai Kiran , Selvi Jayaraman " -__date__ = "$12-June-2021 8:30:59$" - -from osm_nbi.instance_topics import NsrTopic, NsLcmOpTopic, VnfrTopic -from .base_methods import BaseMethod - - -class VnfLcmOp2NsLcmOp: - - def __init__(self, db, fs, msg, auth): - """ - Constructor of Vnf lcm op to Ns lcm op - """ - self.new_vnf_lcmop = NewVnfLcmOp(db, fs, msg, auth) - self.list_vnf_lcmop = ListVnfLcmOp(db, fs, msg, auth) - self.show_vnf_lcmop = ShowVnfLcmOp(db, fs, msg, auth) - - def new(self, rollback, session, indata=None, kwargs=None, headers=None): - """ - Creates a new entry into database. - :param rollback: list to append created items at database in case a rollback may to be done - :param session: contains "username", "admin", "force", "public", "project_id", "set_project" - :param indata: data to be inserted - :param kwargs: used to override the indata descriptor - :param headers: http request headers - :return: _id, op_id: - _id: identity of the inserted data. - op_id: operation id if this is asynchronous, None otherwise - """ - return self.new_vnf_lcmop.action(rollback, session, indata, kwargs, headers) - - def list(self, session, filter_q=None, api_req=False): - """ - Get a list of the Vnf Lcm Operation that matches a filter - :param session: contains the used login username and working project - :param filter_q: filter of data to be applied - :param api_req: True if this call is serving an external API request. False if serving internal request. - :return: The list, it can be empty if no one match the filter. - """ - return self.list_vnf_lcmop.action(session, filter_q, api_req) - - def show(self, session, _id, api_req=False): - """ - Get complete information on an Vnf Lcm Operation - :param session: contains "username", "admin", "force", "public", "project_id", "set_project" - :param _id: server internal id - :param api_req: True if this call is serving an external API request. False if serving internal request. - :return: dictionary, raise exception if not found. - """ - return self.show_vnf_lcmop.action(session, _id, api_req) - - -class NewVnfLcmOp(BaseMethod): - - def __init__(self, db, fs, msg, auth): - """ - Constructor of new Vnf Lcm Op - """ - super().__init__() - self.msg = msg - self.nslcmoptopic = NsLcmOpTopic(db, fs, msg, auth) - self.nsrtopic = NsrTopic(db, fs, msg, auth) - self.vnfrtopic = VnfrTopic(db, fs, msg, auth) - - def __get_nsdid(self, session, vnf_instance_id): - """ - Returns a nsd id from vnf instance id. - :param session: contains the used login username and working project - :param vnf_instance_id: id of vnf instance - :return: id of nsd id - """ - nsr = self.nsrtopic.show(session, vnf_instance_id) - return nsr['nsd']['_id'] - - def __get_formatted_indata(self, session, indata): - """ - Returns formatted data for new vnf lcm op - :param session: contains the used login username and working project - :param indata: contains information for new lcm operation. - :return: formatted indata for new lcm op. - """ - formatted_indata = {} - if indata["lcmOperationType"] == "instantiate": - formatted_indata = { - "nsName": indata["vnfName"], - "nsDescription": indata["vnfDescription"], - "nsdId": self.__get_nsdid(session, indata["vnfInstanceId"]), - "vimAccountId": indata["vimAccountId"], - "nsr_id": indata["vnfInstanceId"], - "lcmOperationType": indata["lcmOperationType"], - "nsInstanceId": indata["vnfInstanceId"] - } - elif indata["lcmOperationType"] == "terminate": - formatted_indata = { - "lcmOperationType": indata["lcmOperationType"], - "nsInstanceId": indata["vnfInstanceId"] - } - elif indata["lcmOperationType"] == "scale": - formatted_indata = { - "lcmOperationType": indata["lcmOperationType"], - "nsInstanceId": indata["vnfInstanceId"], - "scaleType": "SCALE_VNF", - "scaleVnfData": { - "scaleVnfType": indata["type"], - "scaleByStepData": { - "scaling-group-descriptor": indata["aspectId"], - "member-vnf-index": indata["additionalParams"]["member-vnf-index"] - } - } - } - elif indata["lcmOperationType"] == "action": - formatted_indata = { - "lcmOperationType": indata["lcmOperationType"], - "nsInstanceId": indata["vnfInstanceId"], - "member_vnf_index": indata["member_vnf_index"], - "primitive": indata["primitive"], - "primitive_params": indata["primitive_params"] - } - return formatted_indata - - def action(self, rollback, session, indata=None, kwargs=None, headers=None): - """ - Creates an new lcm operation. - :param rollback: list to append the created items at database in case a rollback must be done - :param session: contains "username", "admin", "force", "public", "project_id", "set_project" - :param indata: params to be used for the nsr - :param kwargs: used to override the indata - :param headers: http request headers - :return: id of new lcm operation. - """ - vnfInstanceId = indata["vnfInstanceId"] - lcm_operation = indata["lcmOperationType"] - vnfr = self.vnfrtopic.show(session, vnfInstanceId) - indata["vnfInstanceId"] = vnfr.get("nsr-id-ref") - indata = self.__get_formatted_indata(session, indata) - op_id, _ = self.nslcmoptopic.new(rollback, session, indata, kwargs, headers) - return op_id, _ - - -class ListVnfLcmOp(BaseMethod): - - def __init__(self, db, fs, msg, auth): - """ - Constructor call for listing vnf lcm operations - """ - super().__init__() - self.nslcmoptopic = NsLcmOpTopic(db, fs, msg, auth) - self.nsrtopic = NsrTopic(db, fs, msg, auth) - - def action(self, session, filter_q=None, api_req=False): - """ - To get list of vnf lcm operations that matches a filter - :param session: contains the used login username and working project - :param filter_q: filter of data to be applied - :param api_req: True if this call is serving an external API request. False if serving internal request. - :return: The list, it can be empty if no one match the filter. - """ - list = [] - records = self.nslcmoptopic.list(session, filter_q, api_req) - for record in records: - ns_id = record.get("nsInstanceId") - nsr = self.nsrtopic.show(session, ns_id) - vnfInstance_id = nsr['constituent-vnfr-ref'][0] - outdata = sol003_projection(record, vnfInstance_id) - list.append(outdata) - return list - - -class ShowVnfLcmOp(BaseMethod): - - def __init__(self, db, fs, msg, auth): - """ - Constructor call for showing vnf lcm operation - """ - super().__init__() - self.nslcmoptopic = NsLcmOpTopic(db, fs, msg, auth) - self.nsrtopic = NsrTopic(db, fs, msg, auth) - - def action(self, session, _id, api_req=False): - """ - Get complete information on an Vnf Lcm Operation. - :param session: contains "username", "admin", "force", "public", "project_id", "set_project" - :param _id: Vnf Lcm operation id - :param api_req: True if this call is serving an external API request. False if serving internal request. - :return: dictionary, raise exception if not found. - """ - record = self.nslcmoptopic.show(session, _id, api_req) - ns_id = record.get("nsInstanceId") - nsr = self.nsrtopic.show(session, ns_id) - vnfinstance_id = nsr['constituent-vnfr-ref'][0] - outdata = sol003_projection(record, vnfinstance_id) - return outdata - - -def sol003_projection(data, vnfinstance_id): - """ - Returns SOL003 formatted data - :param data: contains Lcm Operation information - :param vnfinstance_id: id of vnf_instance - :return: SOL003 formatted data of vnf lcm op - """ - data.pop("nsInstanceId") - data.pop("operationParams") - data.pop("links") - links = { - "self": "/osm/vnflcm/v1/vnf_lcm_op_occs/" + data["_id"], - "vnfInstance": "/osm/vnflcm/v1/vnf_instances/" + vnfinstance_id, - } - data["_links"] = links - data["vnfInstanceId"] = vnfinstance_id - return data