1 # Copyright 2017 ZTE Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
19 from django.test import TestCase, Client
20 from rest_framework import status
22 from lcm.pub.database.models import NfInstModel
23 from lcm.pub.utils import restcall
26 class TestNsInstantiate(TestCase):
28 self.client = Client()
29 self.nsd_id = str(uuid.uuid4())
34 @mock.patch.object(restcall, 'call_req')
35 def test_create_vnf_identifier(self, mock_call_req):
36 r1 = [0, json.JSONEncoder().encode(vnfd_model_dict), '200']
37 mock_call_req.side_effect = [r1]
41 "vnfInstanceName": "vFW_01",
42 "vnfInstanceDescription": " vFW in Nanjing TIC Edge"}
43 response = self.client.post("/gvnfmapi/lcm/v1/vnf_instances", data=data, format='json')
44 self.failUnlessEqual(status.HTTP_201_CREATED, response.status_code)
45 context = json.loads(response.content)
46 self.assertTrue(NfInstModel.objects.filter(nfinstid=context['vnfInstanceId']).exists())
48 def test_instantiate_vnf(self):
50 "flavourId": "flavour_1",
51 "instantiationLevelId": "instantiationLevel_1",
61 "protocolType": "http"
64 "tenant": "tenant_vCPE",
66 "password": "vCPE_321"
68 "interfaceEndpoint": "http://10.43.21.105:80/"
77 "l2AddressData": "00:f3:43:20:a2:a3"
82 "iPAddressType": "IPv4",
83 "iPAddress": "192.168.104.2"
87 "numDynamicAddresses": 0
92 "localizationLanguage": "en_US",
93 "additionalParams": {}
95 response = self.client.post("/gvnfmapi/lcm/v1/vnf_instances/12/instantiate", data=data, format='json')
96 self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
102 'volumn_storages': [],
106 'local_storages': [],
107 'vdu_id': u'vdu_omm.001',
108 'image_file': u'opencos_sss_omm_img_release_20150723-1-disk1',
114 'support_scaling': False,
117 'storage_policy': '',
120 'availability_zone': '',
125 'inject_data_list': [],
129 'local_affinity_antiaffinity_rule': {},
130 'template_id': u'omm.001',
131 'manual_scale_select_vim': False},
132 'description': u'singleommvm'},
134 'volumn_storages': [],
138 'local_storages': [],
140 'image_file': u'sss',
146 'support_scaling': False,
149 'storage_policy': '',
152 'availability_zone': '',
157 'inject_data_list': [],
161 'local_affinity_antiaffinity_rule': {},
163 'manual_scale_select_vim': False},
164 'description': u'ompvm'},
166 'volumn_storages': [],
170 'local_storages': [],
172 'image_file': u'sss',
178 'support_scaling': False,
181 'storage_policy': '',
184 'availability_zone': '',
189 'inject_data_list': [],
193 'local_affinity_antiaffinity_rule': {},
195 'manual_scale_select_vim': False},
196 'description': u'ompvm'},
198 'volumn_storages': [],
202 'local_storages': [],
204 'image_file': u'sss',
210 'support_scaling': False,
213 'storage_policy': '',
216 'availability_zone': '',
221 'inject_data_list': [],
225 'local_affinity_antiaffinity_rule': {},
227 'manual_scale_select_vim': False},
228 'description': u'ompvm'},
230 'volumn_storages': [],
234 'local_storages': [],
236 'image_file': u'sss',
242 'support_scaling': False,
245 'storage_policy': '',
248 'availability_zone': '',
253 'inject_data_list': [],
257 'local_affinity_antiaffinity_rule': {},
258 'template_id': u'10',
259 'manual_scale_select_vim': False},
260 'description': u'ppvm'},
262 'volumn_storages': [],
266 'local_storages': [],
268 'image_file': u'sss',
274 'support_scaling': False,
277 'storage_policy': '',
280 'availability_zone': '',
285 'inject_data_list': [],
289 'local_affinity_antiaffinity_rule': {},
290 'template_id': u'11',
291 'manual_scale_select_vim': False},
292 'description': u'ppvm'},
294 'volumn_storages': [],
298 'local_storages': [],
300 'image_file': u'sss',
306 'support_scaling': False,
309 'storage_policy': '',
312 'availability_zone': '',
317 'inject_data_list': [],
321 'local_affinity_antiaffinity_rule': {},
322 'template_id': u'12',
323 'manual_scale_select_vim': False},
324 'description': u'ppvm'}],
325 'volumn_storages': [],
329 'policy_id': u'policy_scale_sss-vnf-template',
331 'policy_file': '*-vnfd.zip/*-vnf-policy.xml'},
337 'name': u'opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
339 'disk_format': u'VMDK',
340 'file_url': u'./zte-cn-sss-main-image/OMM/opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
341 'container_type': 'vm',
343 'hypervisor_type': 'kvm'},
344 'image_file_id': u'opencos_sss_omm_img_release_20150723-1-disk1'},
350 'disk_format': u'VMDK',
351 'file_url': u'./zte-cn-sss-main-image/NE/sss.vmdk',
352 'container_type': 'vm',
354 'hypervisor_type': 'kvm'},
355 'image_file_id': u'sss'}],
362 'domain_type': u'CN',
363 'version': u'v4.14.10',
364 'vmnumber_overquota_alarm': False,
367 'vnfd_version': u'V00000001',
368 'id': u'sss-vnf-template',
369 'name': u'sss-vnf-template'}}