- # def check_res_status(self):
- # logger.info("[NF instantiation] confirm all vms are active start")
- # vnfcs = self.create_res_result['resource_result']['affectedvnfc']
- # for vnfc in vnfcs:
- # if 'success' != vnfc['status']:
- # logger.error("VNFC_STATUS_IS_NOT_ACTIVE[vduid=%s]" % vnfc['vduId'])
- # raise NFLCMException(msgid="VNFC_STATUS_IS_NOT_ACTIVE[vduid=%s]", args=vnfc['vduId'])
- #
- # JobUtil.add_job_status(self.job_id, 80, 'SAVE_VNFC_TO_DB')
- # vls = self.create_res_result['resource_result']['affectedvirtuallink']
- # cps = self.create_res_result['resource_result']['affectedcp']
- #
- # for vnfc in vnfcs:
- # if 'failed' == vnfc['status']:
- # continue
- # compute_resource = vnfc['computeresource']
- # vminst = VmInstModel.objects.filter(resouceid=compute_resource['resourceid']).first()
- # VNFCInstModel.objects.create(
- # vnfcinstanceid=vnfc['vnfcinstanceid'],
- # vduid=vnfc['vduid'],
- # vdutype=vnfc['vdutype'],
- # nfinstid=self.nf_inst_id,
- # vmid=vminst.vmid)
- # for vl in vls:
- # if 'failed' == vl['status']:
- # continue
- # network_resource = vl['networkresource']
- # subnet_resource = vl['subnetworkresource']
- # networkinst = NetworkInstModel.objects.filter(resouceid=network_resource['resourceid']).first()
- # subnetinst = SubNetworkInstModel.objects.filter(resouceid=subnet_resource['resourceid']).first()
- # VLInstModel.objects.create(
- # vlinstanceid=vl['virtuallinkinstanceid'],
- # vldid=vl['virtuallinkdescid'],
- # ownertype='0',
- # ownerid=self.nf_inst_id,
- # relatednetworkid=networkinst.networkid,
- # relatedsubnetworkid=subnetinst.subnetworkid)
- # # # for vs in vss:
- # for cp in cps:
- # if 'failed' == cp['status']:
- # continue
- # port_resource = cp['portresource']
- # portinst = PortInstModel.objects.filter(resouceid=port_resource['resourceid']).first()
- # ttt = portinst.portid
- # CPInstModel.objects.create(
- # cpinstanceid=cp['cpinstanceid'],
- # cpdid=cp['cpdid'],
- # relatedtype='2',
- # relatedport=portinst.portid,
- # ownertype=cp['ownertype'],
- # ownerid=cp['ownerid'],
- # vlinstanceid=cp['virtuallinkinstanceid'])
- # # self.add_job(43, 'INST_DPLY_VM_PRGS')
- # logger.info("[NF instantiation] confirm all vms are active end")
-
- # def wait_inst_finish(self, args):
- # try:
- # logger.info('wait_inst_finish, args=%s' % args)
- # # WaitInstFinishTask(args).do_biz()
- # return {'result': '100', 'msg': 'Nf instancing wait finish', 'context': {}}
- # except Exception as e:
- # logger.error('Nf instancing wait exception=%s' % e.message)
- # logger.error(traceback.format_exc())
- # return {'result': '255', 'msg': 'Nf instancing wait exception', 'context': {}}
-
- def lcm_notify(self, args):
- logger.info('lcm_notify, args=%s' % args)
- # LcmNotifyTask(args).do_biz()
- return {'result': '100', 'msg': 'Nf instancing lcm notify finish', 'context': {}}
-
- # def rollback(self, args):
- # try:
- # logger.info('inst_exception, args=%s' % args)
- # # InstExceptionTask(args).do_biz()
- # return {'result': '100', 'msg': 'Nf instancing exception process finish', 'context': {}}
- # except Exception as e:
- # logger.error('Nf instancing exception process exception=%s' % e.message)
- # logger.error(traceback.format_exc())
- # return {'result': '255', 'msg': 'Nf instancing exception process exception', 'context': {}}
+ def lcm_notify(self):
+ logger.info('[NF instantiation] send notify request to nfvo start')
+ affected_vnfc = []
+ vnfcs = VNFCInstModel.objects.filter(instid=self.nf_inst_id)
+ for vnfc in vnfcs:
+ vmResource = {}
+ if vnfc.vmid:
+ vm = VmInstModel.objects.filter(vmid=vnfc.vmid)
+ if vm:
+ vmResource = {'vimId': vm[0].vimid, 'resourceId': vm[0].resouceid,
+ 'resourceName': vm[0].vmname, 'resourceType': 'vm'}
+ affected_vnfc.append(
+ {'vnfcInstanceId': vnfc.vnfcinstanceid,
+ 'vduId': vnfc.vduid,
+ 'changeType': 'added',
+ 'computeResource': vmResource})
+ affected_vl = []
+ networks = NetworkInstModel.objects.filter(instid=self.nf_inst_id)
+ for network in networks:
+ network_resource = {'vimId': network.vimid, 'resourceId': network.resouceid,
+ 'resourceName': network.name, 'resourceType': 'network'}
+ affected_vl.append(
+ {'vlInstanceId': network.networkid,
+ 'vldid': network.nodeId,
+ 'changeType': 'added',
+ 'networkResource': network_resource})
+ affected_cp = []
+ ports = PortInstModel.objects.filter(instid=self.nf_inst_id)
+ for port in ports:
+ affected_cp.append(
+ {'vsInstanceId': port.portid,
+ 'cpdid': port.nodeId,
+ 'changeType': 'added',
+ 'storageResource': {'vimId': port.vimid, 'resourceId': port.resouceid,
+ 'resourceName': port.name, 'resourceType': 'port'}})
+ affected_vs = []
+ vss = StorageInstModel.objects.filter(instid=self.nf_inst_id)
+ for vs in vss:
+ affected_vs.append(
+ {'vsInstanceId': vs.storageid,
+ 'vsdId': vs.nodeId,
+ 'changeType': 'added',
+ 'storageResource': {'vimId': vs.vimid, 'resourceId': vs.resouceid,
+ 'resourceName': vs.name, 'resourceType': 'volume'}})
+ content_args = {
+ "status": 'result',
+ "nfInstanceId": self.nf_inst_id,
+ "operation": 'instantiate',
+ "jobId": self.job_id,
+ 'affectedVnfc': affected_vnfc,
+ 'affectedVirtualLink': affected_vl,
+ 'affectedVirtualStorage': affected_vs,
+ # "vnfdmodule": allocate_data,
+ # "additionalParam": addition_param,
+ # "nfvoInstanceId": self.nfvo_inst_id,
+ # "vnfmInstanceId": self.vnfm_inst_id,
+ # 'affectedcapacity': affectedcapacity,
+ # 'affectedService': [],
+ 'affectedCp': affected_cp
+ }
+ logger.info('content_args=%s' % content_args)
+ # call rest api
+ resp = notify_lcm_to_nfvo(content_args, self.nf_inst_id)
+ logger.info('[NF instantiation] get lcm response %s' % resp)
+ if resp[0] != 0:
+ logger.error("notify lifecycle to nfvo failed.[%s]" % resp[1])
+ raise NFLCMException("send notify request to nfvo failed")
+ logger.info('[NF instantiation] send notify request to nfvo end')