fix bug for vnfm grant request in terminate opratio
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / biz / grant_vnf.py
index a92f365..f7cdeaa 100644 (file)
@@ -25,59 +25,68 @@ logger = logging.getLogger(__name__)
 
 def grant_resource(data, nf_inst_id, job_id, grant_type, vdus):
     logger.info("Grant resource begin")
-
     content_args = {
         'vnfInstanceId': nf_inst_id,
         'vnfLcmOpOccId': job_id,
-        'vnfdId': None,  # TODO
-        'flavourId': None,  # TODO
-        'operate': grant_type,
+        'vnfdId': None,  # TODO
+        # 'flavourId': "default",  # TODO
+        'operation': grant_type,
         'isAutomaticInvocation': True,  # TODO
-        'instantiationLevelId': None,  # TODO
-        'addResources': [],
-        'tmpResources': [],
-        'updateResources': [],
-        'removeResources': [],
-        'placementConstraints': [],
-        'vimConstraints': [],
-        'additionalParams': {},
-        '_links': None  # TODO
+        'instantiationLevelId': None,  # TODO
+        'addResources': [],
+        'tmpResources': [],
+        'updateResources': [],
+        'removeResources': [],
+        'placementConstraints': [],
+        'vimConstraints': [],
+        'additionalParams': {}
+        '_links': None  # TODO
     }
 
     if grant_type == GRANT_TYPE.TERMINATE:
         res_index = 1
+        content_args['removeResources'] = []
         for vdu in vdus:
             res_def = {
                 'id': str(res_index),
                 'type': 'COMPUTE',
-                'vduId': None,
-                'resourceTemplateId': None,
+                'vduId': None,
+                'resourceTemplateId': None,
                 'resource': {
-                    'vimConnectionId': None,
-                    'resourceProviderId': None,
-                    'resourceid': vdu.resourceid,
-                    'vimLevelResourceType': None
+                    #  'vimConnectionId': None,
+                    #  'resourceProviderId': None,
+                    'resourceId': vdu.resourceid,
+                    #  'vimLevelResourceType': None
                 }
             }
             content_args['removeResources'].append(res_def)
             res_index += 1
-        content_args['additionalParams']['vimid'] = vdus[0].vimid
+        if vdus and vdus[0].vimid:
+            split_vim = vdus[0].vimid.split('_')
+            cloud_owner = split_vim[0]
+            cloud_region = "".join(split_vim[1:])
+            content_args['additionalParams']['vimid'] = json.dumps({
+                "cloud_owner": cloud_owner,
+                'cloud_regionid': cloud_region})
     elif grant_type == GRANT_TYPE.INSTANTIATE:
         vim_id = ignore_case_get(ignore_case_get(data, "additionalParams"), "vimId")
         res_index = 1
+        content_args['addResources'] = []
         for vdu in vdus:
             res_def = {
                 'id': str(res_index),
                 'type': 'COMPUTE',
-                'vduId': None,
-                'resourceTemplateId': None,  # TODO: shall be present for the planned creation of new resources.
-                'resource': None
+                # 'vduId': vdu["vdu_id"],
+                'resourceTemplateId': vdu["vdu_id"]  # , None,
+                'resource': None
             }
             content_args['addResources'].append(res_def)
             res_index += 1
-        content_args['additionalParams']['vimid'] = vim_id
+        if vim_id:
+            content_args['additionalParams']['vimid'] = vim_id
     elif grant_type == GRANT_TYPE.OPERATE:
         res_index = 1
+        content_args['updateResources'] = []
         for vdu in vdus:
             res_def = {
                 'id': str(res_index),
@@ -87,16 +96,27 @@ def grant_resource(data, nf_inst_id, job_id, grant_type, vdus):
                 'resource': {
                     'vimConnectionId': None,
                     'resourceProviderId': None,
-                    'resourceid': vdu.resourceid,
+                    'resourceId': vdu.resourceid,
                     'vimLevelResourceType': None
                 }
             }
             content_args['updateResources'].append(res_def)
             res_index += 1
-        content_args['additionalParams']['vimid'] = vdus[0].vimid
+        if vdus and vdus[0].vimid:
+            content_args['additionalParams']['vimid'] = vdus[0].vimid
 
-    vnfInsts = NfInstModel.objects.filter(nfinstid=nf_inst_id)
-    content_args['additionalParams']['vnfmid'] = vnfInsts[0].vnfminstid
+    vnfInst_list = NfInstModel.objects.filter(nfinstid=nf_inst_id)
+    addition_paras = content_args['additionalParams']
+    for vnf in vnfInst_list:
+        if vnf.vnfminstid:
+            addition_paras['vnfmid'] = vnf.vnfminstid
+        if vnf.vimInfo and 'vimid' not in addition_paras:
+            vim_info = json.loads(vnf.vimInfo)
+            vimid = ""
+            for key in list(vim_info.keys()):
+                vimid = key
+            addition_paras['vimid'] = vimid
     logger.info('Grant request data=%s' % content_args)
     apply_result = apply_grant_to_nfvo(json.dumps(content_args))
+    logger.info("apply_result: %s" % apply_result)
     return apply_result