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")
version = ignore_case_get(metadata, "vnfdVersion")
vendor = ignore_case_get(metadata, "vendor")
vnfSoftwareVersion=vnfsoftwareversion,
lastuptime=now_time())
- logger.info("self.vim_id = %s" % 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(
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': '',
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")
- self.vnfdModel = json.loads(ignore_case_get(ignore_case_get(self.vnfd_info, "packageInfo"), "vnfdModel"))
- logger.debug("self.vnfdModel = %s", self.vnfdModel)
- adaptor.create_vim_res(self.vnfdModel, self.do_notify)
-
+ 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:
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)
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"):
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)