summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorying.yunlong <ying.yunlong@zte.com.cn>2017-02-23 14:55:45 +0800
committerying.yunlong <ying.yunlong@zte.com.cn>2017-02-23 14:55:45 +0800
commitd672544f4b8c9a8b181b0f7feb6cf4ff710e0362 (patch)
treebe3364599a73c76706eb092b18c8b842530fe036
parentaf92e41531478354fe089d81822cc7ed82cc59c1 (diff)
Modify code of create flavour
Change-Id: I9336e010d6aa2e076f8f797e58e9e8ec71c0561b Issue-Id: GVNFM-34 Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
-rw-r--r--lcm/lcm/nf/vnfs/const.py240
-rw-r--r--lcm/lcm/nf/vnfs/tests/test_vnf_create.py7
-rw-r--r--lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py21
-rw-r--r--lcm/lcm/pub/database/models.py14
4 files changed, 176 insertions, 106 deletions
diff --git a/lcm/lcm/nf/vnfs/const.py b/lcm/lcm/nf/vnfs/const.py
index 256b849e..66dae1ea 100644
--- a/lcm/lcm/nf/vnfs/const.py
+++ b/lcm/lcm/nf/vnfs/const.py
@@ -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
diff --git a/lcm/lcm/nf/vnfs/tests/test_vnf_create.py b/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
index 8bec7201..a666130c 100644
--- a/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
+++ b/lcm/lcm/nf/vnfs/tests/test_vnf_create.py
@@ -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)")
diff --git a/lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py b/lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py
index 5d622741..1d5825e9 100644
--- a/lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py
+++ b/lcm/lcm/nf/vnfs/vnf_create/inst_vnf.py
@@ -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!')
diff --git a/lcm/lcm/pub/database/models.py b/lcm/lcm/pub/database/models.py
index de986a11..de6dc8df 100644
--- a/lcm/lcm/pub/database/models.py
+++ b/lcm/lcm/pub/database/models.py
@@ -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: