refactor codes for vnflcm
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / const.py
1 # Copyright (C) 2019 ZTE. All Rights Reserved.
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 import json
15
16 inst_req_data = {
17     "flavourId": "flavour_1",
18     "instantiationLevelId": "instantiationLevel_1",
19     "extVirtualLinks": [
20         {
21             "id": "extVirtualLink_1",
22             "vimConnectionId": "vimConnection_1",
23             "resourceProviderId": "resourceProvider_1",
24             "resourceId": "resource_1",
25             "resourceSubnetId": "resourceSubnet_1",
26             "extCps": [
27                 {
28                     "cpdId": "cpd_1",
29                     "cpConfig": [
30                         {
31                             "cpInstanceId": "cpInstance_1",
32                             "linkPortId": "linkPort_1",
33                             "cpProtocolData": [
34                                 {
35                                     "layerProtocol": "IP_OVER_ETHERNET",
36                                     "ipOverEthernet": {
37                                         "macAddress": "00:f3:43:20:a2:a3",
38                                         "ipAddresses": [
39                                             {
40                                                 "type": "IPV4",
41                                                 "fixedAddresses": ["192.168.104.2", ],
42                                                 "numDynamicAddresses": 0,
43                                                 "addressRange": None,
44                                                 "subnetId": "subnet_1",
45                                             }
46                                         ]
47                                     }
48                                 }
49                             ]
50                         }
51                     ]
52                 }
53             ],
54             "extLinkPorts": [
55                 {
56                     "id": "extLinkPort_1",
57                     "resourceHandle": {
58                         "vimConnectionId": "vimConnection_1",
59                         "resourceProviderId": "resourceProvider_1",
60                         "resourceId": "resource_1",
61                         "vimLevelResourceType": "vimLevelResourceType_1",
62                     }
63                 }
64             ]
65         }
66     ],
67     "extManagedVirtualLinks": [
68         {
69             "id": 'extManagedVirtualLink_1',
70             "virtualLinkDescId": 'virtualLinkDesc_1',
71             "vimConnectionId": 'vimConnection_1',
72             "resourceProviderId": 'resourceProvider_1',
73             "resourceId": 'resource_1',
74         }
75     ],
76     "vimConnectionInfo": [
77         {
78             "id": 'vimConnection_1',
79             "vimId": 'vim_1',
80             "vimType": 'vim',
81             "interfaceInfo": {
82                 "apiVersion": "apiVersion_1",
83                 "protocolType": "http"
84             },
85             "accessInfo": {
86                 "tenant": "tenant_vCPE",
87                 "username": "vCPE",
88                 "password": "vCPE_321",
89             },
90             "extra": None,
91         }
92     ],
93     "localizationLanguage": "en_US",
94     "additionalParams": {
95         "vimId": "vim_1",
96         "key1": "test1",
97         "key2": "test2",
98     }
99 }
100
101
102 vnfd_model_dict = {
103     'metadata': {
104         'vendor': u'zte',
105         'is_shared': False,
106         'description': '',
107         'domain_type': u'CN',
108         'version': u'v4.14.10',
109         'vmnumber_overquota_alarm': False,
110         'cross_dc': False,
111         'vnf_type': u'SSS',
112         'vnfd_version': u'V00000001',
113         'id': u'sss-vnf-template',
114         'name': u'sss-vnf-template'
115     },
116     'vdus': [
117         {
118             "vdu_id": "vdu1Id",
119             "description": "vdu description",
120             "properties": {
121                 "name": "vduinstname",
122                 "vdu_type": "OMP",
123                 "key_vdu": True,
124                 "support_scaling": True,
125                 "location_info": {
126                     "vimid": "vimid",
127                     "tenant": "tenantname",
128                     "availability_zone": "zone1",
129                     "host": "host1"
130                 },
131                 "local_affinity_antiaffinity_rule": [
132                     {
133                         "affinity_antiaffinity": "anti-affinity",
134                         "scope": "node"
135                     },
136                     {
137                         "affinity_antiaffinity": "affinity",
138                         "scope": "zone"
139                     }
140                 ],
141                 "inject_data_list": [
142                     {
143                         "file_name": "abc.xml",
144                         "file_data": "<a>xxx</a><b>ssss</b>"
145                     }
146                 ],
147                 "storage_policy": "HIGH",
148                 "template_id": "26",
149                 "manual_scale_select_vim": False,
150                 "watchdog": {
151                     "enabledelay": 600000,
152                     "action": "reset"
153                 },
154                 "is_predefined": False,
155                 "allow_scale_updown": False,
156                 "inject_network_address": True,
157                 "inner_hugepage_num": 100,
158                 "inner_hugepage_size": "2048",
159                 "action": "add"
160             },
161             "image_file": u'sss',
162             "local_storages": [
163                 "local_storage_id1",
164                 "local_storage_id2"
165             ],
166             "virtual_storages": [
167                 {
168                     "virtual_storage_id": "volume_storage1",
169                     "location": "/usr/data",
170                     "device": "/dev/hda1"
171                 }
172             ],
173             "dependencies": [
174                 "vdu1Id",
175                 "vduNId"
176             ],
177             "nfv_compute": {
178                 "num_cpus": 4,
179                 "mem_size": "1 GB",
180                 "cpu_frequency": "1GHz",
181                 "flavor_extra_specs": {
182                     "hw: cpu_policy": "shared",
183                     "hw: cpu_max_threads": 50,
184                     "hw: cpu_sockets": 10,
185                     "hw: cpu_max_sockets": 20,
186                     "hw: cpu_max_cores": 8,
187                     "hw: cpu_threads": 30,
188                     "hw: numa_mem.0": 12288,
189                     "hw: hugepage_num": 100,
190                     "hw: high_performance": "dvs_high",
191                     "hw: numa_nodes": 1,
192                     "hw: numa_cpus.0": "2,4,8",
193                     "hw: numa_pci": True,
194                     "hw: cpu_cores": 4,
195                     "pci_passthrough: alias": "ColetoCreek: 1",
196                     "hw: mem_page_size": "large",
197                     "hw: mem_paging_mechanism": "EPT"
198                 }
199             },
200             "vls": [
201                 "vlId1",
202             ],
203             "cps": [
204                 "cpId1",
205             ],
206             "scalable": {
207                 "min_instances": 1,
208                 "max_instances": 2,
209                 "default_instances": 1
210             },
211             "interfaces": {
212                 "Standard": {
213                     "create": {
214                         "implementation": "<implementationScript>",
215                         "inputs": {
216                             "param1Name": "value1",
217                             "paramNName": "valueN"
218                         }
219                     },
220                     "configure": {
221                         "implementation": "<implementationScript>",
222                         "inputs": {
223                             "param1Name": "value1",
224                             "paramNName": "valueN"
225                         }
226                     },
227                     "start": {
228                         "implementation": "<implementationScript>",
229                         "inputs": {
230                             "param1Name": "value1",
231                             "paramNName": "valueN"
232                         }
233                     },
234                     "stop": {
235                         "implementation": "<implementationScript>",
236                         "inputs": {
237                             "param1Name": "value1",
238                             "paramNName": "valueN"
239                         }
240                     },
241                     "delete": {
242                         "implementation": "<implementationScript>",
243                         "inputs": {
244                             "param1Name": "value1",
245                             "paramNName": "valueN"
246                         }
247                     }
248                 }
249             },
250             "artifacts": [
251             ]
252         }
253     ],
254     'volume_storages': [
255         {
256             "volume_storage_id": "volume_storage1",
257             "description": "",
258             "properties": {
259                 "size": "\"100 GB\"",
260                 "volume_id": "",
261                 "volume_name": "volumeStorage1",
262                 "custom_volume_type": "type1",
263                 "disk_type": "data",
264                 "delete_on_termination_vm": True,
265                 "location_info": {
266                     "vimid": "vimid_1",
267                     "tenant": "tenantname_1",
268                     "availability_zone": "zone1"
269                 },
270                 "is_predefined": False,
271                 "is_shared": False
272             },
273             "image_file": [
274                 "volume_image"
275             ]
276         }
277     ],
278     'policies': {
279         'scaling': {
280             'targets': {
281
282             },
283             'policy_id': u'policy_scale_sss-vnf-template',
284             'properties': {
285                 'policy_file': '*-vnfd.zip/*-vnf-policy.xml'
286             },
287             'description': ''
288         }
289     },
290     'image_files': [
291         {
292             'description': '',
293             'properties': {
294                 'name': u'opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
295                 'checksum': '',
296                 'disk_format': u'VMDK',
297                 'file_url': u'./zte-cn-sss-main-image/OMM/opencos_sss_omm_img_release_20150723-1-disk1.vmdk',
298                 'container_type': 'vm',
299                 'version': '',
300                 'hypervisor_type': 'kvm'
301             },
302             'image_file_id': u'opencos_sss_omm_img_release_20150723-1-disk1'
303         },
304         {
305             'description': '',
306             'properties': {
307                 'name': u'sss.vmdk',
308                 'checksum': '',
309                 'disk_format': u'VMDK',
310                 'file_url': u'./zte-cn-sss-main-image/NE/sss.vmdk',
311                 'container_type': 'vm',
312                 'version': '',
313                 'hypervisor_type': 'kvm'
314             },
315             'image_file_id': u'sss'
316         }
317     ],
318     'vls': [
319         {
320             "vl_id": "vldId1",
321             "description": "",
322             "properties": {
323                 "name": "umac_241_control",
324                 "network_name": "umac_control",
325                 "is_predefined": False,
326                 "vendor": "zte",
327                 "netmask": "255.255.255.0",
328                 "mtu": 1500,
329                 "network_type": "vlan",
330                 "physical_network": "phynet01",
331                 "segmentation_id": "30",
332                 "vlan_transparent": False,
333                 "vds_name": "vds1",
334                 "cidr": "192.168.199.0/24",
335                 "ip_version": 4,
336                 "gateway_ip": "192.168.199.1",
337                 "dhcp_enabled": False,
338                 "dns_nameservers": [
339                     "192.168.0.4",
340                     "192.168.0.10"
341                 ],
342                 "start_ip": "192.168.199.2",
343                 "end_ip": "192.168.199.254",
344                 "host_routes": [
345                     {
346                         "destination": "10.43.26.0/24",
347                         "nexthop": "10.41.23.1"
348                     }
349                 ],
350                 "location_info": {
351                     "vimid": "vimid_1",
352                     "tenant": "tenantname_1"
353                 },
354                 "cloud_type": "IaaS"
355             },
356             "route_id": "router01",
357             "route_external": False
358         }
359     ],
360     'cps': [
361         {
362             "cp_id": "cpId1",
363             "description": "",
364             "properties": {
365                 "name": "",
366                 "mac_address": "00:d9:00:82:11:e1",
367                 "ip_address:": "192.168.1.21",
368                 "ip_range_start": "192.168.1.20",
369                 "ip_range_end": "192.168.1.29",
370                 "floating_ip_address": {
371                     "external_network": "extnet01",
372                     "ip_address": "10.43.53.23"
373                 },
374                 "service_ip_address": "192.168.1.23",
375                 "order": 1,
376                 "bandwidth": 1000,
377                 "vnic_type": "normal",
378                 "allowed_address_pairs": [
379                     {
380                         "ip": "192.168.1.13",
381                         "mac": "00:f3:43:20:a2:a3"
382                     }
383                 ],
384                 "bond": "none",
385                 "bond_index": 1,
386                 "macbond": "00:d9:00:82:11:d1",
387                 "sfc_encapsulation": "",
388                 "direction": "",
389                 "gateway_ip": "192.168.199.1",
390                 "netmask": "255.255.255.0",
391                 "interface_name": "fe-01-02",
392                 "is_virtual": False,
393                 "function": "control"
394             },
395             "vl_id": "vldId1",
396             "vdu_id": "vdu1Id"
397         }
398     ],
399     'local_storages': [
400
401     ],
402 }
403
404 # get_tenant_id
405 c1_data_get_tenant_id = {
406     "tenants": [
407         {
408             "id": "1",
409             "name": "chinamobile"
410         }
411     ]
412 }
413 c1_data_get_tenant_id_1 = {
414     "tenants": [
415         {
416             "id": "1",
417             "name": "tenantname"
418         }
419     ]
420 }
421
422
423 # create_volume
424 c2_data_create_volume = {
425     "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
426     "name": "volume1",
427     "returnCode": 1,
428     "vimId": "vim_volume_1",
429     "vimName": "vim_volume_1",
430     "tenantId": "vim_volume_1",
431     "volumeType": "123",
432     "availabilityZone": "availabilityZone",
433     "status": "availuable",
434     "createTime": "2015-12-02T06:39:40.000000",
435     "type": None,
436     "size": 40
437 }
438
439 # get_volume
440 c3_data_get_volume = {
441     "status": "available",
442     "name": "wangsong",
443     "attachments": [
444         {
445             "device": "/dev/vdc",
446             "serverId": "3030e666-528e-4954-88f5-cc21dab1262b",
447             "volumeId": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
448             "hostName": None,
449             "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31"
450         }
451     ],
452     "createTime": "2015-12-02T06:39:40.000000",
453     "type": None,
454     "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
455     "size": 40
456 }
457
458 # create_network
459 c4_data_create_network = {
460     "returnCode": 0,
461     "vimId": "11111",
462     "vimName": "11111",
463     "status": "ACTIVE",
464     "id": "3c9eebdbbfd345658269340b9ea6fb73",
465     "name": "net1",
466     "tenantId": "tenant1",
467     "networkName": "ommnet",
468     "shared": True,
469     "vlanTransparent": True,
470     "networkType": "vlan",
471     "segmentationId": 202,
472     "physicalNetwork": "physnet1",
473     "routerExternal": False
474 }
475
476 # create_subnet
477 c5_data_create_subnet = {
478     "returnCode": 0,
479     "vimId": "11111",
480     "vimName": "11111",
481     "status": " ACTIVE",
482     "id": "d62019d3-bc6e-4319-9c1d-6722fc136a23",
483     "tenantId": "tenant1",
484     "networkId": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
485     "networkName": "networkName",
486     "name": "subnet1",
487     "cidr": "10.43.35.0/24",
488     "ipVersion": 4,
489     "enableDhcp": 1,
490     "gatewayIp": "10.43.35.1",
491     "dnsNameservers": [],
492     "allocationPools": [
493         {
494             "start": "192.168.199.2",
495             "end": "192.168.199.254"
496         }
497     ],
498     "hostRoutes": []
499 }
500
501 # create_ports
502 c6_data_create_port = {
503     "returnCode": 0,
504     "vimId": "11111",
505     "vimName": "11111",
506     "status": " ACTIVE",
507     "id": " 872019d3-bc6e-4319-9c1d-6722fc136afg",
508     "tenantId": "tenant1",
509     "name": "subnet1",
510     "networkId": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
511     "networkName": "networkName",
512     "subnetId": "d62019d3-bc6e-4319-9c1d-6722fc136a23",
513     "subnetName": "subnet1",
514     "macAddress": "212.12.61.23",
515     "ip": "10.43.38.11",
516     "vnicType": "direct",
517     "securityGroups": ""
518 }
519
520 # create_flavor
521 c7_data_create_flavor = {
522     "returnCode": 0,
523     "vimId": "11111",
524     "vimName": "11111",
525     "id": "142019d3-bc6e-4319-9c1d-6722fc136afg",
526     "tenantId": "tenant1",
527     "name": "subnet1",
528     "vcpu": 5,
529     "memory": 2,
530     "disk": 40,
531     "ephemeral": 40,
532     "swap": 20,
533     "isPublic": True,
534     "extraSpecs": "testtt"
535 }
536
537 # list_image
538 c8_data_list_image = {
539     "vimid": "",
540     "vimname": "",
541     "images": [
542         {
543             "status": "active",
544             "id": "5e2757c1-f846-4727-915c-9a872553ed75",
545             "size": 862016,
546             "name": u'sss.vmdk'
547         }
548     ]
549 }
550
551 # create_vm
552 c9_data_create_vm = {
553     "returnCode": 1,
554     "id": "3c9eebdbbfd345658269340b9ea6fb73",
555     "name": "vm1",
556     "vimId": "11111",
557     "vimName": "11111",
558     "tenantId": "tenant1",
559     "boot": "boot_1",
560     "nicArray": "dfdf",
561     "volumeArray": "dfdf",
562     "availabilityZone": "fdvfdv",
563     "flavorId": "fdvfdv",
564     "metadata": "fdvfdv",
565     "securityGroups": "fdvfdv",
566     "serverGroup": "fdvfdv",
567     "status": "ACTIVE"
568 }
569
570 # get_vm
571 c10_data_get_vm = {
572     "returnCode": 1,
573     "id": "3c9eebdbbfd345658269340b9ea6fb73",
574     "name": "vm1",
575     "vimId": "11111",
576     "vimName": "11111",
577     "tenantId": "tenant1",
578     "status": "ACTIVE"
579 }
580
581 vnfdModel = {
582     "volume_storages": [
583         {
584             "volume_storage_id": "test",
585             "properties": {
586                 "location_info": {
587                     "vimid": "vim_1",
588                     "tenant": "chinamobile",
589                     "availability_zone": "test",
590                 },
591                 "volume_name": "test",
592                 "custom_volume_type": "test",
593                 "size_of_storage": "\"10 GB\"",
594             },
595             "image_file": "test",
596         },
597     ],
598     "vls": [
599         {
600             "vl_id": "test",
601             "properties": {
602                 "location_info": {
603                     "vimid": "test",
604                     "tenant": "chinamobile",
605                 },
606                 "vl_profile": {
607                     "networkName": "test",
608                     "networkType": "test",
609                     "physicalNetwork": "test",
610                     "vlanTransparent": "test",
611                     "segmentationId": "1",
612                     "cidr": "test",
613                     "dhcpEnabled": "test",
614                     "gatewayIp": "test",
615                     "startIp": "test",
616                     "endIp": "test",
617                 },
618                 "connectivity_type": {
619                     "layer_protocol": "ipv4",
620                 },
621                 "dns_nameservers": "test",
622                 "host_routes": "test",
623             },
624             "route_external": "test",
625         }
626     ],
627     "cps": [
628         {
629             "vdu_id": "test",
630             "cp_id": "cp1",
631             "networkId": "",  # TODO
632             "subnetId": "",  # TODO
633             "vl_id": "test",
634             "properties": {
635                 "name": "test",
636                 "mac_address": "test",
637                 "protocol_data": [
638                     {
639                         "address_data": {
640                             "l3_address_data": {
641                                 "fixed_ip_address": "test"
642                             },
643                         },
644                     },
645                 ],
646                 "vnic_type": "direct",
647                 "role": "root",
648                 "virtual_network_interface_requirements": [
649                     {
650                         "network_interface_requirements": {
651                             "interfaceType": '{"schemaVersion": "0", "schemaLocation":"", "platformId": "generic", "mandatory": false, "configurationValue": "SR-IOV"}'
652                         },
653                         "support_mandatory": False,
654                         "name": "SRIOV_Port",
655                         "description": "sriov"
656                     }
657                 ]
658             }
659         }
660     ],
661     "vdus": [
662         {
663             "vdu_id": "test",
664             "properties": {
665                 "location_info": {
666                     "vimid": "test",
667                     "tenant": "chinamobile",
668                     "availability_zone": "test",
669                     "vnfId": "",
670                     "vnfName": "",
671                     "cloudOwner": "",
672                     "cloudRegionId": "",
673                     "vduInfo": [
674                         {
675                             "vduName": "VDU_vbng_0",
676                             "flavorId": "12345",
677                             "directive": ""
678                         }
679                     ]
680                 },
681                 "name": "test",
682                 "inject_files": [],
683                 "user_data": "test",
684                 "meta_data": {},
685             },
686             "cps": [],
687             "type": "tosca.nodes.nfv.Vdu.Compute",
688             "virtual_compute": {
689                 "virtual_cpu": {
690                     "num_virtual_cpu": "16",
691                 },
692                 "virtual_memory": {
693                     "virtual_mem_size": "8000 MB",
694                     "vdu_memory_requirements": {
695                         "memoryPageSize": "8 MB",
696                     },
697                 },
698             },
699             "virtual_storages": [{
700                 "virtual_storage_id": "test",
701                 "type_of_storage": "ephemeral",
702                 "size_of_storage": "10 GB",
703             }],
704             "type": "tosca.nodes.nfv.Vdu.Compute",
705             "artifacts": [
706                 {
707                     "artifact_name": "sw_image",
708                     "file": "sss.vmdk",
709                 },
710             ],
711             "volume_storages": [
712                 {
713                     "volume_storage_id": "test",
714                 }
715             ],
716         },
717     ],
718     "image_files": [],
719     "routers": [],
720     "local_storages": [],
721     "vnf_exposed": {
722         "external_cps": [],
723         "forward_cps": []
724     },
725     "inputs": {
726         "pe1_id": {
727             "type": "string",
728             "description": "pe1_idofunderlayvpn"
729         },
730         "pe2_id": {
731             "type": "string",
732             "description": "pe2_idofunderlayvpn"
733         },
734         "serviceType": {
735             "type": "string",
736             "description": "serviceTypeofunderlayvpn"
737         },
738         "description": {
739             "type": "string",
740             "description": "descriptionofunderlayvpn"
741         },
742         "ac2_route": {
743             "type": "string",
744             "description": "ac2_routeofunderlayvpn"
745         },
746         "ac1_route": {
747             "type": "string",
748             "description": "ac1_routeofunderlayvpn"
749         },
750         "ac1_svlan": {
751             "type": "integer",
752             "description": "ac1_svlanofunderlayvpn"
753         },
754         "ac2_ip": {
755             "type": "string",
756             "description": "ac2_ipofunderlayvpn"
757         },
758         "ac1_ip": {
759             "type": "string",
760             "description": "ac1_ipofunderlayvpn"
761         },
762         "ac2_port": {
763             "type": "string",
764             "description": "ac2_portofunderlayvpn"
765         },
766         "topology": {
767             "type": "string",
768             "description": "topologyofunderlayvpn"
769         },
770         "technology": {
771             "type": "string",
772             "description": "technologyofunderlayvpn"
773         },
774         "ac1_port": {
775             "type": "string",
776             "description": "ac1_portofunderlayvpn"
777         },
778         "ac2_svlan": {
779             "type": "integer",
780             "description": "ac2_svlanofunderlayvpn"
781         },
782         "name": {
783             "type": "string",
784             "description": "Nameofunderlayervpn"
785         }
786     },
787     "metadata": {
788         "designer": "sdno",
789         "name": "underlayervpn",
790         "csarVersion": "1.0",
791         "csarType": "SSAR",
792         "csarProvider": "huawei",
793         "version": "1.0",
794         "type": "SSAR",
795         "id": "ns_underlayervpn_1_0"
796     }
797 }
798
799 vnfpackage_info = {
800     "imageInfo": [],
801     "csarId": "vOpenNAT",
802     "packageInfo": {
803         "csarName": "vOpenNAT.csar",
804         "vnfdModel": json.dumps(vnfdModel),
805         "vnfdProvider": "Intel",
806         "vnfdId": "openNAT_1.0",
807         "downloadUrl": "http://10.96.33.39:8806/static/catalog/vOpenNAT/vOpenNAT.csar",
808         "vnfVersion": "v1.0",
809         "vnfdVersion": "v1.0",
810         "vnfPackageId": "vOpenNAT"
811     }
812 }
813
814 # # vnfd_rawdata
815 # vnfd_rawdata = {
816 #     "rawData": {
817 #         "instance": {
818 #             "metadata": {
819 #                 "designer": "sdno",
820 #                 "name": "underlayervpn",
821 #                 "csarVersion": "1.0",
822 #                 "csarType": "SSAR",
823 #                 "csarProvider": "huawei",
824 #                 "version": "1.0",
825 #                 "type": "SSAR",
826 #                 "id": "ns_underlayervpn_1_0"
827 #             },
828 #             "nodes": [
829 #                 {
830 #                     "id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
831 #                     "type_name": "tosca.nodes.sdn.l3ac",
832 #                     "template_name": "ac2",
833 #                     "properties": {
834 #                         "ip": {
835 #                             "type_name": "string"
836 #                         },
837 #                         "route": {
838 #                             "type_name": "string"
839 #                         },
840 #                         "port": {
841 #                             "type_name": "string"
842 #                         },
843 #                         "svlan": {
844 #                             "type_name": "string"
845 #                         }
846 #                     },
847 #                     "interfaces": [
848 #                         {
849 #                             "name": "Standard",
850 #                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
851 #                         }
852 #                     ],
853 #                     "capabilities": [
854 #                         {
855 #                             "name": "feature",
856 #                             "type_name": "tosca.capabilities.Node"
857 #                         },
858 #                         {
859 #                             "name": "ac",
860 #                             "type_name": "tosca.capabilities.sdn.ac"
861 #                         }
862 #                     ],
863 #                     "relationships": [
864 #                         {
865 #                             "target_node_id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
866 #                             "target_capability_name": "feature"
867 #                         },
868 #                         {
869 #                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
870 #                             "target_capability_name": "feature"
871 #                         }
872 #                     ]
873 #                 },
874 #                 {
875 #                     "id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
876 #                     "type_name": "tosca.nodes.sdn.l3ac",
877 #                     "template_name": "ac1",
878 #                     "properties": {
879 #                         "ip": {
880 #                             "type_name": "string"
881 #                         },
882 #                         "route": {
883 #                             "type_name": "string"
884 #                         },
885 #                         "port": {
886 #                             "type_name": "string"
887 #                         },
888 #                         "svlan": {
889 #                             "type_name": "string"
890 #                         }
891 #                     },
892 #                     "interfaces": [
893 #                         {
894 #                             "name": "Standard",
895 #                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
896 #                         }
897 #                     ],
898 #                     "capabilities": [
899 #                         {
900 #                             "name": "feature",
901 #                             "type_name": "tosca.capabilities.Node"
902 #                         },
903 #                         {
904 #                             "name": "ac",
905 #                             "type_name": "tosca.capabilities.sdn.ac"
906 #                         }
907 #                     ],
908 #                     "relationships": [
909 #                         {
910 #                             "target_node_id": "pe1_e58ekps6m45g6w9egs9lue2j7",
911 #                             "target_capability_name": "feature"
912 #                         },
913 #                         {
914 #                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
915 #                             "target_capability_name": "feature"
916 #                         }
917 #                     ]
918 #                 },
919 #                 {
920 #                     "id": "vpn_ie0xim076f7cje67fvrrq9tg1",
921 #                     "type_name": "tosca.nodes.sdn.underlayVPN",
922 #                     "template_name": "vpn",
923 #                     "properties": {
924 #                         "serviceType": {
925 #                             "type_name": "string"
926 #                         },
927 #                         "description": {
928 #                             "type_name": "string"
929 #                         },
930 #                         "name": {
931 #                             "type_name": "string"
932 #                         },
933 #                         "topology": {
934 #                             "type_name": "string"
935 #                         }
936 #                     },
937 #                     "interfaces": [
938 #                         {
939 #                             "name": "Standard",
940 #                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
941 #                         }
942 #                     ],
943 #                     "capabilities": [
944 #                         {
945 #                             "name": "feature",
946 #                             "type_name": "tosca.capabilities.Node"
947 #                         }
948 #                     ],
949 #                     "relationships": [
950 #                         {
951 #                             "target_node_id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
952 #                             "target_capability_name": "feature"
953 #                         },
954 #                         {
955 #                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
956 #                             "target_capability_name": "feature"
957 #                         }
958 #                     ]
959 #                 },
960 #                 {
961 #                     "id": "pe1_e58ekps6m45g6w9egs9lue2j7",
962 #                     "type_name": "tosca.nodes.sdn.l3pe",
963 #                     "template_name": "pe1",
964 #                     "properties": {
965 #                         "id": {
966 #                             "type_name": "string"
967 #                         }
968 #                     },
969 #                     "interfaces": [
970 #                         {
971 #                             "name": "Standard",
972 #                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
973 #                         }
974 #                     ],
975 #                     "capabilities": [
976 #                         {
977 #                             "name": "feature",
978 #                             "type_name": "tosca.capabilities.Node"
979 #                         },
980 #                         {
981 #                             "name": "pe",
982 #                             "type_name": "tosca.capabilities.sdn.pe"
983 #                         }
984 #                     ]
985 #                 },
986 #                 {
987 #                     "id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
988 #                     "type_name": "tosca.nodes.sdn.l3pe",
989 #                     "template_name": "pe2",
990 #                     "properties": {
991 #                         "id": {
992 #                             "type_name": "string"
993 #                         }
994 #                     },
995 #                     "interfaces": [
996 #                         {
997 #                             "name": "Standard",
998 #                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
999 #                         }
1000 #                     ],
1001 #                     "capabilities": [
1002 #                         {
1003 #                             "name": "feature",
1004 #                             "type_name": "tosca.capabilities.Node"
1005 #                         },
1006 #                         {
1007 #                             "name": "pe",
1008 #                             "type_name": "tosca.capabilities.sdn.pe"
1009 #                         }
1010 #                     ]
1011 #                 }
1012 #             ],
1013 #             "substitution": {
1014 #                 "node_type_name": "tosca.nodes.sdn.ext.NS.ns_underlayervpn"
1015 #             },
1016 #             "inputs": {
1017 #                 "ac2_ip": {
1018 #                     "type_name": "string",
1019 #                     "description": "ac2_ipofunderlayvpn"
1020 #                 },
1021 #                 "ac2_route": {
1022 #                     "type_name": "string",
1023 #                     "description": "ac2_routeofunderlayvpn"
1024 #                 },
1025 #                 "serviceType": {
1026 #                     "type_name": "string",
1027 #                     "description": "serviceTypeofunderlayvpn"
1028 #                 },
1029 #                 "description": {
1030 #                     "type_name": "string",
1031 #                     "description": "descriptionofunderlayvpn"
1032 #                 },
1033 #                 "pe2_id": {
1034 #                     "type_name": "string",
1035 #                     "description": "pe2_idofunderlayvpn"
1036 #                 },
1037 #                 "ac1_route": {
1038 #                     "type_name": "string",
1039 #                     "description": "ac1_routeofunderlayvpn"
1040 #                 },
1041 #                 "ac1_svlan": {
1042 #                     "type_name": "integer",
1043 #                     "description": "ac1_svlanofunderlayvpn"
1044 #                 },
1045 #                 "name": {
1046 #                     "type_name": "string",
1047 #                     "description": "Nameofunderlayervpn"
1048 #                 },
1049 #                 "ac1_ip": {
1050 #                     "type_name": "string",
1051 #                     "description": "ac1_ipofunderlayvpn"
1052 #                 },
1053 #                 "ac2_port": {
1054 #                     "type_name": "string",
1055 #                     "description": "ac2_portofunderlayvpn"
1056 #                 },
1057 #                 "pe1_id": {
1058 #                     "type_name": "string",
1059 #                     "description": "pe1_idofunderlayvpn"
1060 #                 },
1061 #                 "technology": {
1062 #                     "type_name": "string",
1063 #                     "description": "technologyofunderlayvpn"
1064 #                 },
1065 #                 "ac1_port": {
1066 #                     "type_name": "string",
1067 #                     "description": "ac1_portofunderlayvpn"
1068 #                 },
1069 #                 "ac2_svlan": {
1070 #                     "type_name": "integer",
1071 #                     "description": "ac2_svlanofunderlayvpn"
1072 #                 },
1073 #                 "topology": {
1074 #                     "type_name": "string",
1075 #                     "description": "topologyofunderlayvpn"
1076 #                 }
1077 #             }
1078 #         }
1079 #     }
1080 # }