Remove vfc_vnflcm spare code
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnf_create / inst_vnf.py
index 59ec993..9ae2515 100644 (file)
@@ -37,12 +37,7 @@ class InstVnf(Thread):
         self.data = data
         self.nf_inst_id = nf_inst_id
         self.job_id = job_id
-        self.vnfd_id = ''
         self.vim_id = ignore_case_get(ignore_case_get(self.data, "additionalParams"), "vimId")
-        self.nfvo_inst_id = ''
-        self.vnfm_inst_id = ''
-        self.package_id = ''
-        self.vnfd_info = []
 
     def run(self):
         try:
@@ -76,18 +71,18 @@ class InstVnf(Thread):
                 inputs = json.loads(inputs)
             for key, val in inputs.items():
                 input_parameters.append({"key": key, "value": val})
-        self.vnfd_info = query_vnfpackage_by_id(self.vnfd_id)
-        # self.vnfd_info = vnfd_model_dict  # just for test
+        vnf_package_info = query_vnfpackage_by_id(self.vnfd_id)
+        self.vnfd_info = json.loads(ignore_case_get(ignore_case_get(vnf_package_info, "packageInfo"), "vnfdModel"))
 
         self.update_cps()
-        self.check_parameter_exist()
         metadata = ignore_case_get(self.vnfd_info, "metadata")
+        csar_id = ignore_case_get(metadata, "id")
         version = ignore_case_get(metadata, "vnfdVersion")
         vendor = ignore_case_get(metadata, "vendor")
         netype = ignore_case_get(metadata, "type")
         vnfsoftwareversion = ignore_case_get(metadata, "version")
         NfInstModel.objects.filter(nfinstid=self.nf_inst_id).\
-            update(package_id=self.package_id,
+            update(package_id=csar_id,
                    flavour_id=ignore_case_get(self.data, "flavourId"),
                    version=version,
                    vendor=vendor,
@@ -100,16 +95,18 @@ class InstVnf(Thread):
                    vnfSoftwareVersion=vnfsoftwareversion,
                    lastuptime=now_time())
 
-        logger.info("self.vim_id = %s" % self.vim_id)
-        NfvoRegInfoModel.objects.create(
-            nfvoid=self.nf_inst_id,
-            vnfminstid=ignore_case_get(self.data, "vnfmId"),
-            apiurl=self.vim_id)
+        logger.info("VimId = %s" % self.vim_id)
+        is_exist = NfvoRegInfoModel.objects.filter(nfvoid=self.nf_inst_id).exists()
+        if not is_exist:
+            NfvoRegInfoModel.objects.create(
+                nfvoid=self.nf_inst_id,
+                vnfminstid=ignore_case_get(self.data, "vnfmId"),
+                apiurl=self.vim_id)
         JobUtil.add_job_status(self.job_id, 15, 'Nf instancing pre-check finish')
         logger.info("Nf instancing pre-check finish")
 
     def apply_grant(self):
-        logger.info('[NF instantiation] send resource grand request to nfvo start')
+        logger.info('Send resource grand request to nfvo')
         content_args = {
             'vnfInstanceId': self.nf_inst_id,
             'vnfDescriptorId': '',
@@ -132,51 +129,30 @@ class InstVnf(Thread):
             content_args['addResource'].append(res_def)
             res_index += 1
 
-        logger.debug("NfvoRegInfoModel filter nf_inst_id=%s", self.nf_inst_id)
+        logger.debug("VnfInst = %s", self.nf_inst_id)
         vnfmInfo = NfvoRegInfoModel.objects.filter(nfvoid=self.nf_inst_id)
         if len(vnfmInfo) == 0:
-            raise NFLCMException('nf_inst_id(%s) does not exist in NfvoRegInfoModel' % self.nf_inst_id)
+            raise NFLCMException('VnfInst(%s) does not exist' % self.nf_inst_id)
         content_args['additionalParam']['vnfmid'] = vnfmInfo[0].vnfminstid
         content_args['additionalParam']['vimid'] = vnfmInfo[0].apiurl
-        logger.info('content_args=%s' % content_args)
+        logger.info('Grant request data = %s', content_args)
+
         apply_result = apply_grant_to_nfvo(json.dumps(content_args))
-        # vim_info = ignore_case_get(apply_result, "vim")
-        # vim_info = ignore_case_get(json.JSONDecoder().decode(apply_result), "vim")
-
-        for vdu in ignore_case_get(self.vnfd_info, "vdus"):
-            if "location_info" in vdu["properties"]:
-                vdu["properties"]["location_info"]["vimid"] = ignore_case_get(apply_result, "vimid")
-                vdu["properties"]["location_info"]["tenant"] = ignore_case_get(apply_result, "tenant")
-            else:
-                vdu["properties"]["location_info"] = {
-                    "vimid": ignore_case_get(apply_result, "vimid"),
-                    "tenant": ignore_case_get(apply_result, "tenant")}
-                logger.info('vdu["properties"]["location_info"]=%s' % vdu["properties"]["location_info"])
-
-        for vl in ignore_case_get(self.vnfd_info, "vls"):
-            if "location_info" in vl["properties"]:
-                vl["properties"]["location_info"]["vimid"] = ignore_case_get(apply_result, "vimid")
-                vl["properties"]["location_info"]["tenant"] = ignore_case_get(apply_result, "tenant")
-            else:
-                vl["properties"]["location_info"] = {
-                    "vimid": ignore_case_get(apply_result, "vimid"),
-                    "tenant": ignore_case_get(apply_result, "tenant")}
-                logger.info('vl["properties"]["location_info"]=%s' % vl["properties"]["location_info"])
-
-        logger.info('self.vnfd_info=%s' % self.vnfd_info)
+        self.set_location(apply_result)
+
+        logger.info('VnfdInfo = %s' % self.vnfd_info)
         NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='INSTANTIATED', lastuptime=now_time())
         JobUtil.add_job_status(self.job_id, 20, 'Nf instancing apply grant finish')
         logger.info("Nf instancing apply grant finish")
 
     def create_res(self):
-        logger.info("[NF instantiation] create resource start")
+        logger.info("Create resource start")
         adaptor.create_vim_res(self.vnfd_info, self.do_notify)
-
         JobUtil.add_job_status(self.job_id, 70, '[NF instantiation] create resource finish')
-        logger.info("[NF instantiation] create resource finish")
+        logger.info("Create resource finish")
 
     def lcm_notify(self):
-        logger.info('[NF instantiation] send notify request to nfvo start')
+        logger.info('Send notify request to nfvo')
         affected_vnfc = []
         vnfcs = VNFCInstModel.objects.filter(instid=self.nf_inst_id)
         for vnfc in vnfcs:
@@ -234,137 +210,19 @@ class InstVnf(Thread):
         if len(vnfmInfo) == 0:
             raise NFLCMException('nf_inst_id(%s) does not exist in NfvoRegInfoModel' % self.nf_inst_id)
         content_args['VNFMID'] = vnfmInfo[0].vnfminstid
-        logger.info('content_args=%s' % content_args)
+        logger.info('Notify request data = %s' % content_args)
         resp = notify_lcm_to_nfvo(json.dumps(content_args))
-        logger.info('[NF instantiation] get lcm response %s' % resp)
-        logger.info('[NF instantiation] send notify request to nfvo end')
+        logger.info('Lcm notify end, response %s' % resp)
 
     def vnf_inst_failed_handle(self, error_msg):
         logger.error('VNF instantiation failed, detail message: %s' % error_msg)
-        NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='failed', lastuptime=now_time())
+        NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='FAILED', lastuptime=now_time())
         JobUtil.add_job_status(self.job_id, 255, error_msg)
 
     def do_notify(self, res_type, ret):
-        logger.info('creating [%s] resource' % res_type)
-        if res_type == adaptor.RES_VOLUME:
-            logger.info('Create vloumns!')
-            JobUtil.add_job_status(self.job_id, 25, 'Create vloumns!')
-            StorageInstModel.objects.create(
-                storageid=str(uuid.uuid4()),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                name=ignore_case_get(ret, "name"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                create_time=ignore_case_get(ret, "createTime"),
-                storagetype=get_none(ignore_case_get(ret, "type")),
-                size=ignore_case_get(ret, "size"),
-                insttype=0,
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                nodeId=ignore_case_get(ret, "nodeId"),
-                instid=self.nf_inst_id)
-        elif res_type == adaptor.RES_NETWORK:
-            logger.info('Create networks!')
-            JobUtil.add_job_status(self.job_id, 35, 'Create networks!')
-            NetworkInstModel.objects.create(
-                networkid=str(uuid.uuid4()),
-                name=ignore_case_get(ret, "name"),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                segmentid=str(ignore_case_get(ret, "segmentationId")),
-                network_type=ignore_case_get(ret, "networkType"),
-                physicalNetwork=ignore_case_get(ret, "physicalNetwork"),
-                vlantrans=get_boolean(ignore_case_get(ret, "vlanTransparent")),
-                is_shared=get_boolean(ignore_case_get(ret, "shared")),
-                routerExternal=get_boolean(ignore_case_get(ret, "routerExternal")),
-                insttype=0,
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                nodeId=ignore_case_get(ret, "nodeId"),
-                instid=self.nf_inst_id)
-        elif res_type == adaptor.RES_SUBNET:
-            logger.info('Create subnets!')
-            JobUtil.add_job_status(self.job_id, 40, 'Create subnets!')
-            SubNetworkInstModel.objects.create(
-                subnetworkid=str(uuid.uuid4()),
-                name=ignore_case_get(ret, "name"),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                networkid=ignore_case_get(ret, "networkId"),
-                cidr=ignore_case_get(ret, "cidr"),
-                ipversion=ignore_case_get(ret, "ipversion"),
-                isdhcpenabled=ignore_case_get(ret, "enableDhcp"),
-                gatewayip=ignore_case_get(ret, "gatewayIp"),
-                dnsNameservers=ignore_case_get(ret, "dnsNameservers"),
-                hostRoutes=ignore_case_get(ret, "hostRoutes"),
-                allocationPools=ignore_case_get(ret, "allocationPools"),
-                insttype=0,
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                instid=self.nf_inst_id)
-        elif res_type == adaptor.RES_PORT:
-            logger.info('Create ports!')
-            JobUtil.add_job_status(self.job_id, 50, 'Create ports!')
-            PortInstModel.objects.create(
-                portid=str(uuid.uuid4()),
-                networkid=ignore_case_get(ret, "networkId"),
-                subnetworkid=ignore_case_get(ret, "subnetId"),
-                name=ignore_case_get(ret, "name"),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                macaddress=ignore_case_get(ret, "macAddress"),
-                ipaddress=ignore_case_get(ret, "ip"),
-                typevirtualnic=ignore_case_get(ret, "vnicType"),
-                securityGroups=ignore_case_get(ret, "securityGroups"),
-                insttype=0,
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                nodeId=ignore_case_get(ret, "nodeId"),
-                instid=self.nf_inst_id)
-        elif res_type == adaptor.RES_FLAVOR:
-            logger.info('Create flavors!')
-            JobUtil.add_job_status(self.job_id, 60, 'Create flavors!')
-            FlavourInstModel.objects.create(
-                flavourid=str(uuid.uuid4()),
-                name=ignore_case_get(ret, "name"),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                vcpu=get_integer(ignore_case_get(ret, "vcpu")),
-                memory=get_integer(ignore_case_get(ret, "memory")),
-                disk=get_integer(ignore_case_get(ret, "disk")),
-                ephemeral=get_integer(ignore_case_get(ret, "ephemeral")),
-                swap=get_integer(ignore_case_get(ret, "swap")),
-                isPublic=get_boolean(ignore_case_get(ret, "isPublic")),
-                extraspecs=ignore_case_get(ret, "extraSpecs"),
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                instid=self.nf_inst_id)
-        elif res_type == adaptor.RES_VM:
-            logger.info('Create vms!')
-            JobUtil.add_job_status(self.job_id, 70, 'Create vms!')
-            vm_id = str(uuid.uuid4())
-            VmInstModel.objects.create(
-                vmid=vm_id,
-                vmname=ignore_case_get(ret, "name"),
-                vimid=ignore_case_get(ret, "vimId"),
-                resouceid=ignore_case_get(ret, "id"),
-                tenant=ignore_case_get(ret, "tenantId"),
-                nic_array=ignore_case_get(ret, "nicArray"),
-                metadata=ignore_case_get(ret, "metadata"),
-                volume_array=ignore_case_get(ret, "volumeArray"),
-                server_group=ignore_case_get(ret, "serverGroup"),
-                availability_zone=str(ignore_case_get(ret, "availabilityZone", "undefined")),
-                flavor_id=ignore_case_get(ret, "flavorId"),
-                security_groups=ignore_case_get(ret, "securityGroups"),
-                operationalstate=ignore_case_get(ret, "status"),
-                insttype=0,
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                instid=self.nf_inst_id)
-            VNFCInstModel.objects.create(
-                vnfcinstanceid=str(uuid.uuid4()),
-                vduid=ignore_case_get(ret, "id"),
-                is_predefined=ignore_case_get(ret, "returnCode"),
-                instid=self.nf_inst_id,
-                vmid=vm_id)
+        logger.info('Creating [%s] resource' % res_type)
+        resource_save_method = globals().get(res_type + '_save')
+        resource_save_method(self.job_id, self.nf_inst_id, ret)
 
     def update_cps(self):
         for extlink in ignore_case_get(self.data, "extVirtualLinks"):
@@ -375,5 +233,138 @@ class InstVnf(Thread):
                     cp["subnetId"] = ignore_case_get(extlink, "resourceSubnetId")
                     break
 
-    def check_parameter_exist(self):
-        pass
+    def set_location(self, apply_result):
+        for resource_type in ['vdus', 'vls']:
+            for resource in ignore_case_get(self.vnfd_info, resource_type):
+                if "location_info" in resource["properties"]:
+                    resource["properties"]["location_info"]["vimid"] = ignore_case_get(apply_result, "vimid")
+                    resource["properties"]["location_info"]["tenant"] = ignore_case_get(apply_result, "tenant")
+                else:
+                    resource["properties"]["location_info"] = {
+                        "vimid": ignore_case_get(apply_result, "vimid"),
+                        "tenant": ignore_case_get(apply_result, "tenant")}
+
+
+def volume_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 25, 'Create vloumns!')
+    StorageInstModel.objects.create(
+        storageid=str(uuid.uuid4()),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        name=ignore_case_get(ret, "name"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        create_time=ignore_case_get(ret, "createTime"),
+        storagetype=get_none(ignore_case_get(ret, "type")),
+        size=ignore_case_get(ret, "size"),
+        insttype=0,
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        nodeId=ignore_case_get(ret, "nodeId"),
+        instid=nf_inst_id)
+
+
+def network_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 35, 'Create networks!')
+    NetworkInstModel.objects.create(
+        networkid=str(uuid.uuid4()),
+        name=ignore_case_get(ret, "name"),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        segmentid=str(ignore_case_get(ret, "segmentationId")),
+        network_type=ignore_case_get(ret, "networkType"),
+        physicalNetwork=ignore_case_get(ret, "physicalNetwork"),
+        vlantrans=get_boolean(ignore_case_get(ret, "vlanTransparent")),
+        is_shared=get_boolean(ignore_case_get(ret, "shared")),
+        routerExternal=get_boolean(ignore_case_get(ret, "routerExternal")),
+        insttype=0,
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        nodeId=ignore_case_get(ret, "nodeId"),
+        instid=nf_inst_id)
+
+
+def subnet_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 40, 'Create subnets!')
+    SubNetworkInstModel.objects.create(
+        subnetworkid=str(uuid.uuid4()),
+        name=ignore_case_get(ret, "name"),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        networkid=ignore_case_get(ret, "networkId"),
+        cidr=ignore_case_get(ret, "cidr"),
+        ipversion=ignore_case_get(ret, "ipversion"),
+        isdhcpenabled=ignore_case_get(ret, "enableDhcp"),
+        gatewayip=ignore_case_get(ret, "gatewayIp"),
+        dnsNameservers=ignore_case_get(ret, "dnsNameservers"),
+        hostRoutes=ignore_case_get(ret, "hostRoutes"),
+        allocationPools=ignore_case_get(ret, "allocationPools"),
+        insttype=0,
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        instid=nf_inst_id)
+
+
+def port_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 50, 'Create ports!')
+    PortInstModel.objects.create(
+        portid=str(uuid.uuid4()),
+        networkid=ignore_case_get(ret, "networkId"),
+        subnetworkid=ignore_case_get(ret, "subnetId"),
+        name=ignore_case_get(ret, "name"),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        macaddress=ignore_case_get(ret, "macAddress"),
+        ipaddress=ignore_case_get(ret, "ip"),
+        typevirtualnic=ignore_case_get(ret, "vnicType"),
+        securityGroups=ignore_case_get(ret, "securityGroups"),
+        insttype=0,
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        nodeId=ignore_case_get(ret, "nodeId"),
+        instid=nf_inst_id)
+
+
+def flavor_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 60, 'Create flavors!')
+    FlavourInstModel.objects.create(
+        flavourid=str(uuid.uuid4()),
+        name=ignore_case_get(ret, "name"),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        vcpu=get_integer(ignore_case_get(ret, "vcpu")),
+        memory=get_integer(ignore_case_get(ret, "memory")),
+        disk=get_integer(ignore_case_get(ret, "disk")),
+        ephemeral=get_integer(ignore_case_get(ret, "ephemeral")),
+        swap=get_integer(ignore_case_get(ret, "swap")),
+        isPublic=get_boolean(ignore_case_get(ret, "isPublic")),
+        extraspecs=ignore_case_get(ret, "extraSpecs"),
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        instid=nf_inst_id)
+
+
+def vm_save(job_id, nf_inst_id, ret):
+    JobUtil.add_job_status(job_id, 70, 'Create vms!')
+    vm_id = str(uuid.uuid4())
+    VmInstModel.objects.create(
+        vmid=vm_id,
+        vmname=ignore_case_get(ret, "name"),
+        vimid=ignore_case_get(ret, "vimId"),
+        resouceid=ignore_case_get(ret, "id"),
+        tenant=ignore_case_get(ret, "tenantId"),
+        nic_array=ignore_case_get(ret, "nicArray"),
+        metadata=ignore_case_get(ret, "metadata"),
+        volume_array=ignore_case_get(ret, "volumeArray"),
+        server_group=ignore_case_get(ret, "serverGroup"),
+        availability_zone=str(ignore_case_get(ret, "availabilityZone", "undefined")),
+        flavor_id=ignore_case_get(ret, "flavorId"),
+        security_groups=ignore_case_get(ret, "securityGroups"),
+        operationalstate=ignore_case_get(ret, "status"),
+        insttype=0,
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        instid=nf_inst_id)
+    VNFCInstModel.objects.create(
+        vnfcinstanceid=str(uuid.uuid4()),
+        vduid=ignore_case_get(ret, "id"),
+        is_predefined=ignore_case_get(ret, "returnCode"),
+        instid=nf_inst_id,
+        vmid=vm_id)