Update python2 to python3
[vfc/nfvo/lcm.git] / lcm / ns_vnfs / tests / tests.py
index b6c5a1b..12282fb 100644 (file)
@@ -21,18 +21,20 @@ from rest_framework import status
 from lcm.pub.database.models import NfInstModel, JobModel, NSInstModel, VmInstModel, OOFDataModel, SubscriptionModel
 from lcm.pub.exceptions import NSLCMException
 from lcm.pub.utils import restcall
-from lcm.pub.utils.jobutil import JOB_MODEL_STATUS
-from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE
+from lcm.pub.enum import JOB_MODEL_STATUS, JOB_TYPE
+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.ns_vnfs.biz.create_vnfs import CreateVnfs
+from lcm.ns_vnfs.biz.grant_vnf import GrantVnf
 from lcm.ns_vnfs.biz.heal_vnfs import NFHealService
 from lcm.ns_vnfs.biz.scale_vnfs import NFManualScaleService
 from lcm.ns_vnfs.biz.subscribe import SubscriptionDeletion
 from lcm.ns_vnfs.biz.terminate_nfs import TerminateVnfs
-from lcm.ns_vnfs.const import VNF_STATUS, INST_TYPE
+from lcm.ns_vnfs.enum import VNF_STATUS, INST_TYPE
 from lcm.ns_vnfs.biz import create_vnfs
 from lcm.ns_vnfs.biz.place_vnfs import PlaceVnfs
+from lcm.pub.msapi import resmgr
 
 
 class TestGetVnfViews(TestCase):
@@ -47,9 +49,9 @@ class TestGetVnfViews(TestCase):
 
     def test_get_vnf(self):
         response = self.client.get("/api/nslcm/v1/ns/vnfs/%s" % self.nf_inst_id)
-        self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
+        self.assertEqual(status.HTTP_200_OK, response.status_code)
         context = json.loads(response.content)
-        self.failUnlessEqual(self.nf_inst_id, context['vnfInstId'])
+        self.assertEqual(self.nf_inst_id, context['vnfInstId'])
 
 
 class TestCreateVnfViews(TestCase):
@@ -72,7 +74,8 @@ class TestCreateVnfViews(TestCase):
                             "vnf_param2": "22"
                         }),
                         "vnfminstanceid": "1",
-                        "vimId": "zte_test"
+                        # "vimId": "zte_test"
+                        "vimId": '{"cloud_owner": "VCPE", "cloud_regionid": "RegionOne"}'
                     }
                 }
             ],
@@ -90,7 +93,7 @@ class TestCreateVnfViews(TestCase):
     @mock.patch.object(CreateVnfs, 'run')
     def test_create_vnf(self, mock_run):
         response = self.client.post("/api/nslcm/v1/ns/vnfs", data=self.data)
-        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
+        self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
         context = json.loads(response.content)
         self.assertTrue(NfInstModel.objects.filter(nfinstid=context['vnfInstId']).exists())
 
@@ -237,7 +240,8 @@ class TestTerminateVnfViews(TestCase):
                                    package_id='pkg1',
                                    vnfd_model=self.vnfd_model)
         VmInstModel.objects.create(vmid="1",
-                                   vimid="zte_test",
+                                   # vimid="zte_test",
+                                   vimid='{"cloud_owner": "VCPE", "cloud_regionid": "RegionOne"}',
                                    resouceid="1",
                                    insttype=INST_TYPE.VNF,
                                    instid=self.nf_inst_id,
@@ -255,7 +259,7 @@ class TestTerminateVnfViews(TestCase):
             "gracefulTerminationTimeout": "600"}
 
         response = self.client.post("/api/nslcm/v1/ns/terminatevnf/%s" % self.nf_inst_id, data=req_data)
-        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
+        self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
 
     @mock.patch.object(restcall, 'call_req')
     @mock.patch.object(SubscriptionDeletion, 'send_subscription_deletion_request')
@@ -264,9 +268,9 @@ class TestTerminateVnfViews(TestCase):
 
         nfinst = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
         if nfinst:
-            self.failUnlessEqual(1, 1)
+            self.assertEqual(1, 1)
         else:
-            self.failUnlessEqual(1, 0)
+            self.assertEqual(1, 0)
 
         notification_types = ["VnfLcmOperationOccurrenceNotification"],
         operation_types = [
@@ -367,9 +371,9 @@ class TestTerminateVnfViews(TestCase):
         TerminateVnfs(req_data, self.nf_inst_id, job_id).run()
         nfinst = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
         if nfinst:
-            self.failUnlessEqual(1, 0)
+            self.assertEqual(1, 0)
         else:
-            self.failUnlessEqual(1, 1)
+            self.assertEqual(1, 1)
 
 
 class TestScaleVnfViews(TestCase):
@@ -684,7 +688,7 @@ class TestGetVnfmInfoViews(TestCase):
         }
 
         response = self.client.get("/api/nslcm/v1/vnfms/%s" % self.vnfm_id)
-        self.failUnlessEqual(status.HTTP_200_OK, response.status_code, response.content)
+        self.assertEqual(status.HTTP_200_OK, response.status_code, response.content)
         context = json.loads(response.content)
         self.assertEqual(expect_data, context)
 
@@ -692,7 +696,7 @@ class TestGetVnfmInfoViews(TestCase):
 class TestGetVimInfoViews(TestCase):
     def setUp(self):
         self.client = Client()
-        self.vim_id = "zte_test"
+        self.vim_id = {"cloud_owner": "VCPE", "cloud_regionid": "RegionOne"}
 
     def tearDown(self):
         pass
@@ -718,8 +722,9 @@ class TestGetVimInfoViews(TestCase):
             "createTime": ""
         }
 
-        response = self.client.get("/api/nslcm/v1/vims/%s" % self.vim_id)
-        self.failUnlessEqual(status.HTTP_200_OK, response.status_code)
+        # response = self.client.get("/api/nslcm/v1/vims/%s" % self.vim_id)
+        response = self.client.get("/api/nslcm/v1/vims/%s/%s" % (self.vim_id['cloud_owner'], self.vim_id['cloud_regionid']))
+        self.assertEqual(status.HTTP_200_OK, response.status_code)
         context = json.loads(response.content)
         self.assertEqual(expect_data["url"], context["url"])
 
@@ -727,14 +732,14 @@ class TestGetVimInfoViews(TestCase):
 class TestPlaceVnfViews(TestCase):
     def setUp(self):
         self.vnf_inst_id = "1234"
-        self.vnf_inst_name = "vG"
+        self.vnf_id = "vG"
         self.client = Client()
         OOFDataModel.objects.all().delete()
         OOFDataModel.objects.create(
             request_id="1234",
             transaction_id="1234",
             request_status="init",
-            request_module_name=self.vnf_inst_name,
+            request_module_name=self.vnf_id,
             service_resource_id=self.vnf_inst_id,
             vim_id="",
             cloud_owner="",
@@ -750,6 +755,7 @@ class TestPlaceVnfViews(TestCase):
         vdu_info_json = [{
             "vduName": "vG_0",
             "flavorName": "HPA.flavor.1",
+            "flavorId": "12345",
             "directive": []
         }]
         PlaceVnfs(vnf_place_request).extract()
@@ -770,7 +776,7 @@ class TestPlaceVnfViews(TestCase):
                 "placementSolutions": [
                     [
                         {
-                            "resourceModuleName": self.vnf_inst_name,
+                            "resourceModuleName": self.vnf_id,
                             "serviceResourceId": self.vnf_inst_id,
                             "solution": {
                                 "identifierType": "serviceInstanceId",
@@ -821,7 +827,7 @@ class TestPlaceVnfViews(TestCase):
                 "placementSolutions": [
                     [
                         {
-                            "resourceModuleName": self.vnf_inst_name,
+                            "resourceModuleName": self.vnf_id,
                             "serviceResourceId": self.vnf_inst_id,
                             "solution": {
                                 "identifierType": "serviceInstanceId",
@@ -871,7 +877,7 @@ class TestPlaceVnfViews(TestCase):
                 "placementSolutions": [
                     [
                         {
-                            "resourceModuleName": self.vnf_inst_name,
+                            "resourceModuleName": self.vnf_id,
                             "serviceResourceId": self.vnf_inst_id,
                             "solution": {
                                 "identifierType": "serviceInstanceId",
@@ -936,6 +942,39 @@ class TestPlaceVnfViews(TestCase):
         self.assertEqual(db_info[0].vdu_info, "none")
 
 
+class TestGrantVnfViews(TestCase):
+    def setUp(self):
+        self.vnf_inst_id = str(uuid.uuid4())
+        self.data = {
+            "vnfInstanceId": self.vnf_inst_id,
+            "vnfLcmOpOccId": "1234",
+            "operation": "INSTANTIATE"
+        }
+        vdu_info_dict = [{"vduName": "vg", "flavorName": "flavor_1", "flavorId": "12345", "directive": []}]
+        OOFDataModel(request_id='1234', transaction_id='1234', request_status='done', request_module_name='vg',
+                     service_resource_id=self.vnf_inst_id, vim_id='cloudOwner_casa', cloud_owner='cloudOwner',
+                     cloud_region_id='casa', vdu_info=json.dumps(vdu_info_dict)).save()
+
+    def tearDown(self):
+        OOFDataModel.objects.all().delete()
+
+    @mock.patch.object(resmgr, "grant_vnf")
+    def test_exec_grant(self, mock_grant):
+        resmgr_grant_resp = {
+            "vim": {
+                "vimId": "cloudOwner_casa",
+                "accessInfo": {
+                    "tenant": "tenantA"
+                }
+            }
+        }
+        mock_grant.return_value = resmgr_grant_resp
+        resp = GrantVnf(self.data).exec_grant()
+        self.assertEqual(resp['vimAssets']['computeResourceFlavours'][0]['vimConnectionId'], 'cloudOwner_casa')
+        self.assertEqual(resp['vimAssets']['computeResourceFlavours'][0]['resourceProviderId'], 'vg')
+        self.assertEqual(resp['vimAssets']['computeResourceFlavours'][0]['vimFlavourId'], '12345')
+
+
 vnfd_model_dict = {
     'local_storages': [],
     'vdus': [
@@ -945,13 +984,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'2'
+                'num_cpus': '2'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_omm.001',
-            'image_file': u'opencos_sss_omm_img_release_20150723-1-disk1',
+            'vdu_id': 'vdu_omm.001',
+            'image_file': 'opencos_sss_omm_img_release_20150723-1-disk1',
             'dependencies': [
 
             ],
@@ -985,10 +1024,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'omm.001',
+                'template_id': 'omm.001',
                 'manual_scale_select_vim': False
             },
-            'description': u'singleommvm'
+            'description': 'singleommvm'
         },
         {
             'volumn_storages': [
@@ -996,13 +1035,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'4'
+                'num_cpus': '4'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_1',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_1',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1036,10 +1075,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'1',
+                'template_id': '1',
                 'manual_scale_select_vim': False
             },
-            'description': u'ompvm'
+            'description': 'ompvm'
         },
         {
             'volumn_storages': [
@@ -1047,13 +1086,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'14'
+                'num_cpus': '14'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_2',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_2',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1087,10 +1126,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'2',
+                'template_id': '2',
                 'manual_scale_select_vim': False
             },
-            'description': u'ompvm'
+            'description': 'ompvm'
         },
         {
             'volumn_storages': [
@@ -1098,13 +1137,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'14'
+                'num_cpus': '14'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_3',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_3',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1138,10 +1177,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'3',
+                'template_id': '3',
                 'manual_scale_select_vim': False
             },
-            'description': u'ompvm'
+            'description': 'ompvm'
         },
         {
             'volumn_storages': [
@@ -1149,13 +1188,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'4'
+                'num_cpus': '4'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_10',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_10',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1189,10 +1228,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'10',
+                'template_id': '10',
                 'manual_scale_select_vim': False
             },
-            'description': u'ppvm'
+            'description': 'ppvm'
         },
         {
             'volumn_storages': [
@@ -1200,13 +1239,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'14'
+                'num_cpus': '14'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_11',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_11',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1240,10 +1279,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'11',
+                'template_id': '11',
                 'manual_scale_select_vim': False
             },
-            'description': u'ppvm'
+            'description': 'ppvm'
         },
         {
             'volumn_storages': [
@@ -1251,13 +1290,13 @@ vnfd_model_dict = {
             ],
             'nfv_compute': {
                 'mem_size': '',
-                'num_cpus': u'14'
+                'num_cpus': '14'
             },
             'local_storages': [
 
             ],
-            'vdu_id': u'vdu_12',
-            'image_file': u'sss',
+            'vdu_id': 'vdu_12',
+            'image_file': 'sss',
             'dependencies': [
 
             ],
@@ -1291,10 +1330,10 @@ vnfd_model_dict = {
                 'local_affinity_antiaffinity_rule': {
 
                 },
-                'template_id': u'12',
+                'template_id': '12',
                 'manual_scale_select_vim': False
             },
-            'description': u'ppvm'
+            'description': 'ppvm'
         }
     ],
     'volumn_storages': [
@@ -1305,7 +1344,7 @@ vnfd_model_dict = {
             'targets': {
 
             },
-            'policy_id': u'policy_scale_sss-vnf-template',
+            'policy_id': 'policy_scale_sss-vnf-template',
             'properties': {
                 'policy_file': '*-vnfd.zip/*-vnf-policy.xml'
             },
@@ -1316,28 +1355,28 @@ vnfd_model_dict = {
         {
             'description': '',
             'properties': {
-                'name': u'opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
+                'name': 'opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
                 'checksum': '',
-                'disk_format': u'VMDK',
-                'file_url': u'./zte-cn-sss-main-image/OMM/opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
+                'disk_format': 'VMDK',
+                'file_url': './zte-cn-sss-main-image/OMM/opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
                 'container_type': 'vm',
                 'version': '',
                 'hypervisor_type': 'kvm'
             },
-            'image_file_id': u'opencos_sss_omm_img_release_20150723-1-disk1'
+            'image_file_id': 'opencos_sss_omm_img_release_20150723-1-disk1'
         },
         {
             'description': '',
             'properties': {
-                'name': u'sss.vmdk',
+                'name': 'sss.vmdk',
                 'checksum': '',
-                'disk_format': u'VMDK',
-                'file_url': u'./zte-cn-sss-main-image/NE/sss.vmdk',
+                'disk_format': 'VMDK',
+                'file_url': './zte-cn-sss-main-image/NE/sss.vmdk',
                 'container_type': 'vm',
                 'version': '',
                 'hypervisor_type': 'kvm'
             },
-            'image_file_id': u'sss'
+            'image_file_id': 'sss'
         }
     ],
     'vls': [
@@ -1347,17 +1386,17 @@ vnfd_model_dict = {
 
     ],
     'metadata': {
-        'vendor': u'zte',
+        'vendor': 'zte',
         'is_shared': False,
         'description': '',
-        'domain_type': u'CN',
-        'version': u'v4.14.10',
+        'domain_type': 'CN',
+        'version': 'v4.14.10',
         'vmnumber_overquota_alarm': False,
         'cross_dc': False,
-        'vnf_type': u'SSS',
-        'vnfd_version': u'V00000001',
-        'id': u'sss-vnf-template',
-        'name': u'sss-vnf-template'
+        'vnf_type': 'SSS',
+        'vnfd_version': 'V00000001',
+        'id': 'sss-vnf-template',
+        'name': 'sss-vnf-template'
     }
 }
 
@@ -1723,15 +1762,19 @@ vnf_place_request = {
                              "directives": [
                                  {
                                      "id": "vG_0",
-                                     "type": "tocsa.nodes.nfv.Vdu.Compute",
+                                     "type": "tosca.nodes.nfv.Vdu.Compute",
                                      "directives": [
                                          {
                                              "type": "flavor_directives",
                                              "attributes": [
                                                  {
-                                                     "attribute_name": "flavor_name",
+                                                     "attribute_name": "flavorName",
                                                      "attribute_value": "HPA.flavor.1"
-                                                 }
+                                                 },
+                                                 {
+                                                     "attribute_name": "flavorId",
+                                                     "attribute_value": "12345"
+                                                 },
                                              ]
                                          }
                                      ]