Merge "Deal with gvnfm adapter stuffs."
authorFu Jinhua <fu.jinhua@zte.com.cn>
Thu, 16 Aug 2018 02:24:59 +0000 (02:24 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 16 Aug 2018 02:24:59 +0000 (02:24 +0000)
1  2 
lcm/lcm/nf/biz/terminate_vnf.py

@@@ -21,12 -21,11 +21,12 @@@ from lcm.nf.const import VNF_STATUS, RE
  from lcm.pub.database.models import NfInstModel, VmInstModel, NetworkInstModel, StorageInstModel, \
      PortInstModel, VNFCInstModel, FlavourInstModel, SubNetworkInstModel
  from lcm.pub.exceptions import NFLCMException
 -from lcm.pub.msapi.gvnfmdriver import apply_grant_to_nfvo, notify_lcm_to_nfvo
 +from lcm.pub.msapi.gvnfmdriver import notify_lcm_to_nfvo
  from lcm.pub.utils.jobutil import JobUtil
  from lcm.pub.utils.timeutil import now_time
  from lcm.pub.utils.values import ignore_case_get
  from lcm.pub.vimapi import adaptor
 +from lcm.nf.biz.grant_vnf import grant_resource
  
  logger = logging.getLogger(__name__)
  
@@@ -44,8 -43,7 +44,8 @@@ class TerminateVnf(Thread)
      def run(self):
          try:
              if self.term_pre():
 -                self.grant_resource()
 +                grant_resource(nf_inst_id=self.nf_inst_id, job_id=self.job_id)
 +                JobUtil.add_job_status(self.job_id, 20, 'Nf terminating grant_resource finish')
                  self.query_inst_resource()
                  self.query_notify_data()
                  self.delete_resource()
          logger.info("Nf terminating pre-check finish")
          return True
  
 -    def grant_resource(self):
 -        logger.info("Grant resource begin")
 -        content_args = {
 -            'vnfInstanceId': self.nf_inst_id,
 -            'vnfDescriptorId': '',
 -            'lifecycleOperation': 'Terminate',
 -            'jobId': self.job_id,
 -            'addResource': [],
 -            'removeResource': [],
 -            'placementConstraint': [],
 -            'additionalParam': {}
 -        }
 -
 -        vdus = VmInstModel.objects.filter(instid=self.nf_inst_id, is_predefined=1)
 -        res_index = 1
 -        for vdu in vdus:
 -            res_def = {
 -                'type': 'VDU',
 -                'resDefId': str(res_index),
 -                'resDesId': vdu.resouceid}
 -            content_args['removeResource'].append(res_def)
 -            res_index += 1
 -
 -        vnfInsts = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
 -        content_args['additionalParam']['vnfmid'] = vnfInsts[0].vnfminstid
 -        content_args['additionalParam']['vimid'] = vdus[0].vimid
 -        logger.info('Grant request data=%s' % content_args)
 -        self.apply_result = apply_grant_to_nfvo(json.dumps(content_args))
 -        logger.info("Grant resource end, response: %s" % self.apply_result)
 -        JobUtil.add_job_status(self.job_id, 20, 'Nf terminating grant_resource finish')
 -
      def query_inst_resource(self):
          logger.info('Query resource begin')
          for resource_type in RESOURCE_MAP.keys():
  
      def query_notify_data(self):
          logger.info('Send notify request to nfvo')
-         affected_vnfc = []
+         affected_vnfcs = []
          vnfcs = VNFCInstModel.objects.filter(instid=self.nf_inst_id)
          for vnfc in vnfcs:
              vm_resource = {}
              if vnfc.vmid:
                  vm = VmInstModel.objects.filter(vmid=vnfc.vmid)
                  if vm:
-                     vm_resource = {'vimId': vm[0].vimid, 'resourceId': vm[0].resouceid,
-                                    'resourceName': vm[0].vmname, 'resourceType': 'vm'}
-             affected_vnfc.append(
-                 {'vnfcInstanceId': vnfc.vnfcinstanceid,
-                  'vduId': vnfc.vduid,
-                  'changeType': 'removed',
-                  'computeResource': vm_resource})
-         affected_vl = []
+                     vm_resource = {
+                         'vimId': vm[0].vimid,
+                         'resourceId': vm[0].resouceid,
+                         'resourceProviderId': vm[0].vmname,
+                         'vimLevelResourceType': 'vm'
+                     }
+             affected_vnfcs.append({
+                 'id': vnfc.vnfcinstanceid,
+                 'vduId': vnfc.vduid,
+                 'changeType': 'REMOVED',
+                 'computeResource': vm_resource
+             })
+         affected_vls = []
          networks = NetworkInstModel.objects.filter(instid=self.nf_inst_id)
          for network in networks:
              network_resource = {
-                 'vimId': network.vimid,
+                 'vimConnectionId': network.vimid,
                  'resourceId': network.resouceid,
-                 'resourceName': network.name,
-                 'resourceType': 'network'}
-             affected_vl.append(
-                 {'vlInstanceId': network.networkid,
-                  'vldid': network.nodeId,
-                  'changeType': 'removed',
-                  'networkResource': network_resource})
-         affected_cp = []
+                 'resourceProviderId': network.name,
+                 'vimLevelResourceType': 'network'
+             }
+             affected_vls.append({
+                 'id': network.networkid,
+                 'virtualLinkDescId': network.nodeId,
+                 'changeType': 'REMOVED',
+                 'networkResource': network_resource
+             })
+         ext_link_ports = []
          ports = PortInstModel.objects.filter(instid=self.nf_inst_id)
          for port in ports:
-             affected_cp.append(
-                 {'vsInstanceId': port.portid,
-                  'cpdid': port.nodeId,
-                  'changeType': 'removed',
-                  'storageResource': {'vimId': port.vimid, 'resourceId': port.resouceid,
-                                      'resourceName': port.name, 'resourceType': 'port'}})
-         affected_vs = []
+             ext_link_ports.append({
+                 'id': port.portid,
+                 'resourceHandle': {
+                     'vimConnectionId': port.vimid,
+                     'resourceId': port.resouceid,
+                     'resourceProviderId': port.name,
+                     'vimLevelResourceType': 'port'
+                 },
+                 'cpInstanceId': port.cpinstanceid
+             })
+         affected_vss = []
          vss = StorageInstModel.objects.filter(instid=self.nf_inst_id)
          for vs in vss:
-             affected_vs.append(
-                 {'vsInstanceId': vs.storageid,
-                  'vsdId': vs.nodeId,
-                  'changeType': 'removed',
-                  'storageResource': {'vimId': vs.vimid, 'resourceId': vs.resouceid,
-                                      'resourceName': vs.name, 'resourceType': 'volume'}})
+             affected_vss.append({
+                 'id': vs.storageid,
+                 'virtualStorageDescId': vs.nodeId,
+                 'changeType': 'REMOVED',
+                 'storageResource': {
+                     'vimConnectionId': vs.vimid,
+                     'resourceId': vs.resouceid,
+                     'resourceProviderId': vs.name,
+                     'vimLevelResourceType': 'volume'
+                 }
+             })
          FlavourInstModel.objects.filter(instid=self.nf_inst_id)
          SubNetworkInstModel.objects.filter(instid=self.nf_inst_id)
          self.notify_data = {
-             "status": 'result',
+             "notificationType": 'VnfLcmOperationOccurrenceNotification',
+             "notificationStatus": 'RESULT',
              "vnfInstanceId": self.nf_inst_id,
-             "operation": 'Terminal',
-             "jobId": self.job_id,
-             'affectedVnfc': affected_vnfc,
-             'affectedVirtualLink': affected_vl,
-             'affectedVirtualStorage': affected_vs,
-             'affectedCp': affected_cp}
+             "operation": 'TERMINATE',
+             "vnfLcmOpOccId": self.job_id,
+             'affectedVnfcs': affected_vnfcs,
+             'affectedVirtualLinks': affected_vls,
+             'affectedVirtualStorages': affected_vss,
+             'chengedExtConnectivity': [{
+                 'id': None,  # TODO
+                 'resourceHandle': None,  # TODO
+                 'extLinkPorts': ext_link_ports
+             }]
+         }
  
          vnfInsts = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
-         self.notify_data['VNFMID'] = vnfInsts[0].vnfminstid
+         self.notify_data['vnfmInstId'] = vnfInsts[0].vnfminstid
          logger.info('Notify request data=%s' % self.notify_data)
  
      def delete_resource(self):