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