Create VL
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnfs / tests / test_vnf_create.py
1 # Copyright 2017 ZTE Corporation.
2 #
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
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15 import json
16 import uuid
17
18 import mock
19 from django.test import TestCase, Client
20 from rest_framework import status
21
22 from lcm.pub.database.models import NfInstModel
23 from lcm.pub.utils import restcall
24
25
26 class TestNsInstantiate(TestCase):
27     def setUp(self):
28         self.client = Client()
29         self.nsd_id = str(uuid.uuid4())
30
31     def tearDown(self):
32         pass
33
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]
38
39         data = {
40             "vnfdId": "111",
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())
47
48     def test_instantiate_vnf(self):
49         data = {
50             "flavourId": "flavour_1",
51             "instantiationLevelId": "instantiationLevel_1",
52             "extVirtualLinks": [
53                 {
54                     "vlInstanceId": "1",
55                     "vim": {
56                         "vimInfoId": "1",
57                         "vimId": "1",
58                         "interfaceInfo": {
59                             "vimType": "vim",
60                             "apiVersion": "v2",
61                             "protocolType": "http"
62                         },
63                         "accessInfo": {
64                             "tenant": "tenant_vCPE",
65                             "username": "vCPE",
66                             "password": "vCPE_321"
67                         },
68                         "interfaceEndpoint": "http://10.43.21.105:80/"
69                     },
70                     "resourceId": "1246",
71                     "extCps": [
72                         {
73                             "cpdId": "11",
74                             "addresses": [
75                                 {
76                                     "addressType": "MAC",
77                                     "l2AddressData": "00:f3:43:20:a2:a3"
78                                 },
79                                 {
80                                     "addressType": "IP",
81                                     "l3AddressData": {
82                                         "iPAddressType": "IPv4",
83                                         "iPAddress": "192.168.104.2"
84                                     }
85                                 }
86                             ],
87                             "numDynamicAddresses": 0
88                         }
89                     ]
90                 }
91             ],
92             "localizationLanguage": "en_US",
93             "additionalParams": {}
94         }
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)
97
98 vnfd_model_dict = {
99     'local_storages': [],
100     'vdus': [
101         {
102             'volumn_storages': [],
103             'nfv_compute': {
104                 'mem_size': '',
105                 'num_cpus': u'2'},
106             'local_storages': [],
107             'vdu_id': u'vdu_omm.001',
108             'image_file': u'opencos_sss_omm_img_release_20150723-1-disk1',
109             'dependencies': [],
110             'vls': [],
111             'cps': [],
112             'properties': {
113                 'key_vdu': '',
114                 'support_scaling': False,
115                 'vdu_type': '',
116                 'name': '',
117                 'storage_policy': '',
118                 'location_info': {
119                     'vimId': '',
120                     'availability_zone': '',
121                     'region': '',
122                     'dc': '',
123                     'host': '',
124                     'tenant': ''},
125                 'inject_data_list': [],
126                 'watchdog': {
127                     'action': '',
128                     'enabledelay': ''},
129                 'local_affinity_antiaffinity_rule': {},
130                 'template_id': u'omm.001',
131                 'manual_scale_select_vim': False},
132             'description': u'singleommvm'},
133         {
134             'volumn_storages': [],
135             'nfv_compute': {
136                 'mem_size': '',
137                 'num_cpus': u'4'},
138             'local_storages': [],
139             'vdu_id': u'vdu_1',
140             'image_file': u'sss',
141             'dependencies': [],
142             'vls': [],
143             'cps': [],
144             'properties': {
145                 'key_vdu': '',
146                 'support_scaling': False,
147                 'vdu_type': '',
148                 'name': '',
149                 'storage_policy': '',
150                 'location_info': {
151                     'vimId': '',
152                     'availability_zone': '',
153                     'region': '',
154                     'dc': '',
155                     'host': '',
156                     'tenant': ''},
157                 'inject_data_list': [],
158                 'watchdog': {
159                     'action': '',
160                     'enabledelay': ''},
161                 'local_affinity_antiaffinity_rule': {},
162                 'template_id': u'1',
163                 'manual_scale_select_vim': False},
164             'description': u'ompvm'},
165         {
166             'volumn_storages': [],
167             'nfv_compute': {
168                 'mem_size': '',
169                 'num_cpus': u'14'},
170             'local_storages': [],
171             'vdu_id': u'vdu_2',
172             'image_file': u'sss',
173             'dependencies': [],
174             'vls': [],
175             'cps': [],
176             'properties': {
177                 'key_vdu': '',
178                 'support_scaling': False,
179                 'vdu_type': '',
180                 'name': '',
181                 'storage_policy': '',
182                 'location_info': {
183                     'vimId': '',
184                     'availability_zone': '',
185                     'region': '',
186                     'dc': '',
187                     'host': '',
188                     'tenant': ''},
189                 'inject_data_list': [],
190                 'watchdog': {
191                     'action': '',
192                     'enabledelay': ''},
193                 'local_affinity_antiaffinity_rule': {},
194                 'template_id': u'2',
195                 'manual_scale_select_vim': False},
196             'description': u'ompvm'},
197         {
198             'volumn_storages': [],
199             'nfv_compute': {
200                 'mem_size': '',
201                 'num_cpus': u'14'},
202             'local_storages': [],
203             'vdu_id': u'vdu_3',
204             'image_file': u'sss',
205             'dependencies': [],
206             'vls': [],
207             'cps': [],
208             'properties': {
209                 'key_vdu': '',
210                 'support_scaling': False,
211                 'vdu_type': '',
212                 'name': '',
213                 'storage_policy': '',
214                 'location_info': {
215                     'vimId': '',
216                     'availability_zone': '',
217                     'region': '',
218                     'dc': '',
219                     'host': '',
220                     'tenant': ''},
221                 'inject_data_list': [],
222                 'watchdog': {
223                     'action': '',
224                     'enabledelay': ''},
225                 'local_affinity_antiaffinity_rule': {},
226                 'template_id': u'3',
227                 'manual_scale_select_vim': False},
228             'description': u'ompvm'},
229         {
230             'volumn_storages': [],
231             'nfv_compute': {
232                 'mem_size': '',
233                 'num_cpus': u'4'},
234             'local_storages': [],
235             'vdu_id': u'vdu_10',
236             'image_file': u'sss',
237             'dependencies': [],
238             'vls': [],
239             'cps': [],
240             'properties': {
241                 'key_vdu': '',
242                 'support_scaling': False,
243                 'vdu_type': '',
244                 'name': '',
245                 'storage_policy': '',
246                 'location_info': {
247                     'vimId': '',
248                     'availability_zone': '',
249                     'region': '',
250                     'dc': '',
251                     'host': '',
252                     'tenant': ''},
253                 'inject_data_list': [],
254                 'watchdog': {
255                     'action': '',
256                     'enabledelay': ''},
257                 'local_affinity_antiaffinity_rule': {},
258                 'template_id': u'10',
259                 'manual_scale_select_vim': False},
260             'description': u'ppvm'},
261         {
262             'volumn_storages': [],
263             'nfv_compute': {
264                 'mem_size': '',
265                 'num_cpus': u'14'},
266             'local_storages': [],
267             'vdu_id': u'vdu_11',
268             'image_file': u'sss',
269             'dependencies': [],
270             'vls': [],
271             'cps': [],
272             'properties': {
273                 'key_vdu': '',
274                 'support_scaling': False,
275                 'vdu_type': '',
276                 'name': '',
277                 'storage_policy': '',
278                 'location_info': {
279                     'vimId': '',
280                     'availability_zone': '',
281                     'region': '',
282                     'dc': '',
283                     'host': '',
284                     'tenant': ''},
285                 'inject_data_list': [],
286                 'watchdog': {
287                     'action': '',
288                     'enabledelay': ''},
289                 'local_affinity_antiaffinity_rule': {},
290                 'template_id': u'11',
291                 'manual_scale_select_vim': False},
292             'description': u'ppvm'},
293         {
294             'volumn_storages': [],
295             'nfv_compute': {
296                 'mem_size': '',
297                 'num_cpus': u'14'},
298             'local_storages': [],
299             'vdu_id': u'vdu_12',
300             'image_file': u'sss',
301             'dependencies': [],
302             'vls': [],
303             'cps': [],
304             'properties': {
305                 'key_vdu': '',
306                 'support_scaling': False,
307                 'vdu_type': '',
308                 'name': '',
309                 'storage_policy': '',
310                 'location_info': {
311                     'vimId': '',
312                     'availability_zone': '',
313                     'region': '',
314                     'dc': '',
315                     'host': '',
316                     'tenant': ''},
317                 'inject_data_list': [],
318                 'watchdog': {
319                     'action': '',
320                     'enabledelay': ''},
321                 'local_affinity_antiaffinity_rule': {},
322                 'template_id': u'12',
323                 'manual_scale_select_vim': False},
324             'description': u'ppvm'}],
325     'volumn_storages': [],
326     'policies': {
327         'scaling': {
328             'targets': {},
329             'policy_id': u'policy_scale_sss-vnf-template',
330             'properties': {
331                 'policy_file': '*-vnfd.zip/*-vnf-policy.xml'},
332             'description': ''}},
333     'image_files': [
334         {
335             'description': '',
336             'properties': {
337                 'name': u'opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
338                 'checksum': '',
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',
342                 'version': '',
343                 'hypervisor_type': 'kvm'},
344             'image_file_id': u'opencos_sss_omm_img_release_20150723-1-disk1'},
345         {
346             'description': '',
347             'properties': {
348                 'name': u'sss.vmdk',
349                 'checksum': '',
350                 'disk_format': u'VMDK',
351                 'file_url': u'./zte-cn-sss-main-image/NE/sss.vmdk',
352                 'container_type': 'vm',
353                 'version': '',
354                 'hypervisor_type': 'kvm'},
355             'image_file_id': u'sss'}],
356     'vls': [],
357     'cps': [],
358     'metadata': {
359         'vendor': u'zte',
360         'is_shared': False,
361         'description': '',
362         'domain_type': u'CN',
363         'version': u'v4.14.10',
364         'vmnumber_overquota_alarm': False,
365         'cross_dc': False,
366         'vnf_type': u'SSS',
367         'vnfd_version': u'V00000001',
368         'id': u'sss-vnf-template',
369         'name': u'sss-vnf-template'}}