Fix Typo and bug inside place vnf
[vfc/nfvo/lcm.git] / lcm / ns_vnfs / biz / place_vnfs.py
index e288f9d..5b1d88b 100644 (file)
@@ -26,14 +26,12 @@ class PlaceVnfs(object):
         self.data = data
         self.placements = ""
         self.request_id = data.get("requestId")
-        self.transaction_id = data.get("transactionId")
 
     def validateCallbackResponse(self):
         if self.data == "":
             logger.error("Error occurred in Homing: OOF Async Callback Response is empty")
             return False
-        if self.data.get('requestStatus') == "completed" and self.data.get("requestId") \
-                and self.data.get("transactionId"):
+        if self.data.get('requestStatus') == "completed" and self.data.get("requestId"):
             if self.data.get("solutions").get("placementSolutions") is not None:
                 self.placements = self.data.get("solutions").get("placementSolutions")
                 logger.debug("Got placement solutions in OOF Async Callback response")
@@ -58,19 +56,17 @@ class PlaceVnfs(object):
         vim_info = {}
         if not self.validateCallbackResponse():
             logger.error("OOF request Failed")
-            self.update_response_to_db(self.request_id, self.transaction_id,
-                                       self.data.get("requestStatus"), "none", "none", "none", "none")
+            self.update_response_to_db(self.request_id, self.data.get("requestStatus"), "none", "none",
+                                       "none", "none")
             return
         if self.placements == [] or self.placements == [[]]:
             logger.debug("No solution found for request %s " % self.request_id)
-            self.update_response_to_db(self.request_id, self.transaction_id,
-                                       self.data.get("requestStatus"), "none", "none",
+            self.update_response_to_db(self.request_id, self.data.get("requestStatus"), "none", "none",
                                        "none", "none")
             return
         for item in self.placements:
             if not isinstance(item, list):
-                self.update_response_to_db(self.request_id, self.transaction_id,
-                                           self.data.get("requestStatus"), "none", "none",
+                self.update_response_to_db(self.request_id, self.data.get("requestStatus"), "none", "none",
                                            "none", "none")
                 continue
             for placement in item:
@@ -79,65 +75,57 @@ class PlaceVnfs(object):
                     logger.debug(
                         "No assignment info/Solution inside Homing response for request %s"
                         % self.request_id)
-                    self.update_response_to_db(self.request_id,
-                                               self.transaction_id,
-                                               self.data.get("requestStatus"), "none", "none", "none",
-                                               "none")
+                    self.update_response_to_db(self.request_id, self.data.get("requestStatus"), "none", "none",
+                                               "none", "none")
                     continue
                 for info in assignmentInfo:
                     if info.get("key") in params:
                         vim_info[info.get("key")] = info.get("value")
-                    if not vim_info.get("oof_directives"):
-                        logger.warn("Missing flavor info as no directive found in response")
-                        self.update_response_to_db(self.request_id,
-                                                   self.transaction_id,
-                                                   self.data.get("requestStatus"), "none", "none",
-                                                   "none", "none")
-                        continue
-                    vduinfo = self.get_info_from_directives(
-                        vim_info['oof_directives'])
-                    if not vduinfo:
+                if not vim_info.get("oof_directives"):
+                    logger.warn("Missing flavor info as no directive found in response")
+                    self.update_response_to_db(self.request_id,
+                                               self.data.get("requestStatus"), "none", "none",
+                                               "none", "none")
+                    continue
+                vduinfo = self.get_info_from_directives(
+                    vim_info['oof_directives'])
+                if not vduinfo:
+                    self.update_response_to_db(self.request_id,
+                                               self.data.get("requestStatus"), "none", "none",
+                                               "none", "none")
+                    return
+                else:
+                    cloud_owner = placement.get("solution").get("cloudOwner") \
+                        if placement.get("solution").get("cloudOwner") \
+                        else vim_info.get("cloudOwner")
+                    location_id = vim_info.get("locationId")
+                    if not cloud_owner or not location_id:
                         self.update_response_to_db(self.request_id,
-                                                   self.transaction_id,
                                                    self.data.get("requestStatus"), "none", "none",
                                                    "none", "none")
                         return
-                    else:
-                        cloud_owner = placement.get("solution").get("cloudOwner") \
-                            if placement.get("solution").get("cloudOwner") \
-                            else vim_info.get("cloudOwner")
-                        location_id = vim_info.get("locationId")
-                        if not cloud_owner or not location_id:
-                            self.update_response_to_db(self.request_id,
-                                                       self.transaction_id,
-                                                       self.data.get("requestStatus"), "none", "none",
-                                                       "none", "none")
-                            return
-                        vim_id = vim_info['vimId'] if vim_info.get('vimId') \
-                            else cloud_owner + "_" + location_id
-                        self.update_response_to_db(requestId=self.request_id,
-                                                   transactionId=self.transaction_id,
-                                                   requestStatus=self.data.get("requestStatus"),
-                                                   vimId=vim_id,
-                                                   cloudOwner=cloud_owner,
-                                                   cloudRegionId=values.ignore_case_get(vim_info, "locationId"),
-                                                   vduInfo=vduinfo
-                                                   )
-                        logger.debug(
-                            "Placement solution has been stored for request %s "
-                            % self.request_id)
-                        return "Done"
+                    vim_id = vim_info['vimId'] if vim_info.get('vimId') \
+                        else cloud_owner + "_" + location_id
+                    self.update_response_to_db(requestId=self.request_id,
+                                               requestStatus=self.data.get("requestStatus"),
+                                               vimId=vim_id,
+                                               cloudOwner=cloud_owner,
+                                               cloudRegionId=values.ignore_case_get(vim_info, "locationId"),
+                                               vduInfo=vduinfo)
+                    logger.debug(
+                        "Placement solution has been stored for request %s " % self.request_id)
+                    return "Done"
 
     def get_info_from_directives(self, directives):
         vduinfo = []
         for directive in directives.get("directives"):
-            if directive.get("type") == "tocsa.nodes.nfv.Vdu.Compute":
+            if directive.get("type") == "tosca.nodes.nfv.Vdu.Compute":
                 vdu = {"vduName": directive.get("id")}
                 other_directives = []
                 for item in directive.get("directives"):
                     if item.get("type") == "flavor_directives":
                         for attribute in item.get("attributes"):
-                            vdu['flavorName'] = attribute.get("attribute_value")
+                            vdu[attribute.get("attribute_name")] = attribute.get("attribute_value")
                     else:
                         other_directives.append(item)
                 if other_directives:
@@ -153,10 +141,9 @@ class PlaceVnfs(object):
             logger.warn("No OOF directive for VDU")
             return None
 
-    def update_response_to_db(self, requestId, transactionId, requestStatus, vimId, cloudOwner,
+    def update_response_to_db(self, requestId, requestStatus, vimId, cloudOwner,
                               cloudRegionId, vduInfo):
-        OOFDataModel.objects.filter(request_id=requestId,
-                                    transaction_id=transactionId).update(
+        OOFDataModel.objects.filter(request_id=requestId).update(
             request_status=requestStatus,
             vim_id=vimId,
             cloud_owner=cloudOwner,