fix subscription error 93/72293/1
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Fri, 9 Nov 2018 12:51:58 +0000 (20:51 +0800)
committermaopengzhang <zhang.maopeng1@zte.com.cn>
Fri, 9 Nov 2018 12:51:58 +0000 (20:51 +0800)
fix subscription error

Change-Id: Ibc3844a3979b86a63da6df9f7fce7fccfda8f354
Issue-ID: VFC-1158
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
lcm/ns_vnfs/biz/create_vnfs.py
lcm/ns_vnfs/biz/subscribe.py

index 5b7cfde..b1caa39 100644 (file)
@@ -171,10 +171,20 @@ class CreateVnfs(Thread):
                     # SOL 003 align
                     "id": vl_instance_id,
                     "vimConnectionId": vl_instance.vimid,
-                    "extCps": [{"cpdId": self.get_cpd_id_of_vl(network_info['key_name']), "cpConfig":[]}]
+                    "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"]:
index 2a4a817..21d410e 100644 (file)
@@ -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)