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.
17 def safe_get(key_val, key):
18 return key_val[key] if key in key_val else ""
21 def find_node_name(node_id, node_list):
22 for node in node_list:
23 if node['id'] == node_id:
24 return node['template_name']
25 raise Exception('can not find node(%s).' % node_id)
28 def find_node_type(node_id, node_list):
29 for node in node_list:
30 if node['id'] == node_id:
31 return node['type_name']
32 raise Exception('can not find node(%s).' % node_id)
35 def find_related_node(node_id, src_json_model, requirement_name):
37 for model_tpl in safe_get(src_json_model, "node_templates"):
38 for rt in safe_get(model_tpl, 'requirement_templates'):
39 if safe_get(rt, 'name') == requirement_name and \
40 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 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 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):
73 vnf_node = {'type': src_node['type_name'], 'vnf_id': src_node['template_name'],
74 'description': '', 'properties': {}, 'dependencies': [], 'networks': []}
75 convert_props(src_node, vnf_node)
76 for model_tpl in safe_get(src_json_model, "node_templates"):
77 if model_tpl['name'] != vnf_node['vnf_id']:
79 vnf_node['dependencies'] = [{
80 'key_name': requirement['name'],
81 'vl_id': requirement['target_node_template_name']} for \
82 requirement in safe_get(model_tpl, 'requirement_templates') if \
83 safe_get(requirement, 'target_capability_name') == 'virtual_linkable']
84 vnf_node['networks'] = [requirement['target_node_template_name'] for \
85 requirement in safe_get(model_tpl, 'requirement_templates') if \
86 safe_get(requirement, 'name') == 'dependency']
90 def convert_pnf_node(src_node, src_json_model):
91 pnf_node = {'pnf_id': src_node['template_name'], 'description': '', 'properties': {}}
92 convert_props(src_node, pnf_node)
93 pnf_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
97 def convert_vl_node(src_node, src_node_list):
98 vl_node = {'vl_id': src_node['template_name'], 'description': '', 'properties': {}}
99 convert_props(src_node, vl_node)
100 vl_node['route_id'] = ''
101 for relation in safe_get(src_node, 'relationships'):
102 if safe_get(relation, 'type_name').endswith('.VirtualLinksTo'):
103 vl_node['route_id'] = find_node_name(relation['target_node_id'], src_node_list)
105 vl_node['route_external'] = (src_node['type_name'].find('.RouteExternalVL') > 0)
109 def convert_cp_node(src_node, src_node_list, model_type='NSD'):
110 cp_node = {'cp_id': src_node['template_name'], 'description': '', 'properties': {}}
111 convert_props(src_node, cp_node)
112 src_relationships = src_node['relationships']
113 for relation in src_relationships:
114 if safe_get(relation, 'name') == 'virtualLink':
115 cp_node['vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
116 elif safe_get(relation, 'name') == 'virtualbinding':
117 node_key = 'pnf_id' if model_type == 'NSD' else 'vdu_id'
118 cp_node[node_key] = find_node_name(relation['target_node_id'], src_node_list)
122 def convert_router_node(src_node, src_node_list):
123 router_node = {'router_id': src_node['template_name'], 'description': '', 'properties': {}}
124 convert_props(src_node, router_node)
125 for relation in src_node['relationships']:
126 if safe_get(relation, 'name') != 'external_virtual_link':
128 router_node['external_vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
129 router_node['external_ip_addresses'] = []
130 if 'properties' not in relation:
132 for prop_name, prop_info in relation['properties'].items():
133 if prop_name == 'router_ip_address':
134 router_node['external_ip_addresses'].append(prop_info['value'])
139 def convert_fp_node(src_node, src_node_list, src_json_model):
140 fp_node = {'fp_id': src_node['template_name'], 'description': '',
141 'properties': {}, 'forwarder_list': []}
142 convert_props(src_node, fp_node)
143 for relation in safe_get(src_node, 'relationships'):
144 if safe_get(relation, 'name') != 'forwarder':
146 forwarder_point = {'type': 'vnf'}
147 target_node_type = find_node_type(relation['target_node_id'], src_node_list).upper()
148 if target_node_type.find('.CP.') >= 0 or target_node_type.endswith('.CP'):
149 forwarder_point['type'] = 'cp'
150 forwarder_point['node_name'] = find_node_name(relation['target_node_id'], src_node_list)
151 forwarder_point['capability'] = ''
152 if forwarder_point['type'] == 'vnf':
153 for node_tpl in src_json_model["node_templates"]:
154 if fp_node['fp_id'] != node_tpl["name"]:
156 for r_tpl in safe_get(node_tpl, "requirement_templates"):
157 if safe_get(r_tpl, "target_node_template_name") != forwarder_point['node_name']:
159 forwarder_point['capability'] = safe_get(r_tpl, "target_capability_name")
162 fp_node['forwarder_list'].append(forwarder_point)
166 def convert_vnffg_group(src_group, src_group_list, src_node_list):
167 vnffg = {'vnffg_id': src_group['template_name'], 'description': '',
168 'properties': {}, 'members': []}
169 convert_props(src_group, vnffg)
170 for member_node_id in src_group['member_node_ids']:
171 vnffg['members'].append(find_node_name(member_node_id, src_node_list))
175 def convert_imagefile_node(src_node, src_node_list):
176 image_node = {'image_file_id': src_node['template_name'], 'description': '',
178 convert_props(src_node, image_node)
182 def convert_localstorage_node(src_node, src_node_list):
183 localstorage_node = {'local_storage_id': src_node['template_name'], 'description': '',
185 convert_props(src_node, localstorage_node)
186 return localstorage_node
189 def convert_vdu_node(src_node, src_node_list, src_json_model):
190 vdu_node = {'vdu_id': src_node['template_name'], 'description': '', 'properties': {},
191 'image_file': '', 'local_storages': [], 'dependencies': [], 'nfv_compute': {},
192 'vls': [], 'artifacts': []}
193 convert_props(src_node, vdu_node)
195 for relation in src_node['relationships']:
196 r_id, r_name = safe_get(relation, 'target_node_id'), safe_get(relation, 'name')
197 if r_name == 'guest_os':
198 vdu_node['image_file'] = find_node_name(r_id, src_node_list)
199 elif r_name == 'local_storage':
200 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
201 elif r_name.endswith('.AttachesTo'):
202 nt = find_node_type(r_id, src_node_list)
203 if nt.endswith('.BlockStorage.Local') or nt.endswith('.LocalStorage'):
204 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
206 for capability in src_node['capabilities']:
207 if capability['name'] != 'nfv_compute':
209 for prop_name, prop_info in capability['properties'].items():
210 if 'value' in prop_info:
211 vdu_node['nfv_compute'][prop_name] = prop_info['value']
213 vdu_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
215 for cp_node in vdu_node['cps']:
216 for src_cp_node in src_node_list:
217 if src_cp_node['template_name'] != cp_node:
219 for relation in safe_get(src_cp_node, 'relationships'):
220 if relation['name'] != 'virtualLink':
222 vl_node_name = find_node_name(relation['target_node_id'], src_node_list)
223 if vl_node_name not in vdu_node['vls']:
224 vdu_node['vls'].append(vl_node_name)
226 for item in safe_get(src_node, 'artifacts'):
227 artifact = {'artifact_name': item['name'], 'type': item['type_name'],
228 'file': item['source_path']}
229 vdu_node['artifacts'].append(artifact)
234 def convert_exposed_node(src_json, src_nodes, exposed):
235 for item in safe_get(safe_get(src_json, 'substitution'), 'requirements'):
236 exposed['external_cps'].append({'key_name': item['mapped_name'],
237 "cp_id": find_node_name(item['node_id'], src_nodes)})
238 for item in safe_get(safe_get(src_json, 'substitution'), 'capabilities'):
239 exposed['forward_cps'].append({'key_name': item['mapped_name'],
240 "cp_id": find_node_name(item['node_id'], src_nodes)})
243 def convert_vnffgs(src_json_inst, src_nodes):
245 src_groups = safe_get(src_json_inst, 'groups')
246 for group in src_groups:
247 type_name = group['type_name'].upper()
248 if type_name.find('.VNFFG.') >= 0 or type_name.endswith('.VNFFG'):
249 vnffgs.append(convert_vnffg_group(group, src_groups, src_nodes))
253 def convert_common(src_json, target_json):
254 if isinstance(src_json, (unicode, str)):
255 src_json_dict = json.loads(src_json)
257 src_json_dict = src_json
258 src_json_inst = src_json_dict["instance"]
259 src_json_model = src_json_dict["model"] if "model" in src_json_dict else {}
261 target_json['metadata'] = convert_metadata(src_json_inst)
262 target_json['inputs'] = convert_inputs(src_json_inst)
263 target_json['vls'] = []
264 target_json['cps'] = []
265 target_json['routers'] = []
267 return src_json_inst, src_json_model
269 def convert_policy_node(src_json):
270 target_json = {'name': src_json['template_name'],'file_url': src_json['properties']['drl_file_url']['value']}
274 def convert_nsd_model(src_json):
275 target_json = {'vnfs': [], 'pnfs': [], 'fps': [], 'policies': []}
276 src_json_inst, src_json_model = convert_common(src_json, target_json)
278 src_nodes = src_json_inst['nodes']
279 for node in src_nodes:
280 type_name = node['type_name']
281 if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'):
282 target_json['vnfs'].append(convert_vnf_node(node, src_json_model))
283 elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'):
284 target_json['pnfs'].append(convert_pnf_node(node, src_json_model))
285 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
286 or node['type_name'].find('.RouteExternalVL') > 0:
287 target_json['vls'].append(convert_vl_node(node, src_nodes))
288 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
289 target_json['cps'].append(convert_cp_node(node, src_nodes))
290 elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'):
291 target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model))
292 elif type_name.endswith('.Router'):
293 target_json['routers'].append(convert_router_node(node, src_nodes))
294 elif type_name.endswith('tosca.policies.Drools'):
295 target_json['policies'].append(convert_policy_node(node))
297 target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes)
299 target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []}
300 convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed'])
301 return json.dumps(target_json)
304 def convert_vnfd_model(src_json):
305 target_json = {'image_files': [], 'local_storages': [], 'vdus': []}
306 src_json_inst, src_json_model = convert_common(src_json, target_json)
307 if "vnfdVersion" in src_json_inst.get("metadata", {}):
308 from . import toscautil_new
309 return toscautil_new.convert_vnfd_model(src_json)
311 src_nodes = src_json_inst['nodes']
312 for node in src_nodes:
313 type_name = node['type_name']
314 if type_name.endswith('.ImageFile'):
315 target_json['image_files'].append(convert_imagefile_node(node, src_nodes))
316 elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'):
317 target_json['local_storages'].append(convert_localstorage_node(node, src_nodes))
318 elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'):
319 target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model))
320 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
321 or node['type_name'].find('.RouteExternalVL') > 0:
322 target_json['vls'].append(convert_vl_node(node, src_nodes))
323 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
324 target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD'))
325 elif type_name.endswith('.Router'):
326 target_json['routers'].append(convert_router_node(node, src_nodes))
328 target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []}
329 convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed'])
330 return json.dumps(target_json)
332 if __name__ == '__main__':
333 src_json = json.dumps(
339 "csarVersion":"v1.0",
341 "csarProvider":"ZTE",
343 "invariant_id":"vcpe_ns_sff_1",
345 "description":"vcpe_ns"
350 "type": "tosca.policies.Drools",
352 "drl_file_url":"policies/abc.drl"
360 "type_name":"tosca.policies.Drools",
361 "template_name":"aaa",
364 "type_name":"string",
365 "value":"policies/abc.drl"
370 "id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
371 "type_name":"tosca.nodes.nfv.ext.FP",
372 "template_name":"path2",
375 "type_name":"boolean",
379 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
383 "dest_port_range":"1-100",
386 "119.1.1.1-119.1.1.10"
389 {"get_input":"NatIpRange"}
392 "source_port_range":"1-100"
400 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
401 "type_name":"tosca.interfaces.node.lifecycle.Standard",
405 "description":"Standard lifecycle create operation."
409 "description":"Standard lifecycle stop operation."
413 "description":"Standard lifecycle start operation."
417 "description":"Standard lifecycle delete operation."
421 "description":"Standard lifecycle configure operation."
429 "type_name":"tosca.capabilities.Node"
435 "source_requirement_index":0,
436 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
440 "source_requirement_index":1,
441 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
445 "source_requirement_index":2,
446 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
447 "target_capability_name":"feature"
452 "id":"path1_bv53fblv26hawr8dj4fxe2rsd",
453 "type_name":"tosca.nodes.nfv.ext.FP",
454 "template_name":"path1",
457 "type_name":"boolean",
461 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
465 "dest_port_range":"1-100",
474 "source_port_range":"1-100"
482 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
483 "type_name":"tosca.interfaces.node.lifecycle.Standard",
487 "description":"Standard lifecycle create operation."
491 "description":"Standard lifecycle stop operation."
495 "description":"Standard lifecycle start operation."
499 "description":"Standard lifecycle delete operation."
503 "description":"Standard lifecycle configure operation."
511 "type_name":"tosca.capabilities.Node"
517 "source_requirement_index":0,
518 "target_node_id":"m6000_data_in_eldly5txw4frny3cc349uz3nc"
522 "source_requirement_index":1,
523 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
527 "source_requirement_index":2,
528 "target_node_id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
529 "target_capability_name":"feature"
533 "source_requirement_index":3,
534 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
535 "target_capability_name":"feature"
539 "source_requirement_index":4,
540 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
544 "source_requirement_index":5,
545 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
550 "id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6",
551 "type_name":"tosca.nodes.nfv.ext.zte.CP",
552 "template_name":"m6000_data_out",
555 "type_name":"string",
556 "value":"bidirectional"
559 "type_name":"string",
563 "type_name":"integer",
567 "type_name":"string",
568 "value":"11-22-33-22-11-44"
571 "type_name":"string",
572 "value":"xgei-0/4/1/5"
575 "type_name":"string",
579 "type_name":"integer",
582 "sfc_encapsulation":{
583 "type_name":"string",
590 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
591 "type_name":"tosca.interfaces.node.lifecycle.Standard",
595 "description":"Standard lifecycle create operation."
599 "description":"Standard lifecycle stop operation."
603 "description":"Standard lifecycle start operation."
607 "description":"Standard lifecycle delete operation."
611 "description":"Standard lifecycle configure operation."
619 "type_name":"tosca.capabilities.Node"
623 "type_name":"tosca.capabilities.nfv.Forwarder"
628 "name":"virtualbinding",
629 "source_requirement_index":0,
630 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
631 "target_capability_name":"feature"
634 "name":"virtualLink",
635 "source_requirement_index":1,
636 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
637 "target_capability_name":"feature"
641 "source_requirement_index":2,
642 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
643 "target_capability_name":"feature"
648 "id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
649 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
650 "template_name":"VFW",
653 "type_name":"boolean",
657 "type_name":"string",
658 "value":"vbrasplugin_1.0"
661 "type_name":"string",
664 "request_reclassification":{
665 "type_name":"boolean",
669 "type_name":"string",
673 "type_name":"string",
677 "type_name":"string",
681 "type_name":"boolean",
685 "type_name":"string",
689 "type_name":"string",
693 "type_name":"string",
694 "value":"vcpe_vfw_zte_1_0"
697 "type_name":"boolean",
700 "adjust_vnf_capacity":{
701 "type_name":"boolean",
704 "vmnumber_overquota_alarm":{
705 "type_name":"boolean",
709 "type_name":"string",
713 "type_name":"string",
716 "externalPluginManageNetworkName":{
717 "type_name":"string",
718 "value":"vlan_4007_plugin_net"
721 "type_name":"string",
728 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
729 "type_name":"tosca.interfaces.node.lifecycle.Standard",
733 "description":"Standard lifecycle create operation."
737 "description":"Standard lifecycle stop operation."
741 "description":"Standard lifecycle start operation."
745 "description":"Standard lifecycle delete operation."
749 "description":"Standard lifecycle configure operation."
757 "type_name":"tosca.capabilities.Node"
761 "type_name":"tosca.capabilities.nfv.Forwarder"
764 "name":"vfw_fw_inout",
765 "type_name":"tosca.capabilities.nfv.Forwarder"
770 "name":"vfw_ctrl_by_manager_cp",
771 "source_requirement_index":0,
772 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
773 "target_capability_name":"feature"
776 "name":"vfw_data_cp",
777 "source_requirement_index":1,
778 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
779 "target_capability_name":"feature"
782 "name":"virtualLink",
783 "source_requirement_index":2,
784 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
785 "target_capability_name":"feature"
789 "source_requirement_index":3,
790 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
791 "target_capability_name":"feature"
796 "id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5",
797 "type_name":"tosca.nodes.nfv.ext.zte.CP",
798 "template_name":"m600_tunnel_cp",
801 "type_name":"string",
802 "value":"bidirectional"
805 "type_name":"string",
809 "type_name":"integer",
813 "type_name":"string",
814 "value":"00-11-00-22-33-00"
817 "type_name":"string",
818 "value":"gei-0/4/0/13"
821 "type_name":"string",
822 "value":"191.167.100.5"
825 "type_name":"integer",
828 "sfc_encapsulation":{
829 "type_name":"string",
836 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
837 "type_name":"tosca.interfaces.node.lifecycle.Standard",
841 "description":"Standard lifecycle create operation."
845 "description":"Standard lifecycle stop operation."
849 "description":"Standard lifecycle start operation."
853 "description":"Standard lifecycle delete operation."
857 "description":"Standard lifecycle configure operation."
865 "type_name":"tosca.capabilities.Node"
869 "type_name":"tosca.capabilities.nfv.Forwarder"
874 "name":"virtualLink",
875 "source_requirement_index":0,
876 "target_node_id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
877 "target_capability_name":"feature"
880 "name":"virtualbinding",
881 "source_requirement_index":1,
882 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
883 "target_capability_name":"feature"
887 "source_requirement_index":2,
888 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
889 "target_capability_name":"feature"
894 "id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
895 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
896 "template_name":"ext_mnet_net",
899 "type_name":"string",
900 "value":"vlan_4008_mng_net"
903 "type_name":"boolean",
907 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
911 "availability_zone":"nova"
915 "type_name":"integer",
919 "type_name":"integer",
923 "type_name":"string",
924 "value":"vlan_4008_mng_net"
927 "type_name":"string",
934 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
935 "type_name":"tosca.interfaces.node.lifecycle.Standard",
939 "description":"Standard lifecycle create operation."
943 "description":"Standard lifecycle stop operation."
947 "description":"Standard lifecycle start operation."
951 "description":"Standard lifecycle delete operation."
955 "description":"Standard lifecycle configure operation."
963 "type_name":"tosca.capabilities.Node"
966 "name":"virtual_linkable",
967 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
972 "id":"m6000_data_in_eldly5txw4frny3cc349uz3nc",
973 "type_name":"tosca.nodes.nfv.ext.zte.CP",
974 "template_name":"m6000_data_in",
977 "type_name":"string",
978 "value":"bidirectional"
981 "type_name":"string",
985 "type_name":"integer",
989 "type_name":"string",
990 "value":"11-22-33-22-11-41"
993 "type_name":"string",
994 "value":"gei-0/4/0/7"
997 "type_name":"string",
1001 "type_name":"integer",
1004 "sfc_encapsulation":{
1005 "type_name":"string",
1009 "type_name":"string",
1016 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1017 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1021 "description":"Standard lifecycle create operation."
1025 "description":"Standard lifecycle stop operation."
1029 "description":"Standard lifecycle start operation."
1033 "description":"Standard lifecycle delete operation."
1037 "description":"Standard lifecycle configure operation."
1045 "type_name":"tosca.capabilities.Node"
1049 "type_name":"tosca.capabilities.nfv.Forwarder"
1054 "name":"virtualbinding",
1055 "source_requirement_index":0,
1056 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1057 "target_capability_name":"feature"
1060 "name":"virtualLink",
1061 "source_requirement_index":1,
1062 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1063 "target_capability_name":"feature"
1067 "source_requirement_index":2,
1068 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1069 "target_capability_name":"feature"
1074 "id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
1075 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
1076 "template_name":"ext_datanet_net",
1079 "type_name":"string",
1080 "value":"vlan_4004_tunnel_net"
1083 "type_name":"boolean",
1087 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1091 "availability_zone":"nova"
1095 "type_name":"integer",
1099 "type_name":"integer",
1103 "type_name":"string",
1104 "value":"vlan_4004_tunnel_net"
1107 "type_name":"string",
1114 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1115 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1119 "description":"Standard lifecycle create operation."
1123 "description":"Standard lifecycle stop operation."
1127 "description":"Standard lifecycle start operation."
1131 "description":"Standard lifecycle delete operation."
1135 "description":"Standard lifecycle configure operation."
1143 "type_name":"tosca.capabilities.Node"
1146 "name":"virtual_linkable",
1147 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1152 "id":"m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7",
1153 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1154 "template_name":"m600_mnt_cp",
1157 "type_name":"string",
1158 "value":"bidirectional"
1161 "type_name":"string",
1165 "type_name":"integer",
1169 "type_name":"string",
1170 "value":"00-11-00-22-33-11"
1173 "type_name":"string",
1174 "value":"gei-0/4/0/1"
1177 "type_name":"string",
1178 "value":"10.46.244.51"
1181 "type_name":"integer",
1184 "sfc_encapsulation":{
1185 "type_name":"string",
1189 "type_name":"string",
1196 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1197 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1201 "description":"Standard lifecycle create operation."
1205 "description":"Standard lifecycle stop operation."
1209 "description":"Standard lifecycle start operation."
1213 "description":"Standard lifecycle delete operation."
1217 "description":"Standard lifecycle configure operation."
1225 "type_name":"tosca.capabilities.Node"
1229 "type_name":"tosca.capabilities.nfv.Forwarder"
1234 "name":"virtualLink",
1235 "source_requirement_index":0,
1236 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1237 "target_capability_name":"feature"
1240 "name":"virtualbinding",
1241 "source_requirement_index":1,
1242 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1243 "target_capability_name":"feature"
1247 "source_requirement_index":2,
1248 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1249 "target_capability_name":"feature"
1254 "id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1255 "type_name":"tosca.nodes.nfv.ext.zte.VL",
1256 "template_name":"sfc_data_network",
1259 "type_name":"string",
1260 "value":"sfc_data_network"
1263 "type_name":"boolean",
1267 "type_name":"boolean",
1271 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1275 "availability_zone":"nova"
1279 "type_name":"integer",
1283 "type_name":"integer",
1287 "type_name":"string",
1288 "value":"sfc_data_network"
1291 "type_name":"string",
1298 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1299 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1303 "description":"Standard lifecycle create operation."
1307 "description":"Standard lifecycle stop operation."
1311 "description":"Standard lifecycle start operation."
1315 "description":"Standard lifecycle delete operation."
1319 "description":"Standard lifecycle configure operation."
1327 "type_name":"tosca.capabilities.Node"
1330 "name":"virtual_linkable",
1331 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1336 "id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1337 "type_name":"tosca.nodes.nfv.ext.PNF",
1338 "template_name":"m6000_s",
1341 "type_name":"string",
1344 "request_reclassification":{
1345 "type_name":"boolean",
1349 "type_name":"string",
1353 "type_name":"string",
1356 "management_address":{
1357 "type_name":"string",
1361 "type_name":"string",
1365 "type_name":"boolean",
1372 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1373 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1377 "description":"Standard lifecycle create operation."
1381 "description":"Standard lifecycle stop operation."
1385 "description":"Standard lifecycle start operation."
1389 "description":"Standard lifecycle delete operation."
1393 "description":"Standard lifecycle configure operation."
1401 "type_name":"tosca.capabilities.Node"
1404 "name":"virtualBinding",
1405 "type_name":"tosca.capabilities.nfv.VirtualBindable"
1409 "type_name":"tosca.capabilities.nfv.Forwarder"
1415 "source_requirement_index":0,
1416 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1417 "target_capability_name":"feature"
1422 "id":"VNAT_cfdljtspvkp234irka59wgab0",
1423 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
1424 "template_name":"VNAT",
1427 "type_name":"boolean",
1431 "type_name":"string",
1432 "value":"vbrasplugin_1.0"
1435 "type_name":"string",
1438 "request_reclassification":{
1439 "type_name":"boolean",
1443 "type_name":"string",
1447 "type_name":"string",
1450 "externalPluginManageNetworkName":{
1451 "type_name":"string",
1452 "value":"vlan_4007_plugin_net"
1455 "type_name":"string",
1459 "type_name":"boolean",
1463 "type_name":"string",
1467 "type_name":"string",
1471 "type_name":"string",
1472 "value":"vcpe_vnat_zte_1"
1475 "type_name":"boolean",
1478 "adjust_vnf_capacity":{
1479 "type_name":"boolean",
1482 "vmnumber_overquota_alarm":{
1483 "type_name":"boolean",
1487 "type_name":"string",
1491 "type_name":"string",
1492 "value":"192.167.0.10-192.168.0.20"
1495 "type_name":"string",
1499 "type_name":"string",
1506 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1507 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1511 "description":"Standard lifecycle create operation."
1515 "description":"Standard lifecycle stop operation."
1519 "description":"Standard lifecycle start operation."
1523 "description":"Standard lifecycle delete operation."
1527 "description":"Standard lifecycle configure operation."
1535 "type_name":"tosca.capabilities.Node"
1539 "type_name":"tosca.capabilities.nfv.Forwarder"
1542 "name":"vnat_fw_inout",
1543 "type_name":"tosca.capabilities.nfv.Forwarder"
1548 "name":"vnat_ctrl_by_manager_cp",
1549 "source_requirement_index":0,
1550 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1551 "target_capability_name":"feature"
1554 "name":"vnat_data_cp",
1555 "source_requirement_index":1,
1556 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1557 "target_capability_name":"feature"
1560 "name":"virtualLink",
1561 "source_requirement_index":2,
1562 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1563 "target_capability_name":"feature"
1567 "source_requirement_index":3,
1568 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1569 "target_capability_name":"feature"
1576 "id":"vnffg1_wk1aqhk6exoh5fmds2unu0uyc",
1577 "type_name":"tosca.groups.nfv.VNFFG",
1578 "template_name":"vnffg1",
1581 "type_name":"string",
1584 "connection_point":{
1593 "type_name":"string",
1596 "constituent_vnfs":{
1603 "number_of_endpoints":{
1604 "type_name":"integer",
1607 "dependent_virtual_link":{
1619 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1620 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1624 "description":"Standard lifecycle create operation."
1628 "description":"Standard lifecycle stop operation."
1632 "description":"Standard lifecycle start operation."
1636 "description":"Standard lifecycle delete operation."
1640 "description":"Standard lifecycle configure operation."
1646 "path1_bv53fblv26hawr8dj4fxe2rsd",
1647 "path2_kgmfqr5ldqs9lj3oscrgxqefc"
1652 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
1655 "externalDataNetworkName":{
1656 "type_name":"string",
1657 "value":"vlan_4004_tunnel_net"
1659 "sfc_data_network":{
1660 "type_name":"string",
1661 "value":"sfc_data_network"
1664 "type_name":"string",
1665 "value":"192.167.0.10-192.168.0.20"
1667 "externalManageNetworkName":{
1668 "type_name":"string",
1669 "value":"vlan_4008_mng_net"
1671 "externalPluginManageNetworkName":{
1672 "type_name":"string",
1673 "value":"vlan_4007_plugin_net"
1681 "csarVersion":"v1.0",
1683 "csarProvider":"ZTE",
1685 "invariant_id":"vcpe_ns_sff_1",
1687 "description":"vcpe_ns"
1692 "type_name":"tosca.nodes.nfv.ext.FP",
1693 "default_instances":1,
1697 "type_name":"boolean",
1701 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1705 "dest_port_range":"1-100",
1706 "ip_protocol":"tcp",
1708 "119.1.1.1-119.1.1.10"
1711 {"get_input":"NatIpRange"}
1714 "source_port_range":"1-100"
1719 "interface_templates":[
1720 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>"
1722 "capability_templates":[
1725 "type_name":"tosca.capabilities.Node"
1728 "requirement_templates":[
1731 "target_node_template_name":"m6000_data_out"
1735 "target_node_template_name":"m600_tunnel_cp"
1739 "target_node_template_name":"VNAT",
1740 "target_capability_name":"vnat_fw_inout"
1746 "type_name":"tosca.nodes.nfv.ext.FP",
1747 "default_instances":1,
1751 "type_name":"boolean",
1755 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1759 "dest_port_range":"1-100",
1760 "ip_protocol":"tcp",
1768 "source_port_range":"1-100"
1773 "interface_templates":[
1774 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>"
1776 "capability_templates":[
1779 "type_name":"tosca.capabilities.Node"
1782 "requirement_templates":[
1785 "target_node_template_name":"m6000_data_in"
1789 "target_node_template_name":"m600_tunnel_cp"
1793 "target_node_template_name":"VFW",
1794 "target_capability_name":"vfw_fw_inout"
1798 "target_node_template_name":"VNAT",
1799 "target_capability_name":"vnat_fw_inout"
1803 "target_node_template_name":"m600_tunnel_cp"
1807 "target_node_template_name":"m6000_data_out"
1812 "name":"m6000_data_out",
1813 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1814 "default_instances":1,
1818 "type_name":"string",
1819 "value":"bidirectional"
1822 "type_name":"string",
1826 "type_name":"integer",
1830 "type_name":"string",
1831 "value":"11-22-33-22-11-44"
1834 "type_name":"string",
1835 "value":"xgei-0/4/1/5"
1838 "type_name":"string",
1842 "type_name":"integer",
1845 "sfc_encapsulation":{
1846 "type_name":"string",
1850 "interface_templates":[
1851 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>"
1853 "capability_templates":[
1856 "type_name":"tosca.capabilities.Node"
1860 "type_name":"tosca.capabilities.nfv.Forwarder"
1863 "requirement_templates":[
1865 "name":"virtualbinding",
1866 "target_node_template_name":"m6000_s",
1867 "target_capability_name":"virtualBinding"
1870 "name":"virtualLink",
1871 "target_node_type_name":"tosca.nodes.Root"
1875 "target_node_type_name":"tosca.nodes.Root"
1881 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
1882 "default_instances":1,
1886 "type_name":"boolean",
1890 "type_name":"string",
1891 "value":"vbrasplugin_1.0"
1894 "type_name":"string",
1897 "request_reclassification":{
1898 "type_name":"boolean",
1902 "type_name":"string",
1906 "type_name":"string",
1910 "type_name":"string",
1914 "type_name":"boolean",
1918 "type_name":"string",
1922 "type_name":"string",
1926 "type_name":"string",
1927 "value":"vcpe_vfw_zte_1_0"
1930 "type_name":"boolean",
1933 "adjust_vnf_capacity":{
1934 "type_name":"boolean",
1937 "vmnumber_overquota_alarm":{
1938 "type_name":"boolean",
1942 "type_name":"string",
1946 "type_name":"string",
1949 "externalPluginManageNetworkName":{
1950 "type_name":"string",
1951 "value":"vlan_4007_plugin_net"
1954 "type_name":"string",
1958 "interface_templates":[
1959 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>"
1961 "capability_templates":[
1964 "type_name":"tosca.capabilities.Node"
1968 "type_name":"tosca.capabilities.nfv.Forwarder"
1971 "name":"vfw_fw_inout",
1972 "type_name":"tosca.capabilities.nfv.Forwarder"
1975 "requirement_templates":[
1977 "name":"vfw_ctrl_by_manager_cp",
1978 "target_node_template_name":"ext_mnet_net",
1979 "target_capability_name":"virtual_linkable"
1982 "name":"vfw_data_cp",
1983 "target_node_template_name":"sfc_data_network",
1984 "target_capability_name":"virtual_linkable"
1987 "name":"virtualLink",
1988 "target_node_type_name":"tosca.nodes.Root"
1992 "target_node_type_name":"tosca.nodes.Root"
1997 "name":"m600_tunnel_cp",
1998 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1999 "default_instances":1,
2003 "type_name":"string",
2004 "value":"bidirectional"
2007 "type_name":"string",
2011 "type_name":"integer",
2015 "type_name":"string",
2016 "value":"00-11-00-22-33-00"
2019 "type_name":"string",
2020 "value":"gei-0/4/0/13"
2023 "type_name":"string",
2024 "value":"191.167.100.5"
2027 "type_name":"integer",
2030 "sfc_encapsulation":{
2031 "type_name":"string",
2035 "interface_templates":[
2036 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>"
2038 "capability_templates":[
2041 "type_name":"tosca.capabilities.Node"
2045 "type_name":"tosca.capabilities.nfv.Forwarder"
2048 "requirement_templates":[
2050 "name":"virtualLink",
2051 "target_node_template_name":"ext_datanet_net",
2052 "target_capability_name":"virtual_linkable"
2055 "name":"virtualbinding",
2056 "target_node_template_name":"m6000_s",
2057 "target_capability_name":"virtualBinding"
2061 "target_node_type_name":"tosca.nodes.Root"
2066 "name":"ext_mnet_net",
2067 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2068 "default_instances":1,
2072 "type_name":"string",
2073 "value":"vlan_4008_mng_net"
2076 "type_name":"boolean",
2080 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2084 "availability_zone":"nova"
2088 "type_name":"integer",
2092 "type_name":"integer",
2096 "type_name":"string",
2097 "value":"vlan_4008_mng_net"
2100 "type_name":"string",
2104 "interface_templates":[
2105 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>"
2107 "capability_templates":[
2110 "type_name":"tosca.capabilities.Node"
2113 "name":"virtual_linkable",
2114 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2119 "name":"m6000_data_in",
2120 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2121 "default_instances":1,
2125 "type_name":"string",
2126 "value":"bidirectional"
2129 "type_name":"string",
2133 "type_name":"integer",
2137 "type_name":"string",
2138 "value":"11-22-33-22-11-41"
2141 "type_name":"string",
2142 "value":"gei-0/4/0/7"
2145 "type_name":"string",
2149 "type_name":"integer",
2152 "sfc_encapsulation":{
2153 "type_name":"string",
2157 "type_name":"string",
2161 "interface_templates":[
2162 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>"
2164 "capability_templates":[
2167 "type_name":"tosca.capabilities.Node"
2171 "type_name":"tosca.capabilities.nfv.Forwarder"
2174 "requirement_templates":[
2176 "name":"virtualbinding",
2177 "target_node_template_name":"m6000_s",
2178 "target_capability_name":"virtualBinding"
2181 "name":"virtualLink",
2182 "target_node_type_name":"tosca.nodes.Root"
2186 "target_node_type_name":"tosca.nodes.Root"
2191 "name":"ext_datanet_net",
2192 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2193 "default_instances":1,
2197 "type_name":"string",
2198 "value":"vlan_4004_tunnel_net"
2201 "type_name":"boolean",
2205 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2209 "availability_zone":"nova"
2213 "type_name":"integer",
2217 "type_name":"integer",
2221 "type_name":"string",
2222 "value":"vlan_4004_tunnel_net"
2225 "type_name":"string",
2229 "interface_templates":[
2230 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>"
2232 "capability_templates":[
2235 "type_name":"tosca.capabilities.Node"
2238 "name":"virtual_linkable",
2239 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2244 "name":"m600_mnt_cp",
2245 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2246 "default_instances":1,
2250 "type_name":"string",
2251 "value":"bidirectional"
2254 "type_name":"string",
2258 "type_name":"integer",
2262 "type_name":"string",
2263 "value":"00-11-00-22-33-11"
2266 "type_name":"string",
2267 "value":"gei-0/4/0/1"
2270 "type_name":"string",
2271 "value":"10.46.244.51"
2274 "type_name":"integer",
2277 "sfc_encapsulation":{
2278 "type_name":"string",
2282 "type_name":"string",
2286 "interface_templates":[
2287 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>"
2289 "capability_templates":[
2292 "type_name":"tosca.capabilities.Node"
2296 "type_name":"tosca.capabilities.nfv.Forwarder"
2299 "requirement_templates":[
2301 "name":"virtualLink",
2302 "target_node_template_name":"ext_mnet_net",
2303 "target_capability_name":"virtual_linkable"
2306 "name":"virtualbinding",
2307 "target_node_template_name":"m6000_s",
2308 "target_capability_name":"virtualBinding"
2312 "target_node_type_name":"tosca.nodes.Root"
2317 "name":"sfc_data_network",
2318 "type_name":"tosca.nodes.nfv.ext.zte.VL",
2319 "default_instances":1,
2323 "type_name":"string",
2324 "value":"sfc_data_network"
2327 "type_name":"boolean",
2331 "type_name":"boolean",
2335 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2339 "availability_zone":"nova"
2343 "type_name":"integer",
2347 "type_name":"integer",
2351 "type_name":"string",
2352 "value":"sfc_data_network"
2355 "type_name":"string",
2359 "interface_templates":[
2360 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>"
2362 "capability_templates":[
2365 "type_name":"tosca.capabilities.Node"
2368 "name":"virtual_linkable",
2369 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2375 "type_name":"tosca.nodes.nfv.ext.PNF",
2376 "default_instances":1,
2380 "type_name":"string",
2383 "request_reclassification":{
2384 "type_name":"boolean",
2388 "type_name":"string",
2392 "type_name":"string",
2395 "management_address":{
2396 "type_name":"string",
2400 "type_name":"string",
2404 "type_name":"boolean",
2408 "interface_templates":[
2409 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>"
2411 "capability_templates":[
2414 "type_name":"tosca.capabilities.Node"
2417 "name":"virtualBinding",
2418 "type_name":"tosca.capabilities.nfv.VirtualBindable"
2422 "type_name":"tosca.capabilities.nfv.Forwarder"
2425 "requirement_templates":[
2428 "target_node_type_name":"tosca.nodes.Root"
2434 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
2435 "default_instances":1,
2439 "type_name":"boolean",
2443 "type_name":"string",
2444 "value":"vbrasplugin_1.0"
2447 "type_name":"string",
2450 "request_reclassification":{
2451 "type_name":"boolean",
2455 "type_name":"string",
2459 "type_name":"string",
2462 "externalPluginManageNetworkName":{
2463 "type_name":"string",
2464 "value":"vlan_4007_plugin_net"
2467 "type_name":"string",
2471 "type_name":"boolean",
2475 "type_name":"string",
2479 "type_name":"string",
2483 "type_name":"string",
2484 "value":"vcpe_vnat_zte_1"
2487 "type_name":"boolean",
2490 "adjust_vnf_capacity":{
2491 "type_name":"boolean",
2494 "vmnumber_overquota_alarm":{
2495 "type_name":"boolean",
2499 "type_name":"string",
2503 "type_name":"string",
2504 "value":"192.167.0.10-192.168.0.20"
2507 "type_name":"string",
2511 "type_name":"string",
2515 "interface_templates":[
2516 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>"
2518 "capability_templates":[
2521 "type_name":"tosca.capabilities.Node"
2525 "type_name":"tosca.capabilities.nfv.Forwarder"
2528 "name":"vnat_fw_inout",
2529 "type_name":"tosca.capabilities.nfv.Forwarder"
2532 "requirement_templates":[
2534 "name":"vnat_ctrl_by_manager_cp",
2535 "target_node_template_name":"ext_mnet_net",
2536 "target_capability_name":"virtual_linkable"
2539 "name":"vnat_data_cp",
2540 "target_node_template_name":"sfc_data_network",
2541 "target_capability_name":"virtual_linkable"
2544 "name":"virtualLink",
2545 "target_node_type_name":"tosca.nodes.Root"
2549 "target_node_type_name":"tosca.nodes.Root"
2557 "type_name":"tosca.groups.nfv.VNFFG",
2560 "type_name":"string",
2563 "connection_point":{
2572 "type_name":"string",
2575 "constituent_vnfs":{
2582 "number_of_endpoints":{
2583 "type_name":"integer",
2586 "dependent_virtual_link":{
2595 "interface_templates":[
2596 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>"
2598 "member_node_template_names":[
2604 "substitution_template":{
2605 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
2608 "externalDataNetworkName":{
2609 "type_name":"string",
2610 "value":"vlan_4004_tunnel_net"
2612 "sfc_data_network":{
2613 "type_name":"string",
2614 "value":"sfc_data_network"
2617 "type_name":"string",
2618 "value":"192.167.0.10-192.168.0.20"
2620 "externalManageNetworkName":{
2621 "type_name":"string",
2622 "value":"vlan_4008_mng_net"
2624 "externalPluginManageNetworkName":{
2625 "type_name":"string",
2626 "value":"vlan_4007_plugin_net"
2632 print convert_nsd_model(src_json)