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