Modify code of create vm
authorying.yunlong <ying.yunlong@zte.com.cn>
Thu, 23 Feb 2017 08:19:40 +0000 (16:19 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Thu, 23 Feb 2017 08:19:40 +0000 (16:19 +0800)
Change-Id: Iaa31228ce2c0c0dfb39e3f4d0a277522f5b6aa47
Issue-Id: GVNFM-34
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
lcm/lcm/nf/vnfs/const.py
lcm/lcm/nf/vnfs/tests/test_vnf_create.py
lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py
lcm/lcm/pub/database/models.py
lcm/lcm/pub/vimapi/adaptor.py

index 66dae1e..9adb4ed 100644 (file)
@@ -345,14 +345,14 @@ vnfd_model_dict = {
                 "inner_hugepage_size": "2048",
                 "action": "add"
             },
-            "image_file": "omm_image",
+            "image_file": u'sss',
             "local_storages": [
                 "local_storage_id1",
                 "local_storage_id2"
             ],
             "volume_storages": [
                 {
-                    "volume_storage_id": "volume_storage_id1",
+                    "volume_storage_id": "volume_storage1",
                     "location": "/usr/data",
                     "device": "/dev/hda1"
                 }
@@ -386,11 +386,9 @@ vnfd_model_dict = {
             },
             "vls": [
                 "vlId1",
-                "vlIdN"
             ],
             "cps": [
                 "cpId1",
-                "cpIdN"
             ],
             "scalable": {
                 "min_instances": 1,
@@ -555,7 +553,7 @@ vnfd_model_dict = {
     ],
     'cps': [
         {
-            "cp_id": "cpId",
+            "cp_id": "cpId1",
             "description": "",
             "properties": {
                 "name": "",
@@ -692,7 +690,7 @@ c6_data_create_port = {
     "vnicType": "normal",
     "securityGroups": ""
 }
-c1_data_create_flavor ={
+c7_data_create_flavor ={
     "returnCode": 0,
     "vimId": "11111",
     "vimName": "11111",
@@ -706,4 +704,43 @@ c1_data_create_flavor ={
     "swap": 20,
     "isPublic": True,
     "extraSpecs": "testtt"
-}
\ No newline at end of file
+}
+
+c8_data_list_image = {
+    "vimid": "",
+    "vimname": "",
+    "imageList": [
+        {
+            "status": "active",
+            "id": "5e2757c1-f846-4727-915c-9a872553ed75",
+            "size": 862016,
+            "name": u'sss.vmdk'
+        }
+    ]
+}
+c9_data_create_vm = {
+    "returnCode": 1,
+    "id": "3c9eebdbbfd345658269340b9ea6fb73",
+    "name": "vm1",
+    "vimId": "11111",
+    "vimName": "11111",
+    "tenantId": "tenant1",
+    "boot": "boot_1",
+    "nicArray": "dfdf",
+    "volumeArray": "dfdf",
+    "availabilityZone": "fdvfdv",
+    "flavorId": "fdvfdv",
+    "metadata": "fdvfdv",
+    "securityGroups": "fdvfdv",
+    "serverGroup": "fdvfdv",
+    "status": "ACTIVE"
+}
+c10_data_get_vm = {
+    "returnCode": 1,
+    "id": "3c9eebdbbfd345658269340b9ea6fb73",
+    "name": "vm1",
+    "vimId": "11111",
+    "vimName": "11111",
+    "tenantId": "tenant1",
+    "status": "ACTIVE"
+}
index a666130..36f4d2e 100644 (file)
@@ -19,14 +19,14 @@ from django.test import TestCase, Client
 from rest_framework import status
 
 from lcm.nf.vnfs.const import vnfd_rawdata, c1_data_get_tenant_id, c4_data_create_network, c2_data_create_volume, \
-    c5_data_create_subnet, c3_data_get_volume, c6_data_create_port, c1_data_create_flavor
+    c5_data_create_subnet, c3_data_get_volume, c6_data_create_port, c7_data_create_flavor, c8_data_list_image, c9_data_create_vm, \
+    c10_data_get_vm
 from lcm.nf.vnfs.vnf_create.inst_vnf import InstVnf
 from lcm.pub.database.models import NfInstModel, JobStatusModel, VmInstModel, NetworkInstModel, \
     SubNetworkInstModel, PortInstModel
 from lcm.pub.utils import restcall
 from lcm.pub.utils.jobutil import JobUtil
 from lcm.pub.utils.timeutil import now_time
-from lcm.pub.vimapi import adaptor
 from lcm.pub.vimapi import api
 
 
@@ -224,14 +224,14 @@ class TestNFInstantiate(TestCase):
         mock_call_req.side_effect = [r1, r2, r3]
         mock_call.side_effect = [c1_data_get_tenant_id, c2_data_create_volume, c3_data_get_volume,
                                  c4_data_create_network, c5_data_create_subnet, c6_data_create_port,
-                                 c1_data_create_flavor]
+                                 c7_data_create_flavor, c8_data_list_image, c9_data_create_vm, c10_data_get_vm]
 
         self.nf_inst_id = '1111'
         self.job_id = JobUtil.create_job('NF', 'CREATE', self.nf_inst_id)
         JobUtil.add_job_status(self.job_id, 0, "INST_VNF_READY")
         data = inst_req_data
         InstVnf(data, nf_inst_id=self.nf_inst_id, job_id=self.job_id).run()
-        self.assert_job_result(self.job_id, 255, "Undefined image(omm_image)")
+        self.assert_job_result(self.job_id, 100, "Instantiate Vnf success.")
 
 
 
index 1d5825e..0727844 100644 (file)
@@ -90,7 +90,7 @@ class InstVnf(Thread):
             self.inst_pre()
             self.apply_grant()
             self.create_res()
-            self.lcm_notify()
+            self.lcm_notify()
             JobUtil.add_job_status(self.job_id, 100, "Instantiate Vnf success.")
             # is_exist = JobStatusModel.objects.filter(jobid=self.job_id).exists()
             # logger.debug("check_ns_inst_name_exist::is_exist=%s" % is_exist)
@@ -482,12 +482,21 @@ class InstVnf(Thread):
             JobUtil.add_job_status(self.job_id, 70, 'Create vms!')
             VmInstModel.objects.create(
                 vmid=str(uuid.uuid4()),
-                vimid=ret["vimId"],
-                resouceid=ret["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=ignore_case_get(ret, "availabilityZone"),
+                flavor_id=ignore_case_get(ret, "flavorId"),
+                security_groups=ignore_case_get(ret, "securityGroups"),
+                operationalstate=ignore_case_get(ret, "status"),
                 insttype=0,
-                instid=self.nf_inst_id,
-                vmname=ret["name"],
-                is_predefined=ret["returnCode"])
+                is_predefined=ignore_case_get(ret, "returnCode"),
+                instid=self.nf_inst_id)
 
     # def do_rollback(self, args_=None):
     #     logger.error('error info : %s' % args_)
index de6dc8d..a15a7df 100644 (file)
@@ -120,17 +120,21 @@ class VmInstModel(models.Model):
 
     vmid = models.CharField(db_column='VMID', primary_key=True, max_length=255)
     vimid = models.CharField(db_column='VIMID', max_length=255)
+    tenant = models.CharField(db_column='TENANT', max_length=255, null=True)
     resouceid = models.CharField(db_column='RESOURCEID', max_length=255)
-    insttype = models.IntegerField(db_column='INSTTYPE')
-    instid = models.CharField(db_column='INSTID', max_length=255)
     vmname = models.CharField(db_column='VMNAME', max_length=255)
-    operationalstate = models.IntegerField(db_column='OPERATIONALSTATE', null=True)
-    zoneid = models.CharField(db_column='ZONEID', max_length=255, null=True)
-    tenant = models.CharField(db_column='TENANT', max_length=255, null=True)
-    hostid = models.CharField(db_column='HOSTID', max_length=255, null=True)
-    detailinfo = models.TextField(db_column='DETAILINFO', max_length=8192, null=True)
+    nic_array = models.CharField(db_column='NICARRAY', max_length=255)
+    metadata = models.CharField(db_column='METADATA', max_length=255)
+    volume_array = models.CharField(db_column='VOLUMEARRAY', max_length=255)
+    server_group = models.CharField(db_column='SERVERGROUP', max_length=255)
+    availability_zone = models.CharField(db_column='AVAILABILITYZONE', max_length=255)
+    flavor_id = models.CharField(db_column='FLAVORID', max_length=255)
+    security_groups = models.CharField(db_column='SECURITYGROUPS', max_length=255)
+    operationalstate = models.CharField(db_column='OPERATIONALSTATE', max_length=255, null=True)
+    insttype = models.IntegerField(db_column='INSTTYPE')
     is_predefined = models.IntegerField(db_column='ISPREDEFINED', default=0, null=True)
     create_time = models.CharField(db_column='CREATETIME', max_length=200, null=True, blank=True)
+    instid = models.CharField(db_column='INSTID', max_length=255)
 
 class VNFCInstModel(models.Model):
     class Meta:
index 593d779..4b15670 100644 (file)
@@ -277,7 +277,7 @@ def create_vm(vim_cache, res_cache, data, vm, do_notify, res_type):
     opt_vm_status = "Timeout"
     retry_count, max_retry_count = 0, 100
     while retry_count < max_retry_count:
-        vm_info = api.get_vm(vim_id, vm_id)
+        vm_info = api.get_vm(vim_id, tenant_id, vm_id)
         if vm_info["status"].upper() == "ACTIVE":
             logger.debug("Vm(%s) is active", vim_id)
             return