Modify code of create flavour
authorying.yunlong <ying.yunlong@zte.com.cn>
Thu, 23 Feb 2017 06:55:45 +0000 (14:55 +0800)
committerying.yunlong <ying.yunlong@zte.com.cn>
Thu, 23 Feb 2017 06:55:45 +0000 (14:55 +0800)
Change-Id: I9336e010d6aa2e076f8f797e58e9e8ec71c0561b
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

index 256b849..66dae1e 100644 (file)
@@ -302,106 +302,149 @@ vnfd_model_dict = {
     },
     'vdus': [
         {
-            'volumn_storages': [
-
-            ],
-            'nfv_compute': {
-                'mem_size': '',
-                'num_cpus': u'2'
-            },
-            'local_storages': [
-
-            ],
-            'vdu_id': u'vdu_omm.001',
-            'image_file': u'opencos_sss_omm_img_release_20150723-1-disk1',
-            'dependencies': [
-
-            ],
-            'vls': [
-
-            ],
-            'cps': [
-
-            ],
-            'properties': {
-                'key_vdu': '',
-                'support_scaling': False,
-                'vdu_type': '',
-                'name': '',
-                'storage_policy': '',
-                'location_info': {
-                    'vimId': '',
-                    'availability_zone': '',
-                    'region': '',
-                    'dc': '',
-                    'host': '',
-                    'tenant': ''
+            "vdu_id": "vdu1Id",
+            "description": "vdu description",
+            "properties": {
+                "name": "vduinstname",
+                "vdu_type": "OMP",
+                "key_vdu": True,
+                "support_scaling": True,
+                "location_info": {
+                    "vimid": "vimid",
+                    "tenant": "tenantname",
+                    "availability_zone": "zone1",
+                    "host": "host1"
                 },
-                'inject_data_list': [
-
+                "local_affinity_antiaffinity_rule": [
+                    {
+                        "affinity_antiaffinity": "anti-affinity",
+                        "scope": "node"
+                    },
+                    {
+                        "affinity_antiaffinity": "affinity",
+                        "scope": "zone"
+                    }
                 ],
-                'watchdog': {
-                    'action': '',
-                    'enabledelay': ''
-                },
-                'local_affinity_antiaffinity_rule': {
-
+                "inject_data_list": [
+                    {
+                        "file_name": "abc.xml",
+                        "file_data": "<a>xxx</a><b>ssss</b>"
+                    }
+                ],
+                "storage_policy": "HIGH",
+                "template_id": "26",
+                "manual_scale_select_vim": False,
+                "watchdog": {
+                    "enabledelay": 600000,
+                    "action": "reset"
                 },
-                'template_id': u'omm.001',
-                'manual_scale_select_vim': False
+                "is_predefined": False,
+                "allow_scale_updown": False,
+                "inject_network_address": True,
+                "inner_hugepage_num": 100,
+                "inner_hugepage_size": "2048",
+                "action": "add"
             },
-            'description': u'singleommvm'
-        },
-        {
-            'volumn_storages': [
-
+            "image_file": "omm_image",
+            "local_storages": [
+                "local_storage_id1",
+                "local_storage_id2"
             ],
-            'nfv_compute': {
-                'mem_size': '',
-                'num_cpus': u'14'
-            },
-            'local_storages': [
-
+            "volume_storages": [
+                {
+                    "volume_storage_id": "volume_storage_id1",
+                    "location": "/usr/data",
+                    "device": "/dev/hda1"
+                }
             ],
-            'vdu_id': u'vdu_12',
-            'image_file': u'sss',
-            'dependencies': [
-
+            "dependencies": [
+                "vdu1Id",
+                "vduNId"
             ],
-            'vls': [
-
+            "nfv_compute": {
+                "num_cpus": 4,
+                "mem_size": "1024MB",
+                "cpu_frequency": "1GHz",
+                "flavor_extra_specs": {
+                    "hw: cpu_policy": "shared",
+                    "hw: cpu_max_threads": 50,
+                    "hw: cpu_sockets": 10,
+                    "hw: cpu_max_sockets": 20,
+                    "hw: cpu_max_cores": 8,
+                    "hw: cpu_threads": 30,
+                    "hw: numa_mem.0": 12288,
+                    "hw: hugepage_num": 100,
+                    "hw: high_performance": "dvs_high",
+                    "hw: numa_nodes": 1,
+                    "hw: numa_cpus.0": "2,4,8",
+                    "hw: numa_pci": True,
+                    "hw: cpu_cores": 4,
+                    "pci_passthrough: alias": "ColetoCreek: 1",
+                    "hw: mem_page_size": "large",
+                    "hw: mem_paging_mechanism": "EPT"
+                }
+            },
+            "vls": [
+                "vlId1",
+                "vlIdN"
             ],
-            'cps': [
-
+            "cps": [
+                "cpId1",
+                "cpIdN"
             ],
-            'properties': {
-                'key_vdu': '',
-                'support_scaling': False,
-                'vdu_type': '',
-                'name': '',
-                'storage_policy': '',
-                'location_info': {
-                    'vimId': '',
-                    'availability_zone': '',
-                    'region': '',
-                    'dc': '',
-                    'host': '',
-                    'tenant': ''
-                },
-                'inject_data_list': [
-
-                ],
-                'watchdog': {
-                    'action': '',
-                    'enabledelay': ''
-                },
-                'local_affinity_antiaffinity_rule': {
-
-                },
-                'template_id': u'12',
-                'manual_scale_select_vim': False
+            "scalable": {
+                "min_instances": 1,
+                "max_instances": 2,
+                "default_instances": 1
+            },
+            "interfaces": {
+                "Standard": {
+                    "create": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "configure": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "start": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "stop": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "delete": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    }
+                }
             },
-            'description': u'ppvm'
+            "artifacts": [
+                {
+                    "artifact_name": "software_version_file",
+                    "type": "tosca.artifacts.Deployment",
+                    "file": "AppSoftwares/zte-cn-xgw-V5.16.11_NFV-version.zip",
+                    "repository": "",
+                    "deploy_path": ""
+                }
+            ]
         }
     ],
     'volume_storages': [
@@ -546,7 +589,7 @@ vnfd_model_dict = {
                 "function": "control"
             },
             "vl_id": "vldId1",
-            "vdu_id": u'vdu_omm.001'
+            "vdu_id": "vdu1Id"
         }
     ],
     'local_storages': [
@@ -648,4 +691,19 @@ c6_data_create_port = {
     "ip": "10.43.38.11",
     "vnicType": "normal",
     "securityGroups": ""
+}
+c1_data_create_flavor ={
+    "returnCode": 0,
+    "vimId": "11111",
+    "vimName": "11111",
+    "id": "142019d3-bc6e-4319-9c1d-6722fc136afg",
+    "tenantId": "tenant1",
+    "name": "subnet1",
+    "vcpu": 5,
+    "memory": 2,
+    "disk": 40,
+    "ephemeral": 40,
+    "swap": 20,
+    "isPublic": True,
+    "extraSpecs": "testtt"
 }
\ No newline at end of file
index 8bec720..a666130 100644 (file)
@@ -19,7 +19,7 @@ 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
+    c5_data_create_subnet, c3_data_get_volume, c6_data_create_port, c1_data_create_flavor
 from lcm.nf.vnfs.vnf_create.inst_vnf import InstVnf
 from lcm.pub.database.models import NfInstModel, JobStatusModel, VmInstModel, NetworkInstModel, \
     SubNetworkInstModel, PortInstModel
@@ -223,14 +223,15 @@ class TestNFInstantiate(TestCase):
               '200']  # apply_grant_to_nfvo
         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]
+                                 c4_data_create_network, c5_data_create_subnet, c6_data_create_port,
+                                 c1_data_create_flavor]
 
         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, "unexpected exception")
+        self.assert_job_result(self.job_id, 255, "Undefined image(omm_image)")
 
 
 
index 5d62274..1d5825e 100644 (file)
@@ -459,14 +459,19 @@ class InstVnf(Thread):
             # self.inst_resource['flavor'].append({"vim_id": "1"}, {"res_id": "2"})
             JobUtil.add_job_status(self.job_id, 60, 'Create flavors!')
             FlavourInstModel.objects.create(
-                falavourid=str(uuid.uuid4()),
-                name=ret["name"],
-                vcpu=ret["vcpu"],
-                memory=ret["memory"],
-                extraspecs=ret["extraSpecs"],
-                is_predefined=ret["returnCode"],
-                tenant=ret["tenatId"],
-                vimid=ret["vimId"],
+                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=ignore_case_get(ret, "vcpu"),
+                memory=ignore_case_get(ret, "memory"),
+                disk=ignore_case_get(ret, "disk"),
+                ephemeral=ignore_case_get(ret, "ephemeral"),
+                swap=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!')
index de986a1..de6dc8d 100644 (file)
@@ -147,14 +147,20 @@ class FlavourInstModel(models.Model):
         db_table = 'FLAVOURINST'
 
     flavourid = models.CharField(db_column='FLAVOURID', max_length=255, primary_key=True)
+    vimid = models.CharField(db_column='VIMID', max_length=255)
+    resouceid = models.CharField(db_column='RESOURCEID', max_length=255)
     name = models.CharField(db_column='NAME', max_length=255)
-    vcpu = models.CharField(db_column='VCPU', max_length=255)
-    memory = models.CharField(db_column='MEMORY', max_length=255)
+    tenant = models.CharField(db_column='TENANT', max_length=255, null=True)
+    vcpu = models.IntegerField(db_column='VCPU')
+    memory = models.IntegerField(db_column='MEMORY')
+    disk = models.IntegerField(db_column='DISK')
+    ephemeral = models.IntegerField(db_column='EPHEMERAL')
+    swap = models.IntegerField(db_column='SWAP')
+    isPublic = models.IntegerField(db_column='ISPUBLIC')
     extraspecs = models.CharField(db_column='EXTRASPECS', max_length=255)
     instid = models.CharField(db_column='INSTID', max_length=255)
-    tenant = models.CharField(db_column='TENANT', max_length=255, null=True)
-    vmid = models.CharField(db_column='VMID', max_length=255)
     create_time = models.CharField(db_column='CREATETIME', max_length=200, null=True, blank=True)
+    is_predefined = models.IntegerField(db_column='ISPREDEFINED', default=0, null=True)
 
 class NetworkInstModel(models.Model):
     class Meta: