1 # Copyright 2016-2017 ZTE Corporation.
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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
18 def safe_get(key_val, key):
19 return key_val[key] if key in key_val else ""
22 def find_node_name(node_id, node_list):
23 for node in node_list:
24 if node['id'] == node_id:
25 return node['template_name']
26 raise Exception('can not find node(%s).' % node_id)
29 def find_node_type(node_id, node_list):
30 for node in node_list:
31 if node['id'] == node_id:
32 return node['type_name']
33 raise Exception('can not find node(%s).' % node_id)
36 def find_related_node(node_id, src_json_model, requirement_name):
38 for model_tpl in safe_get(src_json_model, "node_templates"):
39 for rt in safe_get(model_tpl, 'requirement_templates'):
40 if safe_get(rt, 'name') == requirement_name and safe_get(rt, 'target_node_template_name') == node_id:
41 related_nodes.append(model_tpl['name'])
45 def convert_props(src_node, dest_node):
46 if 'properties' in src_node and src_node['properties']:
47 for prop_name, prop_info in list(src_node['properties'].items()):
48 if 'value' in prop_info:
49 dest_node['properties'][prop_name] = prop_info['value']
52 def convert_metadata(src_json):
53 return src_json['metadata'] if 'metadata' in src_json else {}
56 def convert_inputs(src_json):
58 if 'inputs' in src_json:
59 src_inputs = src_json['inputs']
60 for param_name, param_info in list(src_inputs.items()):
62 if 'type_name' in param_info:
63 input_param['type'] = param_info['type_name']
64 if 'description' in param_info:
65 input_param['description'] = param_info['description']
66 if 'value' in param_info:
67 input_param['value'] = param_info['value']
68 inputs[param_name] = input_param
72 def convert_vnf_node(src_node, src_json_model):
74 'type': src_node['type_name'],
75 'vnf_id': src_node['template_name'],
81 convert_props(src_node, vnf_node)
82 for model_tpl in safe_get(src_json_model, "node_templates"):
83 if model_tpl['name'] != vnf_node['vnf_id']:
85 vnf_node['dependencies'] = [
87 'key_name': requirement['name'],
88 'vl_id': requirement['target_node_template_name']
89 } for requirement in safe_get(model_tpl, 'requirement_templates')
90 if safe_get(requirement, 'target_capability_name') == 'virtual_linkable'
92 vnf_node['networks'] = [requirement['target_node_template_name']
93 for requirement in safe_get(model_tpl, 'requirement_templates')
94 if safe_get(requirement, 'name') == 'dependency']
98 def convert_pnf_node(src_node, src_json_model):
99 pnf_node = {'pnf_id': src_node['template_name'], 'description': '', 'properties': {}}
100 convert_props(src_node, pnf_node)
101 pnf_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
105 def convert_vl_node(src_node, src_node_list):
106 vl_node = {'vl_id': src_node['template_name'], 'description': '', 'properties': {}}
107 convert_props(src_node, vl_node)
108 vl_node['route_id'] = ''
109 for relation in safe_get(src_node, 'relationships'):
110 if safe_get(relation, 'type_name').endswith('.VirtualLinksTo'):
111 vl_node['route_id'] = find_node_name(relation['target_node_id'], src_node_list)
113 vl_node['route_external'] = (src_node['type_name'].find('.RouteExternalVL') > 0)
117 def convert_cp_node(src_node, src_node_list, model_type='NSD'):
118 cp_node = {'cp_id': src_node['template_name'], 'description': '', 'properties': {}}
119 convert_props(src_node, cp_node)
120 src_relationships = src_node['relationships']
121 for relation in src_relationships:
122 if safe_get(relation, 'name') == 'virtualLink':
123 cp_node['vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
124 elif safe_get(relation, 'name') == 'virtualbinding':
125 node_key = 'pnf_id' if model_type == 'NSD' else 'vdu_id'
126 cp_node[node_key] = find_node_name(relation['target_node_id'], src_node_list)
130 def convert_router_node(src_node, src_node_list):
131 router_node = {'router_id': src_node['template_name'], 'description': '', 'properties': {}}
132 convert_props(src_node, router_node)
133 for relation in src_node['relationships']:
134 if safe_get(relation, 'name') != 'external_virtual_link':
136 router_node['external_vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
137 router_node['external_ip_addresses'] = []
138 if 'properties' not in relation:
140 for prop_name, prop_info in list(relation['properties'].items()):
141 if prop_name == 'router_ip_address':
142 router_node['external_ip_addresses'].append(prop_info['value'])
147 def convert_fp_node(src_node, src_node_list, src_json_model):
149 'fp_id': src_node['template_name'],
154 convert_props(src_node, fp_node)
155 for relation in safe_get(src_node, 'relationships'):
156 if safe_get(relation, 'name') != 'forwarder':
158 forwarder_point = {'type': 'vnf'}
159 target_node_type = find_node_type(relation['target_node_id'], src_node_list).upper()
160 if target_node_type.find('.CP.') >= 0 or target_node_type.endswith('.CP'):
161 forwarder_point['type'] = 'cp'
162 forwarder_point['node_name'] = find_node_name(relation['target_node_id'], src_node_list)
163 forwarder_point['capability'] = ''
164 if forwarder_point['type'] == 'vnf':
165 for node_tpl in src_json_model["node_templates"]:
166 if fp_node['fp_id'] != node_tpl["name"]:
168 for r_tpl in safe_get(node_tpl, "requirement_templates"):
169 if safe_get(r_tpl, "target_node_template_name") != forwarder_point['node_name']:
171 forwarder_point['capability'] = safe_get(r_tpl, "target_capability_name")
174 fp_node['forwarder_list'].append(forwarder_point)
178 def convert_vnffg_group(src_group, src_group_list, src_node_list):
180 'vnffg_id': src_group['template_name'],
185 convert_props(src_group, vnffg)
186 for member_node_id in src_group['member_node_ids']:
187 vnffg['members'].append(find_node_name(member_node_id, src_node_list))
191 def convert_imagefile_node(src_node, src_node_list):
193 'image_file_id': src_node['template_name'],
197 convert_props(src_node, image_node)
201 def convert_localstorage_node(src_node, src_node_list):
202 localstorage_node = {
203 'local_storage_id': src_node['template_name'],
207 convert_props(src_node, localstorage_node)
208 return localstorage_node
211 def convert_vdu_node(src_node, src_node_list, src_json_model):
213 'vdu_id': src_node['template_name'],
214 'description': '', 'properties': {},
216 'local_storages': [],
222 convert_props(src_node, vdu_node)
224 for relation in src_node['relationships']:
225 r_id, r_name = safe_get(relation, 'target_node_id'), safe_get(relation, 'name')
226 if r_name == 'guest_os':
227 vdu_node['image_file'] = find_node_name(r_id, src_node_list)
228 elif r_name == 'local_storage':
229 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
230 elif r_name.endswith('.AttachesTo'):
231 nt = find_node_type(r_id, src_node_list)
232 if nt.endswith('.BlockStorage.Local') or nt.endswith('.LocalStorage'):
233 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
235 for capability in src_node['capabilities']:
236 if capability['name'] != 'nfv_compute':
238 for prop_name, prop_info in list(capability['properties'].items()):
239 if 'value' in prop_info:
240 vdu_node['nfv_compute'][prop_name] = prop_info['value']
242 vdu_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
244 for cp_node in vdu_node['cps']:
245 for src_cp_node in src_node_list:
246 if src_cp_node['template_name'] != cp_node:
248 for relation in safe_get(src_cp_node, 'relationships'):
249 if relation['name'] != 'virtualLink':
251 vl_node_name = find_node_name(relation['target_node_id'], src_node_list)
252 if vl_node_name not in vdu_node['vls']:
253 vdu_node['vls'].append(vl_node_name)
255 for item in safe_get(src_node, 'artifacts'):
257 'artifact_name': item['name'], 'type': item['type_name'],
258 'file': item['source_path']
260 vdu_node['artifacts'].append(artifact)
265 def convert_exposed_node(src_json, src_nodes, exposed):
266 for item in safe_get(safe_get(src_json, 'substitution'), 'requirements'):
268 'key_name': item['mapped_name'],
269 "cp_id": find_node_name(item['node_id'], src_nodes)
271 exposed['external_cps'].append(external_cps)
272 for item in safe_get(safe_get(src_json, 'substitution'), 'capabilities'):
274 'key_name': item['mapped_name'],
275 "cp_id": find_node_name(item['node_id'], src_nodes)
277 exposed['forward_cps'].append(forward_cps)
280 def convert_vnffgs(src_json_inst, src_nodes):
282 src_groups = safe_get(src_json_inst, 'groups')
283 for group in src_groups:
284 type_name = group['type_name'].upper()
285 if type_name.find('.VNFFG.') >= 0 or type_name.endswith('.VNFFG'):
286 vnffgs.append(convert_vnffg_group(group, src_groups, src_nodes))
290 def convert_common(src_json, target_json):
291 if isinstance(src_json, str):
292 src_json_dict = json.loads(src_json)
294 src_json_dict = src_json
295 src_json_inst = src_json_dict["instance"]
296 src_json_model = src_json_dict["model"] if "model" in src_json_dict else {}
298 target_json['metadata'] = convert_metadata(src_json_inst)
299 target_json['inputs'] = convert_inputs(src_json_inst)
300 target_json['vls'] = []
301 target_json['cps'] = []
302 target_json['routers'] = []
304 return src_json_inst, src_json_model
307 def convert_policy_node(src_json):
309 'name': src_json['template_name'],
310 'file_url': src_json['properties']['drl_file_url']['value']
316 def convert_nsd_model(src_json):
317 target_json = {'vnfs': [], 'pnfs': [], 'fps': [], 'policies': []}
318 src_json_inst, src_json_model = convert_common(src_json, target_json)
320 src_nodes = src_json_inst['nodes']
321 for node in src_nodes:
322 type_name = node['type_name']
323 if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'):
324 target_json['vnfs'].append(convert_vnf_node(node, src_json_model))
325 elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'):
326 target_json['pnfs'].append(convert_pnf_node(node, src_json_model))
327 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
328 or node['type_name'].find('.RouteExternalVL') > 0:
329 target_json['vls'].append(convert_vl_node(node, src_nodes))
330 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
331 target_json['cps'].append(convert_cp_node(node, src_nodes))
332 elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'):
333 target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model))
334 elif type_name.endswith('.Router'):
335 target_json['routers'].append(convert_router_node(node, src_nodes))
336 elif type_name.endswith('tosca.policies.Drools'):
337 target_json['policies'].append(convert_policy_node(node))
339 target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes)
341 target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []}
342 convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed'])
343 return json.dumps(target_json)
346 def convert_vnfd_model(src_json):
347 target_json = {'image_files': [], 'local_storages': [], 'vdus': []}
348 src_json_inst, src_json_model = convert_common(src_json, target_json)
349 if "vnfdVersion" in src_json_inst.get("metadata", {}):
350 from . import toscautil_new
351 return toscautil_new.convert_vnfd_model(src_json)
353 src_nodes = src_json_inst['nodes']
354 for node in src_nodes:
355 type_name = node['type_name']
356 if type_name.endswith('.ImageFile'):
357 target_json['image_files'].append(convert_imagefile_node(node, src_nodes))
358 elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'):
359 target_json['local_storages'].append(convert_localstorage_node(node, src_nodes))
360 elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'):
361 target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model))
362 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
363 or node['type_name'].find('.RouteExternalVL') > 0:
364 target_json['vls'].append(convert_vl_node(node, src_nodes))
365 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
366 target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD'))
367 elif type_name.endswith('.Router'):
368 target_json['routers'].append(convert_router_node(node, src_nodes))
370 target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []}
371 convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed'])
372 return json.dumps(target_json)
375 if __name__ == '__main__':
376 src_json = json.dumps(
382 "csarVersion": "v1.0",
384 "csarProvider": "ZTE",
386 "invariant_id": "vcpe_ns_sff_1",
388 "description": "vcpe_ns"
393 "type": "tosca.policies.Drools",
395 "drl_file_url": "policies/abc.drl"
403 "type_name": "tosca.policies.Drools",
404 "template_name": "aaa",
407 "type_name": "string",
408 "value": "policies/abc.drl"
413 "id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
414 "type_name": "tosca.nodes.nfv.ext.FP",
415 "template_name": "path2",
418 "type_name": "boolean",
422 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
426 "dest_port_range": "1-100",
427 "ip_protocol": "tcp",
429 "119.1.1.1-119.1.1.10"
433 "get_input": "NatIpRange"
437 "source_port_range": "1-100"
445 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
446 "type_name": "tosca.interfaces.node.lifecycle.Standard",
450 "description": "Standard lifecycle create operation."
454 "description": "Standard lifecycle stop operation."
458 "description": "Standard lifecycle start operation."
462 "description": "Standard lifecycle delete operation."
466 "description": "Standard lifecycle configure operation."
474 "type_name": "tosca.capabilities.Node"
480 "source_requirement_index": 0,
481 "target_node_id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
485 "source_requirement_index": 1,
486 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
490 "source_requirement_index": 2,
491 "target_node_id": "VNAT_cfdljtspvkp234irka59wgab0",
492 "target_capability_name": "feature"
497 "id": "path1_bv53fblv26hawr8dj4fxe2rsd",
498 "type_name": "tosca.nodes.nfv.ext.FP",
499 "template_name": "path1",
502 "type_name": "boolean",
506 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
510 "dest_port_range": "1-100",
511 "ip_protocol": "tcp",
519 "source_port_range": "1-100"
527 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
528 "type_name": "tosca.interfaces.node.lifecycle.Standard",
532 "description": "Standard lifecycle create operation."
536 "description": "Standard lifecycle stop operation."
540 "description": "Standard lifecycle start operation."
544 "description": "Standard lifecycle delete operation."
548 "description": "Standard lifecycle configure operation."
556 "type_name": "tosca.capabilities.Node"
562 "source_requirement_index": 0,
563 "target_node_id": "m6000_data_in_eldly5txw4frny3cc349uz3nc"
567 "source_requirement_index": 1,
568 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
572 "source_requirement_index": 2,
573 "target_node_id": "VFW_57z0ua89aiyl8ncvw7h7mjf34",
574 "target_capability_name": "feature"
578 "source_requirement_index": 3,
579 "target_node_id": "VNAT_cfdljtspvkp234irka59wgab0",
580 "target_capability_name": "feature"
584 "source_requirement_index": 4,
585 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
589 "source_requirement_index": 5,
590 "target_node_id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
595 "id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6",
596 "type_name": "tosca.nodes.nfv.ext.zte.CP",
597 "template_name": "m6000_data_out",
600 "type_name": "string",
601 "value": "bidirectional"
604 "type_name": "string",
608 "type_name": "integer",
612 "type_name": "string",
613 "value": "11-22-33-22-11-44"
616 "type_name": "string",
617 "value": "xgei-0/4/1/5"
620 "type_name": "string",
624 "type_name": "integer",
627 "sfc_encapsulation": {
628 "type_name": "string",
635 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
636 "type_name": "tosca.interfaces.node.lifecycle.Standard",
640 "description": "Standard lifecycle create operation."
644 "description": "Standard lifecycle stop operation."
648 "description": "Standard lifecycle start operation."
652 "description": "Standard lifecycle delete operation."
656 "description": "Standard lifecycle configure operation."
664 "type_name": "tosca.capabilities.Node"
668 "type_name": "tosca.capabilities.nfv.Forwarder"
673 "name": "virtualbinding",
674 "source_requirement_index": 0,
675 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
676 "target_capability_name": "feature"
679 "name": "virtualLink",
680 "source_requirement_index": 1,
681 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
682 "target_capability_name": "feature"
686 "source_requirement_index": 2,
687 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
688 "target_capability_name": "feature"
693 "id": "VFW_57z0ua89aiyl8ncvw7h7mjf34",
694 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VFW",
695 "template_name": "VFW",
698 "type_name": "boolean",
702 "type_name": "string",
703 "value": "vbrasplugin_1.0"
706 "type_name": "string",
709 "request_reclassification": {
710 "type_name": "boolean",
714 "type_name": "string",
718 "type_name": "string",
722 "type_name": "string",
726 "type_name": "boolean",
730 "type_name": "string",
734 "type_name": "string",
738 "type_name": "string",
739 "value": "vcpe_vfw_zte_1_0"
742 "type_name": "boolean",
745 "adjust_vnf_capacity": {
746 "type_name": "boolean",
749 "vmnumber_overquota_alarm": {
750 "type_name": "boolean",
754 "type_name": "string",
758 "type_name": "string",
761 "externalPluginManageNetworkName": {
762 "type_name": "string",
763 "value": "vlan_4007_plugin_net"
766 "type_name": "string",
773 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
774 "type_name": "tosca.interfaces.node.lifecycle.Standard",
778 "description": "Standard lifecycle create operation."
782 "description": "Standard lifecycle stop operation."
786 "description": "Standard lifecycle start operation."
790 "description": "Standard lifecycle delete operation."
794 "description": "Standard lifecycle configure operation."
802 "type_name": "tosca.capabilities.Node"
806 "type_name": "tosca.capabilities.nfv.Forwarder"
809 "name": "vfw_fw_inout",
810 "type_name": "tosca.capabilities.nfv.Forwarder"
815 "name": "vfw_ctrl_by_manager_cp",
816 "source_requirement_index": 0,
817 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
818 "target_capability_name": "feature"
821 "name": "vfw_data_cp",
822 "source_requirement_index": 1,
823 "target_node_id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
824 "target_capability_name": "feature"
827 "name": "virtualLink",
828 "source_requirement_index": 2,
829 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
830 "target_capability_name": "feature"
834 "source_requirement_index": 3,
835 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
836 "target_capability_name": "feature"
841 "id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5",
842 "type_name": "tosca.nodes.nfv.ext.zte.CP",
843 "template_name": "m600_tunnel_cp",
846 "type_name": "string",
847 "value": "bidirectional"
850 "type_name": "string",
854 "type_name": "integer",
858 "type_name": "string",
859 "value": "00-11-00-22-33-00"
862 "type_name": "string",
863 "value": "gei-0/4/0/13"
866 "type_name": "string",
867 "value": "191.167.100.5"
870 "type_name": "integer",
873 "sfc_encapsulation": {
874 "type_name": "string",
881 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
882 "type_name": "tosca.interfaces.node.lifecycle.Standard",
886 "description": "Standard lifecycle create operation."
890 "description": "Standard lifecycle stop operation."
894 "description": "Standard lifecycle start operation."
898 "description": "Standard lifecycle delete operation."
902 "description": "Standard lifecycle configure operation."
910 "type_name": "tosca.capabilities.Node"
914 "type_name": "tosca.capabilities.nfv.Forwarder"
919 "name": "virtualLink",
920 "source_requirement_index": 0,
921 "target_node_id": "ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
922 "target_capability_name": "feature"
925 "name": "virtualbinding",
926 "source_requirement_index": 1,
927 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
928 "target_capability_name": "feature"
932 "source_requirement_index": 2,
933 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
934 "target_capability_name": "feature"
939 "id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
940 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
941 "template_name": "ext_mnet_net",
944 "type_name": "string",
945 "value": "vlan_4008_mng_net"
948 "type_name": "boolean",
952 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
956 "availability_zone": "nova"
960 "type_name": "integer",
964 "type_name": "integer",
968 "type_name": "string",
969 "value": "vlan_4008_mng_net"
972 "type_name": "string",
979 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
980 "type_name": "tosca.interfaces.node.lifecycle.Standard",
984 "description": "Standard lifecycle create operation."
988 "description": "Standard lifecycle stop operation."
992 "description": "Standard lifecycle start operation."
996 "description": "Standard lifecycle delete operation."
1000 "description": "Standard lifecycle configure operation."
1008 "type_name": "tosca.capabilities.Node"
1011 "name": "virtual_linkable",
1012 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1017 "id": "m6000_data_in_eldly5txw4frny3cc349uz3nc",
1018 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1019 "template_name": "m6000_data_in",
1022 "type_name": "string",
1023 "value": "bidirectional"
1026 "type_name": "string",
1030 "type_name": "integer",
1034 "type_name": "string",
1035 "value": "11-22-33-22-11-41"
1038 "type_name": "string",
1039 "value": "gei-0/4/0/7"
1042 "type_name": "string",
1046 "type_name": "integer",
1049 "sfc_encapsulation": {
1050 "type_name": "string",
1054 "type_name": "string",
1061 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1062 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1066 "description": "Standard lifecycle create operation."
1070 "description": "Standard lifecycle stop operation."
1074 "description": "Standard lifecycle start operation."
1078 "description": "Standard lifecycle delete operation."
1081 "name": "configure",
1082 "description": "Standard lifecycle configure operation."
1090 "type_name": "tosca.capabilities.Node"
1093 "name": "forwarder",
1094 "type_name": "tosca.capabilities.nfv.Forwarder"
1099 "name": "virtualbinding",
1100 "source_requirement_index": 0,
1101 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1102 "target_capability_name": "feature"
1105 "name": "virtualLink",
1106 "source_requirement_index": 1,
1107 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1108 "target_capability_name": "feature"
1111 "name": "forwarder",
1112 "source_requirement_index": 2,
1113 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1114 "target_capability_name": "feature"
1119 "id": "ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
1120 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
1121 "template_name": "ext_datanet_net",
1124 "type_name": "string",
1125 "value": "vlan_4004_tunnel_net"
1128 "type_name": "boolean",
1132 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
1136 "availability_zone": "nova"
1140 "type_name": "integer",
1144 "type_name": "integer",
1148 "type_name": "string",
1149 "value": "vlan_4004_tunnel_net"
1152 "type_name": "string",
1159 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1160 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1164 "description": "Standard lifecycle create operation."
1168 "description": "Standard lifecycle stop operation."
1172 "description": "Standard lifecycle start operation."
1176 "description": "Standard lifecycle delete operation."
1179 "name": "configure",
1180 "description": "Standard lifecycle configure operation."
1188 "type_name": "tosca.capabilities.Node"
1191 "name": "virtual_linkable",
1192 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1197 "id": "m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7",
1198 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1199 "template_name": "m600_mnt_cp",
1202 "type_name": "string",
1203 "value": "bidirectional"
1206 "type_name": "string",
1210 "type_name": "integer",
1214 "type_name": "string",
1215 "value": "00-11-00-22-33-11"
1218 "type_name": "string",
1219 "value": "gei-0/4/0/1"
1222 "type_name": "string",
1223 "value": "10.46.244.51"
1226 "type_name": "integer",
1229 "sfc_encapsulation": {
1230 "type_name": "string",
1234 "type_name": "string",
1241 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1242 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1246 "description": "Standard lifecycle create operation."
1250 "description": "Standard lifecycle stop operation."
1254 "description": "Standard lifecycle start operation."
1258 "description": "Standard lifecycle delete operation."
1261 "name": "configure",
1262 "description": "Standard lifecycle configure operation."
1270 "type_name": "tosca.capabilities.Node"
1273 "name": "forwarder",
1274 "type_name": "tosca.capabilities.nfv.Forwarder"
1279 "name": "virtualLink",
1280 "source_requirement_index": 0,
1281 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1282 "target_capability_name": "feature"
1285 "name": "virtualbinding",
1286 "source_requirement_index": 1,
1287 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1288 "target_capability_name": "feature"
1291 "name": "forwarder",
1292 "source_requirement_index": 2,
1293 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1294 "target_capability_name": "feature"
1299 "id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1300 "type_name": "tosca.nodes.nfv.ext.zte.VL",
1301 "template_name": "sfc_data_network",
1304 "type_name": "string",
1305 "value": "sfc_data_network"
1308 "type_name": "boolean",
1312 "type_name": "boolean",
1316 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
1320 "availability_zone": "nova"
1324 "type_name": "integer",
1328 "type_name": "integer",
1332 "type_name": "string",
1333 "value": "sfc_data_network"
1336 "type_name": "string",
1343 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1344 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1348 "description": "Standard lifecycle create operation."
1352 "description": "Standard lifecycle stop operation."
1356 "description": "Standard lifecycle start operation."
1360 "description": "Standard lifecycle delete operation."
1363 "name": "configure",
1364 "description": "Standard lifecycle configure operation."
1372 "type_name": "tosca.capabilities.Node"
1375 "name": "virtual_linkable",
1376 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1381 "id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1382 "type_name": "tosca.nodes.nfv.ext.PNF",
1383 "template_name": "m6000_s",
1386 "type_name": "string",
1389 "request_reclassification": {
1390 "type_name": "boolean",
1394 "type_name": "string",
1398 "type_name": "string",
1401 "management_address": {
1402 "type_name": "string",
1406 "type_name": "string",
1410 "type_name": "boolean",
1417 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1418 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1422 "description": "Standard lifecycle create operation."
1426 "description": "Standard lifecycle stop operation."
1430 "description": "Standard lifecycle start operation."
1434 "description": "Standard lifecycle delete operation."
1437 "name": "configure",
1438 "description": "Standard lifecycle configure operation."
1446 "type_name": "tosca.capabilities.Node"
1449 "name": "virtualBinding",
1450 "type_name": "tosca.capabilities.nfv.VirtualBindable"
1453 "name": "forwarder",
1454 "type_name": "tosca.capabilities.nfv.Forwarder"
1459 "name": "forwarder",
1460 "source_requirement_index": 0,
1461 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1462 "target_capability_name": "feature"
1467 "id": "VNAT_cfdljtspvkp234irka59wgab0",
1468 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VNAT",
1469 "template_name": "VNAT",
1472 "type_name": "boolean",
1476 "type_name": "string",
1477 "value": "vbrasplugin_1.0"
1480 "type_name": "string",
1483 "request_reclassification": {
1484 "type_name": "boolean",
1488 "type_name": "string",
1491 "vnf_extend_type": {
1492 "type_name": "string",
1495 "externalPluginManageNetworkName": {
1496 "type_name": "string",
1497 "value": "vlan_4007_plugin_net"
1500 "type_name": "string",
1504 "type_name": "boolean",
1508 "type_name": "string",
1512 "type_name": "string",
1516 "type_name": "string",
1517 "value": "vcpe_vnat_zte_1"
1520 "type_name": "boolean",
1523 "adjust_vnf_capacity": {
1524 "type_name": "boolean",
1527 "vmnumber_overquota_alarm": {
1528 "type_name": "boolean",
1532 "type_name": "string",
1536 "type_name": "string",
1537 "value": "192.167.0.10-192.168.0.20"
1540 "type_name": "string",
1544 "type_name": "string",
1551 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1552 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1556 "description": "Standard lifecycle create operation."
1560 "description": "Standard lifecycle stop operation."
1564 "description": "Standard lifecycle start operation."
1568 "description": "Standard lifecycle delete operation."
1571 "name": "configure",
1572 "description": "Standard lifecycle configure operation."
1580 "type_name": "tosca.capabilities.Node"
1583 "name": "forwarder",
1584 "type_name": "tosca.capabilities.nfv.Forwarder"
1587 "name": "vnat_fw_inout",
1588 "type_name": "tosca.capabilities.nfv.Forwarder"
1593 "name": "vnat_ctrl_by_manager_cp",
1594 "source_requirement_index": 0,
1595 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1596 "target_capability_name": "feature"
1599 "name": "vnat_data_cp",
1600 "source_requirement_index": 1,
1601 "target_node_id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1602 "target_capability_name": "feature"
1605 "name": "virtualLink",
1606 "source_requirement_index": 2,
1607 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1608 "target_capability_name": "feature"
1611 "name": "forwarder",
1612 "source_requirement_index": 3,
1613 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1614 "target_capability_name": "feature"
1621 "id": "vnffg1_wk1aqhk6exoh5fmds2unu0uyc",
1622 "type_name": "tosca.groups.nfv.VNFFG",
1623 "template_name": "vnffg1",
1626 "type_name": "string",
1629 "connection_point": {
1630 "type_name": "list",
1638 "type_name": "string",
1641 "constituent_vnfs": {
1642 "type_name": "list",
1648 "number_of_endpoints": {
1649 "type_name": "integer",
1652 "dependent_virtual_link": {
1653 "type_name": "list",
1664 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1665 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1669 "description": "Standard lifecycle create operation."
1673 "description": "Standard lifecycle stop operation."
1677 "description": "Standard lifecycle start operation."
1681 "description": "Standard lifecycle delete operation."
1684 "name": "configure",
1685 "description": "Standard lifecycle configure operation."
1690 "member_node_ids": [
1691 "path1_bv53fblv26hawr8dj4fxe2rsd",
1692 "path2_kgmfqr5ldqs9lj3oscrgxqefc"
1697 "node_type_name": "tosca.nodes.nfv.NS.VCPE_NS"
1700 "externalDataNetworkName": {
1701 "type_name": "string",
1702 "value": "vlan_4004_tunnel_net"
1704 "sfc_data_network": {
1705 "type_name": "string",
1706 "value": "sfc_data_network"
1709 "type_name": "string",
1710 "value": "192.167.0.10-192.168.0.20"
1712 "externalManageNetworkName": {
1713 "type_name": "string",
1714 "value": "vlan_4008_mng_net"
1716 "externalPluginManageNetworkName": {
1717 "type_name": "string",
1718 "value": "vlan_4007_plugin_net"
1726 "csarVersion": "v1.0",
1728 "csarProvider": "ZTE",
1730 "invariant_id": "vcpe_ns_sff_1",
1732 "description": "vcpe_ns"
1737 "type_name": "tosca.nodes.nfv.ext.FP",
1738 "default_instances": 1,
1742 "type_name": "boolean",
1746 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
1750 "dest_port_range": "1-100",
1751 "ip_protocol": "tcp",
1752 "source_ip_range": [
1753 "119.1.1.1-119.1.1.10"
1757 "get_input": "NatIpRange"
1761 "source_port_range": "1-100"
1766 "interface_templates": [
1767 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>"
1769 "capability_templates": [
1772 "type_name": "tosca.capabilities.Node"
1775 "requirement_templates": [
1777 "name": "forwarder",
1778 "target_node_template_name": "m6000_data_out"
1781 "name": "forwarder",
1782 "target_node_template_name": "m600_tunnel_cp"
1785 "name": "forwarder",
1786 "target_node_template_name": "VNAT",
1787 "target_capability_name": "vnat_fw_inout"
1793 "type_name": "tosca.nodes.nfv.ext.FP",
1794 "default_instances": 1,
1798 "type_name": "boolean",
1802 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
1806 "dest_port_range": "1-100",
1807 "ip_protocol": "tcp",
1808 "source_ip_range": [
1815 "source_port_range": "1-100"
1820 "interface_templates": [
1821 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>"
1823 "capability_templates": [
1826 "type_name": "tosca.capabilities.Node"
1829 "requirement_templates": [
1831 "name": "forwarder",
1832 "target_node_template_name": "m6000_data_in"
1835 "name": "forwarder",
1836 "target_node_template_name": "m600_tunnel_cp"
1839 "name": "forwarder",
1840 "target_node_template_name": "VFW",
1841 "target_capability_name": "vfw_fw_inout"
1844 "name": "forwarder",
1845 "target_node_template_name": "VNAT",
1846 "target_capability_name": "vnat_fw_inout"
1849 "name": "forwarder",
1850 "target_node_template_name": "m600_tunnel_cp"
1853 "name": "forwarder",
1854 "target_node_template_name": "m6000_data_out"
1859 "name": "m6000_data_out",
1860 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1861 "default_instances": 1,
1865 "type_name": "string",
1866 "value": "bidirectional"
1869 "type_name": "string",
1873 "type_name": "integer",
1877 "type_name": "string",
1878 "value": "11-22-33-22-11-44"
1881 "type_name": "string",
1882 "value": "xgei-0/4/1/5"
1885 "type_name": "string",
1886 "value": "176.1.1.2"
1889 "type_name": "integer",
1892 "sfc_encapsulation": {
1893 "type_name": "string",
1897 "interface_templates": [
1898 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>"
1900 "capability_templates": [
1903 "type_name": "tosca.capabilities.Node"
1906 "name": "forwarder",
1907 "type_name": "tosca.capabilities.nfv.Forwarder"
1910 "requirement_templates": [
1912 "name": "virtualbinding",
1913 "target_node_template_name": "m6000_s",
1914 "target_capability_name": "virtualBinding"
1917 "name": "virtualLink",
1918 "target_node_type_name": "tosca.nodes.Root"
1921 "name": "forwarder",
1922 "target_node_type_name": "tosca.nodes.Root"
1928 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VFW",
1929 "default_instances": 1,
1933 "type_name": "boolean",
1937 "type_name": "string",
1938 "value": "vbrasplugin_1.0"
1941 "type_name": "string",
1944 "request_reclassification": {
1945 "type_name": "boolean",
1948 "vnf_extend_type": {
1949 "type_name": "string",
1953 "type_name": "string",
1957 "type_name": "string",
1961 "type_name": "boolean",
1965 "type_name": "string",
1969 "type_name": "string",
1973 "type_name": "string",
1974 "value": "vcpe_vfw_zte_1_0"
1977 "type_name": "boolean",
1980 "adjust_vnf_capacity": {
1981 "type_name": "boolean",
1984 "vmnumber_overquota_alarm": {
1985 "type_name": "boolean",
1989 "type_name": "string",
1993 "type_name": "string",
1996 "externalPluginManageNetworkName": {
1997 "type_name": "string",
1998 "value": "vlan_4007_plugin_net"
2001 "type_name": "string",
2005 "interface_templates": [
2006 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>"
2008 "capability_templates": [
2011 "type_name": "tosca.capabilities.Node"
2014 "name": "forwarder",
2015 "type_name": "tosca.capabilities.nfv.Forwarder"
2018 "name": "vfw_fw_inout",
2019 "type_name": "tosca.capabilities.nfv.Forwarder"
2022 "requirement_templates": [
2024 "name": "vfw_ctrl_by_manager_cp",
2025 "target_node_template_name": "ext_mnet_net",
2026 "target_capability_name": "virtual_linkable"
2029 "name": "vfw_data_cp",
2030 "target_node_template_name": "sfc_data_network",
2031 "target_capability_name": "virtual_linkable"
2034 "name": "virtualLink",
2035 "target_node_type_name": "tosca.nodes.Root"
2038 "name": "forwarder",
2039 "target_node_type_name": "tosca.nodes.Root"
2044 "name": "m600_tunnel_cp",
2045 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2046 "default_instances": 1,
2050 "type_name": "string",
2051 "value": "bidirectional"
2054 "type_name": "string",
2058 "type_name": "integer",
2062 "type_name": "string",
2063 "value": "00-11-00-22-33-00"
2066 "type_name": "string",
2067 "value": "gei-0/4/0/13"
2070 "type_name": "string",
2071 "value": "191.167.100.5"
2074 "type_name": "integer",
2077 "sfc_encapsulation": {
2078 "type_name": "string",
2082 "interface_templates": [
2083 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>"
2085 "capability_templates": [
2088 "type_name": "tosca.capabilities.Node"
2091 "name": "forwarder",
2092 "type_name": "tosca.capabilities.nfv.Forwarder"
2095 "requirement_templates": [
2097 "name": "virtualLink",
2098 "target_node_template_name": "ext_datanet_net",
2099 "target_capability_name": "virtual_linkable"
2102 "name": "virtualbinding",
2103 "target_node_template_name": "m6000_s",
2104 "target_capability_name": "virtualBinding"
2107 "name": "forwarder",
2108 "target_node_type_name": "tosca.nodes.Root"
2113 "name": "ext_mnet_net",
2114 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
2115 "default_instances": 1,
2119 "type_name": "string",
2120 "value": "vlan_4008_mng_net"
2123 "type_name": "boolean",
2127 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2131 "availability_zone": "nova"
2135 "type_name": "integer",
2139 "type_name": "integer",
2143 "type_name": "string",
2144 "value": "vlan_4008_mng_net"
2147 "type_name": "string",
2151 "interface_templates": [
2152 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>"
2154 "capability_templates": [
2157 "type_name": "tosca.capabilities.Node"
2160 "name": "virtual_linkable",
2161 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2166 "name": "m6000_data_in",
2167 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2168 "default_instances": 1,
2172 "type_name": "string",
2173 "value": "bidirectional"
2176 "type_name": "string",
2180 "type_name": "integer",
2184 "type_name": "string",
2185 "value": "11-22-33-22-11-41"
2188 "type_name": "string",
2189 "value": "gei-0/4/0/7"
2192 "type_name": "string",
2196 "type_name": "integer",
2199 "sfc_encapsulation": {
2200 "type_name": "string",
2204 "type_name": "string",
2208 "interface_templates": [
2209 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>"
2211 "capability_templates": [
2214 "type_name": "tosca.capabilities.Node"
2217 "name": "forwarder",
2218 "type_name": "tosca.capabilities.nfv.Forwarder"
2221 "requirement_templates": [
2223 "name": "virtualbinding",
2224 "target_node_template_name": "m6000_s",
2225 "target_capability_name": "virtualBinding"
2228 "name": "virtualLink",
2229 "target_node_type_name": "tosca.nodes.Root"
2232 "name": "forwarder",
2233 "target_node_type_name": "tosca.nodes.Root"
2238 "name": "ext_datanet_net",
2239 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
2240 "default_instances": 1,
2244 "type_name": "string",
2245 "value": "vlan_4004_tunnel_net"
2248 "type_name": "boolean",
2252 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2256 "availability_zone": "nova"
2260 "type_name": "integer",
2264 "type_name": "integer",
2268 "type_name": "string",
2269 "value": "vlan_4004_tunnel_net"
2272 "type_name": "string",
2276 "interface_templates": [
2277 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>"
2279 "capability_templates": [
2282 "type_name": "tosca.capabilities.Node"
2285 "name": "virtual_linkable",
2286 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2291 "name": "m600_mnt_cp",
2292 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2293 "default_instances": 1,
2297 "type_name": "string",
2298 "value": "bidirectional"
2301 "type_name": "string",
2305 "type_name": "integer",
2309 "type_name": "string",
2310 "value": "00-11-00-22-33-11"
2313 "type_name": "string",
2314 "value": "gei-0/4/0/1"
2317 "type_name": "string",
2318 "value": "10.46.244.51"
2321 "type_name": "integer",
2324 "sfc_encapsulation": {
2325 "type_name": "string",
2329 "type_name": "string",
2333 "interface_templates": [
2334 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>"
2336 "capability_templates": [
2339 "type_name": "tosca.capabilities.Node"
2342 "name": "forwarder",
2343 "type_name": "tosca.capabilities.nfv.Forwarder"
2346 "requirement_templates": [
2348 "name": "virtualLink",
2349 "target_node_template_name": "ext_mnet_net",
2350 "target_capability_name": "virtual_linkable"
2353 "name": "virtualbinding",
2354 "target_node_template_name": "m6000_s",
2355 "target_capability_name": "virtualBinding"
2358 "name": "forwarder",
2359 "target_node_type_name": "tosca.nodes.Root"
2364 "name": "sfc_data_network",
2365 "type_name": "tosca.nodes.nfv.ext.zte.VL",
2366 "default_instances": 1,
2370 "type_name": "string",
2371 "value": "sfc_data_network"
2374 "type_name": "boolean",
2378 "type_name": "boolean",
2382 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2386 "availability_zone": "nova"
2390 "type_name": "integer",
2394 "type_name": "integer",
2398 "type_name": "string",
2399 "value": "sfc_data_network"
2402 "type_name": "string",
2406 "interface_templates": [
2407 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>"
2409 "capability_templates": [
2412 "type_name": "tosca.capabilities.Node"
2415 "name": "virtual_linkable",
2416 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2422 "type_name": "tosca.nodes.nfv.ext.PNF",
2423 "default_instances": 1,
2427 "type_name": "string",
2430 "request_reclassification": {
2431 "type_name": "boolean",
2435 "type_name": "string",
2439 "type_name": "string",
2442 "management_address": {
2443 "type_name": "string",
2447 "type_name": "string",
2451 "type_name": "boolean",
2455 "interface_templates": [
2456 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>"
2458 "capability_templates": [
2461 "type_name": "tosca.capabilities.Node"
2464 "name": "virtualBinding",
2465 "type_name": "tosca.capabilities.nfv.VirtualBindable"
2468 "name": "forwarder",
2469 "type_name": "tosca.capabilities.nfv.Forwarder"
2472 "requirement_templates": [
2474 "name": "forwarder",
2475 "target_node_type_name": "tosca.nodes.Root"
2481 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VNAT",
2482 "default_instances": 1,
2486 "type_name": "boolean",
2490 "type_name": "string",
2491 "value": "vbrasplugin_1.0"
2494 "type_name": "string",
2497 "request_reclassification": {
2498 "type_name": "boolean",
2502 "type_name": "string",
2505 "vnf_extend_type": {
2506 "type_name": "string",
2509 "externalPluginManageNetworkName": {
2510 "type_name": "string",
2511 "value": "vlan_4007_plugin_net"
2514 "type_name": "string",
2518 "type_name": "boolean",
2522 "type_name": "string",
2526 "type_name": "string",
2530 "type_name": "string",
2531 "value": "vcpe_vnat_zte_1"
2534 "type_name": "boolean",
2537 "adjust_vnf_capacity": {
2538 "type_name": "boolean",
2541 "vmnumber_overquota_alarm": {
2542 "type_name": "boolean",
2546 "type_name": "string",
2550 "type_name": "string",
2551 "value": "192.167.0.10-192.168.0.20"
2554 "type_name": "string",
2558 "type_name": "string",
2562 "interface_templates": [
2563 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>"
2565 "capability_templates": [
2568 "type_name": "tosca.capabilities.Node"
2571 "name": "forwarder",
2572 "type_name": "tosca.capabilities.nfv.Forwarder"
2575 "name": "vnat_fw_inout",
2576 "type_name": "tosca.capabilities.nfv.Forwarder"
2579 "requirement_templates": [
2581 "name": "vnat_ctrl_by_manager_cp",
2582 "target_node_template_name": "ext_mnet_net",
2583 "target_capability_name": "virtual_linkable"
2586 "name": "vnat_data_cp",
2587 "target_node_template_name": "sfc_data_network",
2588 "target_capability_name": "virtual_linkable"
2591 "name": "virtualLink",
2592 "target_node_type_name": "tosca.nodes.Root"
2595 "name": "forwarder",
2596 "target_node_type_name": "tosca.nodes.Root"
2601 "group_templates": [
2604 "type_name": "tosca.groups.nfv.VNFFG",
2607 "type_name": "string",
2610 "connection_point": {
2611 "type_name": "list",
2619 "type_name": "string",
2622 "constituent_vnfs": {
2623 "type_name": "list",
2629 "number_of_endpoints": {
2630 "type_name": "integer",
2633 "dependent_virtual_link": {
2634 "type_name": "list",
2642 "interface_templates": [
2643 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>"
2645 "member_node_template_names": [
2651 "substitution_template": {
2652 "node_type_name": "tosca.nodes.nfv.NS.VCPE_NS"
2655 "externalDataNetworkName": {
2656 "type_name": "string",
2657 "value": "vlan_4004_tunnel_net"
2659 "sfc_data_network": {
2660 "type_name": "string",
2661 "value": "sfc_data_network"
2664 "type_name": "string",
2665 "value": "192.167.0.10-192.168.0.20"
2667 "externalManageNetworkName": {
2668 "type_name": "string",
2669 "value": "vlan_4008_mng_net"
2671 "externalPluginManageNetworkName": {
2672 "type_name": "string",
2673 "value": "vlan_4007_plugin_net"
2679 print(convert_nsd_model(src_json))