diff options
-rw-r--r-- | lcm/ns_vnfs/biz/create_vnfs.py | 17 | ||||
-rw-r--r-- | lcm/ns_vnfs/biz/grant_vnf.py | 9 | ||||
-rw-r--r-- | lcm/ns_vnfs/biz/subscribe.py | 24 | ||||
-rw-r--r-- | lcm/workflows/build_in.py | 2 |
4 files changed, 38 insertions, 14 deletions
diff --git a/lcm/ns_vnfs/biz/create_vnfs.py b/lcm/ns_vnfs/biz/create_vnfs.py index 5dcdb7b3..b1caa393 100644 --- a/lcm/ns_vnfs/biz/create_vnfs.py +++ b/lcm/ns_vnfs/biz/create_vnfs.py @@ -167,10 +167,24 @@ class CreateVnfs(Thread): "cpdId": self.get_cpd_id_of_vl(network_info['key_name']), "vim": { "vimid": vl_instance.vimid - } + }, + # SOL 003 align + "id": vl_instance_id, + "vimConnectionId": vl_instance.vimid, + "extCps": self.get_cpds_of_vl(network_info['key_name']) }) return virtual_link_list, ext_virtual_link + def get_cpds_of_vl(self, vl_key): + extCps = [] + logger.debug("vl_keya; %s" % vl_key) + for cpd in self.vnfd_model["vnf_exposed"]["external_cps"]: + logger.debug("exposed_cpd; %s" % cpd) + if vl_key == cpd["key_name"]: + cp = {"cpdId": cpd["cpd_id"], "cpConfig": []} + extCps.append(cp) + return extCps + def get_cpd_id_of_vl(self, vl_key): for cpd in self.vnfd_model["vnf_exposed"]["external_cps"]: if vl_key == cpd["key_name"]: @@ -189,6 +203,7 @@ class CreateVnfs(Thread): 'vnfInstanceName': self.vnf_inst_name, 'vnfPackageId': ignore_case_get(self.nf_package_info, "vnfPackageId"), 'vnfDescriptorId': self.vnfd_id, + 'flavourId': "default", 'extVirtualLink': ext_virtual_link, 'additionalParam': { "properties": self.properties, diff --git a/lcm/ns_vnfs/biz/grant_vnf.py b/lcm/ns_vnfs/biz/grant_vnf.py index 6987fc07..0923eb15 100644 --- a/lcm/ns_vnfs/biz/grant_vnf.py +++ b/lcm/ns_vnfs/biz/grant_vnf.py @@ -52,9 +52,12 @@ class GrantVnf(object): additional_param = ignore_case_get(self.data, "additionalparams") vnfm_inst_id = ignore_case_get(additional_param, "vnfmid") vim_id = ignore_case_get(additional_param, "vimid") - - vnfinsts = NfInstModel.objects.filter( - nfinstid=m_vnf_inst_id, vnfm_inst_id=vnfm_inst_id) + if vnfm_inst_id and vnfm_inst_id != "": + vnfinsts = NfInstModel.objects.filter( + mnfinstid=m_vnf_inst_id, vnfm_inst_id=vnfm_inst_id) + else: + vnfinsts = NfInstModel.objects.filter( + mnfinstid=m_vnf_inst_id) if not vnfinsts: raise NSLCMException("Vnfinst(%s) is not found in vnfm(%s)" % ( m_vnf_inst_id, vnfm_inst_id)) diff --git a/lcm/ns_vnfs/biz/subscribe.py b/lcm/ns_vnfs/biz/subscribe.py index 2a4a8173..21d410e0 100644 --- a/lcm/ns_vnfs/biz/subscribe.py +++ b/lcm/ns_vnfs/biz/subscribe.py @@ -20,6 +20,7 @@ from lcm.pub.exceptions import NSLCMException from lcm.pub.msapi.extsys import get_vnfm_by_id from lcm.pub.utils.restcall import req_by_msb from lcm.pub.utils.values import ignore_case_get +from lcm.pub.config import config as pub_config logger = logging.getLogger(__name__) @@ -35,13 +36,14 @@ class SubscriptionCreation(object): def do_biz(self): logger.debug('Start subscribing...') - self.prepare_subscription_request_data() + self.prepare_lccn_subscription_request_data() self.send_subscription_request() self.save_subscription_response_data() logger.debug('Subscribing has completed.') def prepare_lccn_subscription_request_data(self): vnfm_info = get_vnfm_by_id(self.vnfm_id) + call_back = "http://%s:%s/api/gvnfmdriver/v1/vnfs/lifecyclechangesnotification" % (pub_config.MSB_SERVICE_IP, pub_config.MSB_SERVICE_PORT) self.subscription_request_data = { "filter": { "notificationTypes": ["VnfLcmOperationOccurrenceNotification"], @@ -66,24 +68,28 @@ class SubscriptionCreation(object): "ROLLED_BACK" ], "vnfInstanceSubscriptionFilter": { - "vnfdIds": [], + # "vnfdIds": [], "vnfInstanceIds": [self.vnf_instance_id], - "vnfInstanceNames": [], - "vnfProductsFromProviders": {} + # "vnfInstanceNames": [], + # "vnfProductsFromProviders": {} } }, - "callbackUri": "api/gvnfmdriver/v1/vnfs/lifecyclechangesnotification", # TODO: need reconfirming + "callbackUri": call_back, # TODO: need reconfirming "authentication": { "authType": ["BASIC"], "paramsBasic": { - "userName": vnfm_info['userName'], - "password": vnfm_info['password'] + # "userName": vnfm_info['userName'], + # "password": vnfm_info['password'] } } } + if vnfm_info['userName']: + self.subscription_request_data["authentication"]["paramsBasic"]["userName"] = vnfm_info['userName'] + if vnfm_info['password']: + self.subscription_request_data["authentication"]["paramsBasic"]["password"] = vnfm_info['password'] def send_subscription_request(self): - ret = req_by_msb('api/gvnfmdrvier/v1/%s/subscriptions' % self.vnfm_id, 'POST', self.subscription_request_data) + ret = req_by_msb('api/gvnfmdriver/v1/%s/subscriptions' % self.vnfm_id, 'POST', json.JSONEncoder().encode(self.subscription_request_data)) if ret[0] != 0: logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) raise NSLCMException("Failed to subscribe from vnfm(%s)." % self.vnfm_id) @@ -125,7 +131,7 @@ class SubscriptionDeletion(object): def send_subscription_deletion_request(self): if self.subscription: self.subscription_id = ignore_case_get(self.subscription, 'id') - ret = req_by_msb('api/gvnfmdrvier/v1/%s/subscriptions/%s' % (self.vnfm_id, self.subscription_id), 'DELETE') + ret = req_by_msb('api/gvnfmdriver/v1/%s/subscriptions/%s' % (self.vnfm_id, self.subscription_id), 'DELETE') if ret[0] != 0: logger.error('Status code is %s, detail is %s.', ret[2], ret[1]) raise NSLCMException("Failed to subscribe from vnfm(%s)." % self.vnfm_id) diff --git a/lcm/workflows/build_in.py b/lcm/workflows/build_in.py index 993efbe6..fa267855 100644 --- a/lcm/workflows/build_in.py +++ b/lcm/workflows/build_in.py @@ -279,7 +279,7 @@ def confirm_sfc_status(sfc_inst_id): def create_pnf(pnf_param_json): if pnf_param_json and len(pnf_param_json) > 0: pnfs = json.JSONDecoder().decode(pnf_param_json) - for pnf in pnfs: + for pnf in pnfs.itervalues(): uri = "/api/nslcm/v1/pnfs" method = "POST" content = json.JSONEncoder().encode(pnf["input"]["content"]) |