Fix vfc-vnflcm unittests
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnfs / const.py
index b9c0733..02edce7 100644 (file)
@@ -18,274 +18,78 @@ VNF_STATUS = enum(NULL='null', INSTANTIATING="instantiating", INACTIVE='inactive
                   FAILED="failed", TERMINATING="terminating", SCALING="scaling", OPERATING="operating",
                   UPDATING="updating", HEALING="healing")
 
-vnfd_rawdata = {
-    "rawData": {
-        "instance": {
-            "metadata": {
-                "designer": "sdno",
-                "name": "underlayervpn",
-                "csarVersion": "1.0",
-                "csarType": "SSAR",
-                "csarProvider": "huawei",
-                "version": "1.0",
-                "type": "SSAR",
-                "id": "ns_underlayervpn_1_0"
-            },
-            "nodes": [
-                {
-                    "id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
-                    "type_name": "tosca.nodes.sdn.l3ac",
-                    "template_name": "ac2",
-                    "properties": {
-                        "ip": {
-                            "type_name": "string"
-                        },
-                        "route": {
-                            "type_name": "string"
-                        },
-                        "port": {
-                            "type_name": "string"
-                        },
-                        "svlan": {
-                            "type_name": "string"
-                        }
-                    },
-                    "interfaces": [
-                        {
-                            "name": "Standard",
-                            "type_name": "tosca.interfaces.node.lifecycle.Standard"
-                        }
-                    ],
-                    "capabilities": [
-                        {
-                            "name": "feature",
-                            "type_name": "tosca.capabilities.Node"
-                        },
-                        {
-                            "name": "ac",
-                            "type_name": "tosca.capabilities.sdn.ac"
-                        }
-                    ],
-                    "relationships": [
-                        {
-                            "target_node_id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
-                            "target_capability_name": "feature"
-                        },
-                        {
-                            "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
-                            "target_capability_name": "feature"
-                        }
-                    ]
-                },
-                {
-                    "id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
-                    "type_name": "tosca.nodes.sdn.l3ac",
-                    "template_name": "ac1",
-                    "properties": {
-                        "ip": {
-                            "type_name": "string"
-                        },
-                        "route": {
-                            "type_name": "string"
-                        },
-                        "port": {
-                            "type_name": "string"
-                        },
-                        "svlan": {
-                            "type_name": "string"
-                        }
-                    },
-                    "interfaces": [
-                        {
-                            "name": "Standard",
-                            "type_name": "tosca.interfaces.node.lifecycle.Standard"
-                        }
-                    ],
-                    "capabilities": [
-                        {
-                            "name": "feature",
-                            "type_name": "tosca.capabilities.Node"
-                        },
-                        {
-                            "name": "ac",
-                            "type_name": "tosca.capabilities.sdn.ac"
-                        }
-                    ],
-                    "relationships": [
-                        {
-                            "target_node_id": "pe1_e58ekps6m45g6w9egs9lue2j7",
-                            "target_capability_name": "feature"
-                        },
-                        {
-                            "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
-                            "target_capability_name": "feature"
-                        }
-                    ]
+inst_req_data = {
+    "flavourId": "flavour_1",
+    "instantiationLevelId": "instantiationLevel_1",
+    "extVirtualLinks": [
+        {
+            "vlInstanceId": "1",
+            "vim": {
+                "vimInfoId": "1",
+                "vimId": "1",
+                "interfaceInfo": {
+                    "vimType": "vim",
+                    "apiVersion": "v2",
+                    "protocolType": "http"
                 },
-                {
-                    "id": "vpn_ie0xim076f7cje67fvrrq9tg1",
-                    "type_name": "tosca.nodes.sdn.underlayVPN",
-                    "template_name": "vpn",
-                    "properties": {
-                        "serviceType": {
-                            "type_name": "string"
-                        },
-                        "description": {
-                            "type_name": "string"
-                        },
-                        "name": {
-                            "type_name": "string"
-                        },
-                        "topology": {
-                            "type_name": "string"
-                        }
-                    },
-                    "interfaces": [
-                        {
-                            "name": "Standard",
-                            "type_name": "tosca.interfaces.node.lifecycle.Standard"
-                        }
-                    ],
-                    "capabilities": [
-                        {
-                            "name": "feature",
-                            "type_name": "tosca.capabilities.Node"
-                        }
-                    ],
-                    "relationships": [
-                        {
-                            "target_node_id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
-                            "target_capability_name": "feature"
-                        },
-                        {
-                            "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
-                            "target_capability_name": "feature"
-                        }
-                    ]
+                "accessInfo": {
+                    "tenant": "tenant_vCPE",
+                    "username": "vCPE",
+                    "password": "vCPE_321"
                 },
+                "interfaceEndpoint": "http://10.43.21.105:80/"
+            },
+            "resourceId": "1246",
+            "extCps": [
                 {
-                    "id": "pe1_e58ekps6m45g6w9egs9lue2j7",
-                    "type_name": "tosca.nodes.sdn.l3pe",
-                    "template_name": "pe1",
-                    "properties": {
-                        "id": {
-                            "type_name": "string"
-                        }
-                    },
-                    "interfaces": [
-                        {
-                            "name": "Standard",
-                            "type_name": "tosca.interfaces.node.lifecycle.Standard"
-                        }
-                    ],
-                    "capabilities": [
+                    "cpdId": "11",
+                    "addresses": [
                         {
-                            "name": "feature",
-                            "type_name": "tosca.capabilities.Node"
+                            "addressType": "MAC",
+                            "l2AddressData": "00:f3:43:20:a2:a3"
                         },
                         {
-                            "name": "pe",
-                            "type_name": "tosca.capabilities.sdn.pe"
-                        }
-                    ]
-                },
-                {
-                    "id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
-                    "type_name": "tosca.nodes.sdn.l3pe",
-                    "template_name": "pe2",
-                    "properties": {
-                        "id": {
-                            "type_name": "string"
-                        }
-                    },
-                    "interfaces": [
-                        {
-                            "name": "Standard",
-                            "type_name": "tosca.interfaces.node.lifecycle.Standard"
+                            "addressType": "IP",
+                            "l3AddressData": {
+                                "iPAddressType": "IPv4",
+                                "iPAddress": "192.168.104.2"
+                            }
                         }
                     ],
-                    "capabilities": [
-                        {
-                            "name": "feature",
-                            "type_name": "tosca.capabilities.Node"
-                        },
-                        {
-                            "name": "pe",
-                            "type_name": "tosca.capabilities.sdn.pe"
-                        }
-                    ]
-                }
-            ],
-            "substitution": {
-                "node_type_name": "tosca.nodes.sdn.ext.NS.ns_underlayervpn"
-            },
-            "inputs": {
-                "ac2_ip": {
-                    "type_name": "string",
-                    "description": "ac2_ipofunderlayvpn"
-                },
-                "ac2_route": {
-                    "type_name": "string",
-                    "description": "ac2_routeofunderlayvpn"
-                },
-                "serviceType": {
-                    "type_name": "string",
-                    "description": "serviceTypeofunderlayvpn"
-                },
-                "description": {
-                    "type_name": "string",
-                    "description": "descriptionofunderlayvpn"
-                },
-                "pe2_id": {
-                    "type_name": "string",
-                    "description": "pe2_idofunderlayvpn"
-                },
-                "ac1_route": {
-                    "type_name": "string",
-                    "description": "ac1_routeofunderlayvpn"
-                },
-                "ac1_svlan": {
-                    "type_name": "integer",
-                    "description": "ac1_svlanofunderlayvpn"
-                },
-                "name": {
-                    "type_name": "string",
-                    "description": "Nameofunderlayervpn"
-                },
-                "ac1_ip": {
-                    "type_name": "string",
-                    "description": "ac1_ipofunderlayvpn"
-                },
-                "ac2_port": {
-                    "type_name": "string",
-                    "description": "ac2_portofunderlayvpn"
-                },
-                "pe1_id": {
-                    "type_name": "string",
-                    "description": "pe1_idofunderlayvpn"
-                },
-                "technology": {
-                    "type_name": "string",
-                    "description": "technologyofunderlayvpn"
-                },
-                "ac1_port": {
-                    "type_name": "string",
-                    "description": "ac1_portofunderlayvpn"
-                },
-                "ac2_svlan": {
-                    "type_name": "integer",
-                    "description": "ac2_svlanofunderlayvpn"
-                },
-                "topology": {
-                    "type_name": "string",
-                    "description": "topologyofunderlayvpn"
+                    "numDynamicAddresses": 0
                 }
+            ]
+        },
+        {
+            "vlInstanceId": '55',
+            "resourceId": '55_network',
+            "resourceSubnetId": '55_subnet',
+            "cpdId": 'cpId1',
+            "vim": {
+                "vimid": '55_vimid'
             }
         }
+    ],
+    "localizationLanguage": "en_US",
+    "additionalParams": {
+        "inputs": {
+            "key1": "test1",
+            "key2": "test2"
+        },
+        "extVirtualLinks": [
+            {
+                "vlInstanceId": '55',
+                "resourceId": '55_network',
+                "resourceSubnetId": '55_subnet',
+                "cpdId": 'cpId1',
+                "vim": {
+                    "vimid": '55_vimid'
+                }
+            }
+        ]
     }
 }
 
-
 vnfd_model_dict = {
     'metadata': {
         'vendor': u'zte',
@@ -302,106 +106,147 @@ vnfd_model_dict = {
     },
     'vdus': [
         {
-            'volumn_storages': [
-
-            ],
-            'nfv_compute': {
-                'mem_size': '',
-                'num_cpus': u'2'
-            },
-            'local_storages': [
-
-            ],
-            'vdu_id': u'vdu_omm.001',
-            'image_file': u'opencos_sss_omm_img_release_20150723-1-disk1',
-            'dependencies': [
-
-            ],
-            'vls': [
-
-            ],
-            'cps': [
-
-            ],
-            'properties': {
-                'key_vdu': '',
-                'support_scaling': False,
-                'vdu_type': '',
-                'name': '',
-                'storage_policy': '',
-                'location_info': {
-                    'vimId': '',
-                    'availability_zone': '',
-                    'region': '',
-                    'dc': '',
-                    'host': '',
-                    'tenant': ''
+            "vdu_id": "vdu1Id",
+            "description": "vdu description",
+            "properties": {
+                "name": "vduinstname",
+                "vdu_type": "OMP",
+                "key_vdu": True,
+                "support_scaling": True,
+                "location_info": {
+                    "vimid": "vimid",
+                    "tenant": "tenantname",
+                    "availability_zone": "zone1",
+                    "host": "host1"
                 },
-                'inject_data_list': [
-
+                "local_affinity_antiaffinity_rule": [
+                    {
+                        "affinity_antiaffinity": "anti-affinity",
+                        "scope": "node"
+                    },
+                    {
+                        "affinity_antiaffinity": "affinity",
+                        "scope": "zone"
+                    }
                 ],
-                'watchdog': {
-                    'action': '',
-                    'enabledelay': ''
-                },
-                'local_affinity_antiaffinity_rule': {
-
+                "inject_data_list": [
+                    {
+                        "file_name": "abc.xml",
+                        "file_data": "<a>xxx</a><b>ssss</b>"
+                    }
+                ],
+                "storage_policy": "HIGH",
+                "template_id": "26",
+                "manual_scale_select_vim": False,
+                "watchdog": {
+                    "enabledelay": 600000,
+                    "action": "reset"
                 },
-                'template_id': u'omm.001',
-                'manual_scale_select_vim': False
+                "is_predefined": False,
+                "allow_scale_updown": False,
+                "inject_network_address": True,
+                "inner_hugepage_num": 100,
+                "inner_hugepage_size": "2048",
+                "action": "add"
             },
-            'description': u'singleommvm'
-        },
-        {
-            'volumn_storages': [
-
+            "image_file": u'sss',
+            "local_storages": [
+                "local_storage_id1",
+                "local_storage_id2"
             ],
-            'nfv_compute': {
-                'mem_size': '',
-                'num_cpus': u'14'
-            },
-            'local_storages': [
-
+            "volume_storages": [
+                {
+                    "volume_storage_id": "volume_storage1",
+                    "location": "/usr/data",
+                    "device": "/dev/hda1"
+                }
             ],
-            'vdu_id': u'vdu_12',
-            'image_file': u'sss',
-            'dependencies': [
-
+            "dependencies": [
+                "vdu1Id",
+                "vduNId"
             ],
-            'vls': [
-
+            "nfv_compute": {
+                "num_cpus": 4,
+                "mem_size": "1 GB",
+                "cpu_frequency": "1GHz",
+                "flavor_extra_specs": {
+                    "hw: cpu_policy": "shared",
+                    "hw: cpu_max_threads": 50,
+                    "hw: cpu_sockets": 10,
+                    "hw: cpu_max_sockets": 20,
+                    "hw: cpu_max_cores": 8,
+                    "hw: cpu_threads": 30,
+                    "hw: numa_mem.0": 12288,
+                    "hw: hugepage_num": 100,
+                    "hw: high_performance": "dvs_high",
+                    "hw: numa_nodes": 1,
+                    "hw: numa_cpus.0": "2,4,8",
+                    "hw: numa_pci": True,
+                    "hw: cpu_cores": 4,
+                    "pci_passthrough: alias": "ColetoCreek: 1",
+                    "hw: mem_page_size": "large",
+                    "hw: mem_paging_mechanism": "EPT"
+                }
+            },
+            "vls": [
+                "vlId1",
             ],
-            'cps': [
-
+            "cps": [
+                "cpId1",
             ],
-            'properties': {
-                'key_vdu': '',
-                'support_scaling': False,
-                'vdu_type': '',
-                'name': '',
-                'storage_policy': '',
-                'location_info': {
-                    'vimId': '',
-                    'availability_zone': '',
-                    'region': '',
-                    'dc': '',
-                    'host': '',
-                    'tenant': ''
-                },
-                'inject_data_list': [
-
-                ],
-                'watchdog': {
-                    'action': '',
-                    'enabledelay': ''
-                },
-                'local_affinity_antiaffinity_rule': {
-
-                },
-                'template_id': u'12',
-                'manual_scale_select_vim': False
+            "scalable": {
+                "min_instances": 1,
+                "max_instances": 2,
+                "default_instances": 1
+            },
+            "interfaces": {
+                "Standard": {
+                    "create": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "configure": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "start": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "stop": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    },
+                    "delete": {
+                        "implementation": "<implementationScript>",
+                        "inputs": {
+                            "param1Name": "value1",
+                            "paramNName": "valueN"
+                        }
+                    }
+                }
             },
-            'description': u'ppvm'
+            "artifacts": [
+                {
+                    "artifact_name": "software_version_file",
+                    "type": "tosca.artifacts.Deployment",
+                    "file": "AppSoftwares/zte-cn-xgw-V5.16.11_NFV-version.zip",
+                    "repository": "",
+                    "deploy_path": ""
+                }
+            ]
         }
     ],
     'volume_storages': [
@@ -501,8 +346,8 @@ vnfd_model_dict = {
                     }
                 ],
                 "location_info": {
-                    "vimid": "vimid",
-                    "tenant": "tenantname"
+                    "vimid": "vimid_1",
+                    "tenant": "tenantname_1"
                 },
                 "cloud_type": "IaaS"
             },
@@ -512,7 +357,7 @@ vnfd_model_dict = {
     ],
     'cps': [
         {
-            "cp_id": "cpId",
+            "cp_id": "cpId1",
             "description": "",
             "properties": {
                 "name": "",
@@ -545,11 +390,533 @@ vnfd_model_dict = {
                 "is_virtual": False,
                 "function": "control"
             },
-            "vl_id": "vlid1",
-            "vdu_id": "vdu_id1"
+            "vl_id": "vldId1",
+            "vdu_id": "vdu1Id"
         }
     ],
     'local_storages': [
 
     ],
-}
\ No newline at end of file
+}
+
+# get_tenant_id
+c1_data_get_tenant_id = {
+    "tenants": [
+        {
+            "id": "1",
+            "name": "tenantname_1"
+        }
+    ]
+}
+
+# create_volume
+c2_data_create_volume = {
+    "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
+    "name": "volume1",
+    "returnCode": 1,
+    "vimId": "vim_volume_1",
+    "vimName": "vim_volume_1",
+    "tenantId": "vim_volume_1",
+    "volumeType": "123",
+    "availabilityZone": "availabilityZone",
+    "status": "availuable",
+    "createTime": "2015-12-02T06:39:40.000000",
+    "type": None,
+    "size": 40
+}
+
+# get_volume
+c3_data_get_volume = {
+    "status": "available",
+    "name": "wangsong",
+    "attachments": [
+        {
+            "device": "/dev/vdc",
+            "serverId": "3030e666-528e-4954-88f5-cc21dab1262b",
+            "volumeId": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
+            "hostName": None,
+            "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31"
+        }
+    ],
+    "createTime": "2015-12-02T06:39:40.000000",
+    "type": None,
+    "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",
+    "size": 40
+}
+
+# create_network
+c4_data_create_network = {
+    "returnCode": 0,
+    "vimId": "11111",
+    "vimName": "11111",
+    "status": "ACTIVE",
+    "id": "3c9eebdbbfd345658269340b9ea6fb73",
+    "name": "net1",
+    "tenantId": "tenant1",
+    "networkName": "ommnet",
+    "shared": True,
+    "vlanTransparent": True,
+    "networkType": "vlan",
+    "segmentationId": 202,
+    "physicalNetwork": "ctrl",
+    "routerExternal": False
+}
+
+# create_subnet
+c5_data_create_subnet = {
+    "returnCode": 0,
+    "vimId": "11111",
+    "vimName": "11111",
+    "status": " ACTIVE",
+    "id": "d62019d3-bc6e-4319-9c1d-6722fc136a23",
+    "tenantId": "tenant1",
+    "networkId": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
+    "networkName": "networkName",
+    "name": "subnet1",
+    "cidr": "10.43.35.0/24",
+    "ipVersion": 4,
+    "enableDhcp": 1,
+    "gatewayIp": "10.43.35.1",
+    "dnsNameservers": [],
+    "allocationPools": [
+        {
+            "start": "192.168.199.2",
+            "end": "192.168.199.254"
+        }
+    ],
+    "hostRoutes": []
+}
+
+# create_ports
+c6_data_create_port = {
+    "returnCode": 0,
+    "vimId": "11111",
+    "vimName": "11111",
+    "status": " ACTIVE",
+    "id": " 872019d3-bc6e-4319-9c1d-6722fc136afg",
+    "tenantId": "tenant1",
+    "name": "subnet1",
+    "networkId": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
+    "networkName": "networkName",
+    "subnetId": "d62019d3-bc6e-4319-9c1d-6722fc136a23",
+    "subnetName": "subnet1",
+    "macAddress": "212.12.61.23",
+    "ip": "10.43.38.11",
+    "vnicType": "normal",
+    "securityGroups": ""
+}
+
+# create_flavor
+c7_data_create_flavor = {
+    "returnCode": 0,
+    "vimId": "11111",
+    "vimName": "11111",
+    "id": "142019d3-bc6e-4319-9c1d-6722fc136afg",
+    "tenantId": "tenant1",
+    "name": "subnet1",
+    "vcpu": 5,
+    "memory": 2,
+    "disk": 40,
+    "ephemeral": 40,
+    "swap": 20,
+    "isPublic": True,
+    "extraSpecs": "testtt"
+}
+
+# list_image
+c8_data_list_image = {
+    "vimid": "",
+    "vimname": "",
+    "images": [
+        {
+            "status": "active",
+            "id": "5e2757c1-f846-4727-915c-9a872553ed75",
+            "size": 862016,
+            "name": u'sss.vmdk'
+        }
+    ]
+}
+
+# create_vm
+c9_data_create_vm = {
+    "returnCode": 1,
+    "id": "3c9eebdbbfd345658269340b9ea6fb73",
+    "name": "vm1",
+    "vimId": "11111",
+    "vimName": "11111",
+    "tenantId": "tenant1",
+    "boot": "boot_1",
+    "nicArray": "dfdf",
+    "volumeArray": "dfdf",
+    "availabilityZone": "fdvfdv",
+    "flavorId": "fdvfdv",
+    "metadata": "fdvfdv",
+    "securityGroups": "fdvfdv",
+    "serverGroup": "fdvfdv",
+    "status": "ACTIVE"
+}
+
+# get_vm
+c10_data_get_vm = {
+    "returnCode": 1,
+    "id": "3c9eebdbbfd345658269340b9ea6fb73",
+    "name": "vm1",
+    "vimId": "11111",
+    "vimName": "11111",
+    "tenantId": "tenant1",
+    "status": "ACTIVE"
+}
+
+vnfpackage_info = {
+    "volume_storages": [],
+    "inputs": {
+        "pe1_id": {
+            "type": "string",
+            "description": "pe1_idofunderlayvpn"
+        },
+        "pe2_id": {
+            "type": "string",
+            "description": "pe2_idofunderlayvpn"
+        },
+        "serviceType": {
+            "type": "string",
+            "description": "serviceTypeofunderlayvpn"
+        },
+        "description": {
+            "type": "string",
+            "description": "descriptionofunderlayvpn"
+        },
+        "ac2_route": {
+            "type": "string",
+            "description": "ac2_routeofunderlayvpn"
+        },
+        "ac1_route": {
+            "type": "string",
+            "description": "ac1_routeofunderlayvpn"
+        },
+        "ac1_svlan": {
+            "type": "integer",
+            "description": "ac1_svlanofunderlayvpn"
+        },
+        "ac2_ip": {
+            "type": "string",
+            "description": "ac2_ipofunderlayvpn"
+        },
+        "ac1_ip": {
+            "type": "string",
+            "description": "ac1_ipofunderlayvpn"
+        },
+        "ac2_port": {
+            "type": "string",
+            "description": "ac2_portofunderlayvpn"
+        },
+        "topology": {
+            "type": "string",
+            "description": "topologyofunderlayvpn"
+        },
+        "technology": {
+            "type": "string",
+            "description": "technologyofunderlayvpn"
+        },
+        "ac1_port": {
+            "type": "string",
+            "description": "ac1_portofunderlayvpn"
+        },
+        "ac2_svlan": {
+            "type": "integer",
+            "description": "ac2_svlanofunderlayvpn"
+        },
+        "name": {
+            "type": "string",
+            "description": "Nameofunderlayervpn"
+        }
+    },
+    "vdus": [],
+    "image_files": [],
+    "routers": [],
+    "local_storages": [],
+    "vnf_exposed": {
+        "external_cps": [],
+        "forward_cps": []
+    },
+    "vls": [],
+    "cps": [],
+    "metadata": {
+        "designer": "sdno",
+        "name": "underlayervpn",
+        "csarVersion": "1.0",
+        "csarType": "SSAR",
+        "csarProvider": "huawei",
+        "version": "1.0",
+        "type": "SSAR",
+        "id": "ns_underlayervpn_1_0"
+    }
+}
+
+# # vnfd_rawdata
+# vnfd_rawdata = {
+#     "rawData": {
+#         "instance": {
+#             "metadata": {
+#                 "designer": "sdno",
+#                 "name": "underlayervpn",
+#                 "csarVersion": "1.0",
+#                 "csarType": "SSAR",
+#                 "csarProvider": "huawei",
+#                 "version": "1.0",
+#                 "type": "SSAR",
+#                 "id": "ns_underlayervpn_1_0"
+#             },
+#             "nodes": [
+#                 {
+#                     "id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
+#                     "type_name": "tosca.nodes.sdn.l3ac",
+#                     "template_name": "ac2",
+#                     "properties": {
+#                         "ip": {
+#                             "type_name": "string"
+#                         },
+#                         "route": {
+#                             "type_name": "string"
+#                         },
+#                         "port": {
+#                             "type_name": "string"
+#                         },
+#                         "svlan": {
+#                             "type_name": "string"
+#                         }
+#                     },
+#                     "interfaces": [
+#                         {
+#                             "name": "Standard",
+#                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
+#                         }
+#                     ],
+#                     "capabilities": [
+#                         {
+#                             "name": "feature",
+#                             "type_name": "tosca.capabilities.Node"
+#                         },
+#                         {
+#                             "name": "ac",
+#                             "type_name": "tosca.capabilities.sdn.ac"
+#                         }
+#                     ],
+#                     "relationships": [
+#                         {
+#                             "target_node_id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
+#                             "target_capability_name": "feature"
+#                         },
+#                         {
+#                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
+#                             "target_capability_name": "feature"
+#                         }
+#                     ]
+#                 },
+#                 {
+#                     "id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
+#                     "type_name": "tosca.nodes.sdn.l3ac",
+#                     "template_name": "ac1",
+#                     "properties": {
+#                         "ip": {
+#                             "type_name": "string"
+#                         },
+#                         "route": {
+#                             "type_name": "string"
+#                         },
+#                         "port": {
+#                             "type_name": "string"
+#                         },
+#                         "svlan": {
+#                             "type_name": "string"
+#                         }
+#                     },
+#                     "interfaces": [
+#                         {
+#                             "name": "Standard",
+#                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
+#                         }
+#                     ],
+#                     "capabilities": [
+#                         {
+#                             "name": "feature",
+#                             "type_name": "tosca.capabilities.Node"
+#                         },
+#                         {
+#                             "name": "ac",
+#                             "type_name": "tosca.capabilities.sdn.ac"
+#                         }
+#                     ],
+#                     "relationships": [
+#                         {
+#                             "target_node_id": "pe1_e58ekps6m45g6w9egs9lue2j7",
+#                             "target_capability_name": "feature"
+#                         },
+#                         {
+#                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
+#                             "target_capability_name": "feature"
+#                         }
+#                     ]
+#                 },
+#                 {
+#                     "id": "vpn_ie0xim076f7cje67fvrrq9tg1",
+#                     "type_name": "tosca.nodes.sdn.underlayVPN",
+#                     "template_name": "vpn",
+#                     "properties": {
+#                         "serviceType": {
+#                             "type_name": "string"
+#                         },
+#                         "description": {
+#                             "type_name": "string"
+#                         },
+#                         "name": {
+#                             "type_name": "string"
+#                         },
+#                         "topology": {
+#                             "type_name": "string"
+#                         }
+#                     },
+#                     "interfaces": [
+#                         {
+#                             "name": "Standard",
+#                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
+#                         }
+#                     ],
+#                     "capabilities": [
+#                         {
+#                             "name": "feature",
+#                             "type_name": "tosca.capabilities.Node"
+#                         }
+#                     ],
+#                     "relationships": [
+#                         {
+#                             "target_node_id": "ac1_jqows1ai0j0cmwk9jdvuknt97",
+#                             "target_capability_name": "feature"
+#                         },
+#                         {
+#                             "target_node_id": "ac2_fdhrbk3dvan8hl5wifm9lp1e9",
+#                             "target_capability_name": "feature"
+#                         }
+#                     ]
+#                 },
+#                 {
+#                     "id": "pe1_e58ekps6m45g6w9egs9lue2j7",
+#                     "type_name": "tosca.nodes.sdn.l3pe",
+#                     "template_name": "pe1",
+#                     "properties": {
+#                         "id": {
+#                             "type_name": "string"
+#                         }
+#                     },
+#                     "interfaces": [
+#                         {
+#                             "name": "Standard",
+#                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
+#                         }
+#                     ],
+#                     "capabilities": [
+#                         {
+#                             "name": "feature",
+#                             "type_name": "tosca.capabilities.Node"
+#                         },
+#                         {
+#                             "name": "pe",
+#                             "type_name": "tosca.capabilities.sdn.pe"
+#                         }
+#                     ]
+#                 },
+#                 {
+#                     "id": "pe2_go3vo1ctxr1vlbl0ij8stbtj6",
+#                     "type_name": "tosca.nodes.sdn.l3pe",
+#                     "template_name": "pe2",
+#                     "properties": {
+#                         "id": {
+#                             "type_name": "string"
+#                         }
+#                     },
+#                     "interfaces": [
+#                         {
+#                             "name": "Standard",
+#                             "type_name": "tosca.interfaces.node.lifecycle.Standard"
+#                         }
+#                     ],
+#                     "capabilities": [
+#                         {
+#                             "name": "feature",
+#                             "type_name": "tosca.capabilities.Node"
+#                         },
+#                         {
+#                             "name": "pe",
+#                             "type_name": "tosca.capabilities.sdn.pe"
+#                         }
+#                     ]
+#                 }
+#             ],
+#             "substitution": {
+#                 "node_type_name": "tosca.nodes.sdn.ext.NS.ns_underlayervpn"
+#             },
+#             "inputs": {
+#                 "ac2_ip": {
+#                     "type_name": "string",
+#                     "description": "ac2_ipofunderlayvpn"
+#                 },
+#                 "ac2_route": {
+#                     "type_name": "string",
+#                     "description": "ac2_routeofunderlayvpn"
+#                 },
+#                 "serviceType": {
+#                     "type_name": "string",
+#                     "description": "serviceTypeofunderlayvpn"
+#                 },
+#                 "description": {
+#                     "type_name": "string",
+#                     "description": "descriptionofunderlayvpn"
+#                 },
+#                 "pe2_id": {
+#                     "type_name": "string",
+#                     "description": "pe2_idofunderlayvpn"
+#                 },
+#                 "ac1_route": {
+#                     "type_name": "string",
+#                     "description": "ac1_routeofunderlayvpn"
+#                 },
+#                 "ac1_svlan": {
+#                     "type_name": "integer",
+#                     "description": "ac1_svlanofunderlayvpn"
+#                 },
+#                 "name": {
+#                     "type_name": "string",
+#                     "description": "Nameofunderlayervpn"
+#                 },
+#                 "ac1_ip": {
+#                     "type_name": "string",
+#                     "description": "ac1_ipofunderlayvpn"
+#                 },
+#                 "ac2_port": {
+#                     "type_name": "string",
+#                     "description": "ac2_portofunderlayvpn"
+#                 },
+#                 "pe1_id": {
+#                     "type_name": "string",
+#                     "description": "pe1_idofunderlayvpn"
+#                 },
+#                 "technology": {
+#                     "type_name": "string",
+#                     "description": "technologyofunderlayvpn"
+#                 },
+#                 "ac1_port": {
+#                     "type_name": "string",
+#                     "description": "ac1_portofunderlayvpn"
+#                 },
+#                 "ac2_svlan": {
+#                     "type_name": "integer",
+#                     "description": "ac2_svlanofunderlayvpn"
+#                 },
+#                 "topology": {
+#                     "type_name": "string",
+#                     "description": "topologyofunderlayvpn"
+#                 }
+#             }
+#         }
+#     }
+# }