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