1 # Copyright (c) 2017 Wind River Systems, Inc.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 def safe_get(key_val, key):
15 return key_val[key] if key in key_val else ""
18 def find_node_name(node_id, node_list):
19 for node in node_list:
20 if node['id'] == node_id:
21 return node['template_name']
22 raise Exception('can not find node(%s).' % node_id)
25 def find_node_type(node_id, node_list):
26 for node in node_list:
27 if node['id'] == node_id:
28 return node['type_name']
29 raise Exception('can not find node(%s).' % node_id)
32 def find_related_node(node_id, src_json_model, requirement_name):
34 for model_tpl in safe_get(src_json_model, "node_templates"):
35 for rt in safe_get(model_tpl, 'requirement_templates'):
36 if safe_get(rt, 'name') == requirement_name and \
37 safe_get(rt, 'target_node_template_name') == node_id:
38 related_nodes.append(model_tpl['name'])
42 def convert_props(src_node, dest_node):
43 if 'properties' in src_node and src_node['properties']:
44 for prop_name, prop_info in src_node['properties'].items():
45 if 'value' in prop_info:
46 dest_node['properties'][prop_name] = prop_info['value']
49 def convert_metadata(src_json):
50 return src_json['metadata'] if 'metadata' in src_json else {}
53 def convert_inputs(src_json):
55 if 'inputs' in src_json:
56 src_inputs = src_json['inputs']
57 for param_name, param_info in src_inputs.items():
59 if 'type_name' in param_info:
60 input_param['type'] = param_info['type_name']
61 if 'description' in param_info:
62 input_param['description'] = param_info['description']
63 if 'value' in param_info:
64 input_param['value'] = param_info['value']
65 inputs[param_name] = input_param
69 def convert_vnf_node(src_node, src_json_model):
70 vnf_node = {'type': src_node['type_name'], 'vnf_id': src_node['template_name'],
71 'description': '', 'properties': {}, 'dependencies': [], 'networks': []}
72 convert_props(src_node, vnf_node)
73 for model_tpl in safe_get(src_json_model, "node_templates"):
74 if model_tpl['name'] != vnf_node['vnf_id']:
76 vnf_node['dependencies'] = [{
77 'key_name': requirement['name'],
78 'vl_id': requirement['target_node_template_name']} for \
79 requirement in safe_get(model_tpl, 'requirement_templates') if \
80 safe_get(requirement, 'target_capability_name') == 'virtual_linkable']
81 vnf_node['networks'] = [requirement['target_node_template_name'] for \
82 requirement in safe_get(model_tpl, 'requirement_templates') if \
83 safe_get(requirement, 'name') == 'dependency']
87 def convert_pnf_node(src_node, src_json_model):
88 pnf_node = {'pnf_id': src_node['template_name'], 'description': '', 'properties': {}}
89 convert_props(src_node, pnf_node)
90 pnf_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
94 def convert_vl_node(src_node, src_node_list):
95 vl_node = {'vl_id': src_node['template_name'], 'description': '', 'properties': {}}
96 convert_props(src_node, vl_node)
97 vl_node['route_id'] = ''
98 for relation in safe_get(src_node, 'relationships'):
99 if safe_get(relation, 'type_name').endswith('.VirtualLinksTo'):
100 vl_node['route_id'] = find_node_name(relation['target_node_id'], src_node_list)
102 vl_node['route_external'] = (src_node['type_name'].find('.RouteExternalVL') > 0)
106 def convert_cp_node(src_node, src_node_list, model_type='NSD'):
107 cp_node = {'cp_id': src_node['template_name'], 'description': '', 'properties': {}}
108 convert_props(src_node, cp_node)
109 src_relationships = src_node['relationships']
110 for relation in src_relationships:
111 if safe_get(relation, 'name') == 'virtualLink':
112 cp_node['vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
113 elif safe_get(relation, 'name') == 'virtualbinding':
114 node_key = 'pnf_id' if model_type == 'NSD' else 'vdu_id'
115 cp_node[node_key] = find_node_name(relation['target_node_id'], src_node_list)
119 def convert_router_node(src_node, src_node_list):
120 router_node = {'router_id': src_node['template_name'], 'description': '', 'properties': {}}
121 convert_props(src_node, router_node)
122 for relation in src_node['relationships']:
123 if safe_get(relation, 'name') != 'external_virtual_link':
125 router_node['external_vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
126 router_node['external_ip_addresses'] = []
127 if 'properties' not in relation:
129 for prop_name, prop_info in relation['properties'].items():
130 if prop_name == 'router_ip_address':
131 router_node['external_ip_addresses'].append(prop_info['value'])
136 def convert_fp_node(src_node, src_node_list, src_json_model):
137 fp_node = {'fp_id': src_node['template_name'], 'description': '',
138 'properties': {}, 'forwarder_list': []}
139 convert_props(src_node, fp_node)
140 for relation in safe_get(src_node, 'relationships'):
141 if safe_get(relation, 'name') != 'forwarder':
143 forwarder_point = {'type': 'vnf'}
144 target_node_type = find_node_type(relation['target_node_id'], src_node_list).upper()
145 if target_node_type.find('.CP.') >= 0 or target_node_type.endswith('.CP'):
146 forwarder_point['type'] = 'cp'
147 forwarder_point['node_name'] = find_node_name(relation['target_node_id'], src_node_list)
148 forwarder_point['capability'] = ''
149 if forwarder_point['type'] == 'vnf':
150 for node_tpl in src_json_model["node_templates"]:
151 if fp_node['fp_id'] != node_tpl["name"]:
153 for r_tpl in safe_get(node_tpl, "requirement_templates"):
154 if safe_get(r_tpl, "target_node_template_name") != forwarder_point['node_name']:
156 forwarder_point['capability'] = safe_get(r_tpl, "target_capability_name")
159 fp_node['forwarder_list'].append(forwarder_point)
163 def convert_vnffg_group(src_group, src_group_list, src_node_list):
164 vnffg = {'vnffg_id': src_group['template_name'], 'description': '',
165 'properties': {}, 'members': []}
166 convert_props(src_group, vnffg)
167 for member_node_id in src_group['member_node_ids']:
168 vnffg['members'].append(find_node_name(member_node_id, src_node_list))
172 def convert_imagefile_node(src_node, src_node_list):
173 image_node = {'image_file_id': src_node['template_name'], 'description': '',
175 convert_props(src_node, image_node)
179 def convert_localstorage_node(src_node, src_node_list):
180 localstorage_node = {'local_storage_id': src_node['template_name'], 'description': '',
182 convert_props(src_node, localstorage_node)
183 return localstorage_node
186 def convert_vdu_node(src_node, src_node_list, src_json_model):
187 vdu_node = {'vdu_id': src_node['template_name'], 'description': '', 'properties': {},
188 'image_file': '', 'local_storages': [], 'dependencies': [], 'nfv_compute': {},
189 'vls': [], 'artifacts': []}
190 convert_props(src_node, vdu_node)
192 for relation in src_node['relationships']:
193 r_id, r_name = safe_get(relation, 'target_node_id'), safe_get(relation, 'name')
194 if r_name == 'guest_os':
195 vdu_node['image_file'] = find_node_name(r_id, src_node_list)
196 elif r_name == 'local_storage':
197 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
198 elif r_name.endswith('.AttachesTo'):
199 nt = find_node_type(r_id, src_node_list)
200 if nt.endswith('.BlockStorage.Local') or nt.endswith('.LocalStorage'):
201 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
203 for capability in src_node['capabilities']:
204 if capability['name'] != 'nfv_compute':
206 for prop_name, prop_info in capability['properties'].items():
207 if 'value' in prop_info:
208 vdu_node['nfv_compute'][prop_name] = prop_info['value']
210 vdu_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
212 for cp_node in vdu_node['cps']:
213 for src_cp_node in src_node_list:
214 if src_cp_node['template_name'] != cp_node:
216 for relation in safe_get(src_cp_node, 'relationships'):
217 if relation['name'] != 'virtualLink':
219 vl_node_name = find_node_name(relation['target_node_id'], src_node_list)
220 if vl_node_name not in vdu_node['vls']:
221 vdu_node['vls'].append(vl_node_name)
223 for item in safe_get(src_node, 'artifacts'):
224 artifact = {'artifact_name': item['name'], 'type': item['type_name'],
225 'file': item['source_path']}
226 vdu_node['artifacts'].append(artifact)
231 def convert_exposed_node(src_json, src_nodes, exposed):
232 for item in safe_get(safe_get(src_json, 'substitution'), 'requirements'):
233 exposed['external_cps'].append({'key_name': item['mapped_name'],
234 "cp_id": find_node_name(item['node_id'], src_nodes)})
235 for item in safe_get(safe_get(src_json, 'substitution'), 'capabilities'):
236 exposed['forward_cps'].append({'key_name': item['mapped_name'],
237 "cp_id": find_node_name(item['node_id'], src_nodes)})
240 def convert_vnffgs(src_json_inst, src_nodes):
242 src_groups = safe_get(src_json_inst, 'groups')
243 for group in src_groups:
244 type_name = group['type_name'].upper()
245 if type_name.find('.VNFFG.') >= 0 or type_name.endswith('.VNFFG'):
246 vnffgs.append(convert_vnffg_group(group, src_groups, src_nodes))
250 def convert_common(src_json, target_json):
251 if isinstance(src_json, (unicode, str)):
252 src_json_dict = json.loads(src_json)
254 src_json_dict = src_json
255 src_json_inst = src_json_dict["instance"]
256 src_json_model = src_json_dict["model"] if "model" in src_json_dict else {}
258 target_json['metadata'] = convert_metadata(src_json_inst)
259 target_json['inputs'] = convert_inputs(src_json_inst)
260 target_json['vls'] = []
261 target_json['cps'] = []
262 target_json['routers'] = []
264 return src_json_inst, src_json_model
267 def convert_nsd_model(src_json):
268 target_json = {'vnfs': [], 'pnfs': [], 'fps': []}
269 src_json_inst, src_json_model = convert_common(src_json, target_json)
271 src_nodes = src_json_inst['nodes']
272 for node in src_nodes:
273 type_name = node['type_name']
274 if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'):
275 target_json['vnfs'].append(convert_vnf_node(node, src_json_model))
276 elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'):
277 target_json['pnfs'].append(convert_pnf_node(node, src_json_model))
278 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
279 or node['type_name'].find('.RouteExternalVL') > 0:
280 target_json['vls'].append(convert_vl_node(node, src_nodes))
281 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
282 target_json['cps'].append(convert_cp_node(node, src_nodes))
283 elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'):
284 target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model))
285 elif type_name.endswith('.Router'):
286 target_json['routers'].append(convert_router_node(node, src_nodes))
288 target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes)
290 target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []}
291 convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed'])
292 return json.dumps(target_json)
295 def convert_vnfd_model(src_json):
296 target_json = {'image_files': [], 'local_storages': [], 'vdus': []}
297 src_json_inst, src_json_model = convert_common(src_json, target_json)
299 src_nodes = src_json_inst['nodes']
300 for node in src_nodes:
301 type_name = node['type_name']
302 if type_name.endswith('.ImageFile'):
303 target_json['image_files'].append(convert_imagefile_node(node, src_nodes))
304 elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'):
305 target_json['local_storages'].append(convert_localstorage_node(node, src_nodes))
306 elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'):
307 target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model))
308 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
309 or node['type_name'].find('.RouteExternalVL') > 0:
310 target_json['vls'].append(convert_vl_node(node, src_nodes))
311 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
312 target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD'))
313 elif type_name.endswith('.Router'):
314 target_json['routers'].append(convert_router_node(node, src_nodes))
316 target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []}
317 convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed'])
318 return json.dumps(target_json)
320 if __name__ == '__main__':
321 src_json = json.dumps(
327 "csarVersion":"v1.0",
329 "csarProvider":"ZTE",
331 "invariant_id":"vcpe_ns_sff_1",
333 "description":"vcpe_ns"
337 "id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
338 "type_name":"tosca.nodes.nfv.ext.FP",
339 "template_name":"path2",
342 "type_name":"boolean",
346 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
350 "dest_port_range":"1-100",
353 "119.1.1.1-119.1.1.10"
356 {"get_input":"NatIpRange"}
359 "source_port_range":"1-100"
367 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
368 "type_name":"tosca.interfaces.node.lifecycle.Standard",
372 "description":"Standard lifecycle create operation."
376 "description":"Standard lifecycle stop operation."
380 "description":"Standard lifecycle start operation."
384 "description":"Standard lifecycle delete operation."
388 "description":"Standard lifecycle configure operation."
396 "type_name":"tosca.capabilities.Node"
402 "source_requirement_index":0,
403 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
407 "source_requirement_index":1,
408 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
412 "source_requirement_index":2,
413 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
414 "target_capability_name":"feature"
419 "id":"path1_bv53fblv26hawr8dj4fxe2rsd",
420 "type_name":"tosca.nodes.nfv.ext.FP",
421 "template_name":"path1",
424 "type_name":"boolean",
428 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
432 "dest_port_range":"1-100",
441 "source_port_range":"1-100"
449 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
450 "type_name":"tosca.interfaces.node.lifecycle.Standard",
454 "description":"Standard lifecycle create operation."
458 "description":"Standard lifecycle stop operation."
462 "description":"Standard lifecycle start operation."
466 "description":"Standard lifecycle delete operation."
470 "description":"Standard lifecycle configure operation."
478 "type_name":"tosca.capabilities.Node"
484 "source_requirement_index":0,
485 "target_node_id":"m6000_data_in_eldly5txw4frny3cc349uz3nc"
489 "source_requirement_index":1,
490 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
494 "source_requirement_index":2,
495 "target_node_id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
496 "target_capability_name":"feature"
500 "source_requirement_index":3,
501 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
502 "target_capability_name":"feature"
506 "source_requirement_index":4,
507 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
511 "source_requirement_index":5,
512 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
517 "id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6",
518 "type_name":"tosca.nodes.nfv.ext.zte.CP",
519 "template_name":"m6000_data_out",
522 "type_name":"string",
523 "value":"bidirectional"
526 "type_name":"string",
530 "type_name":"integer",
534 "type_name":"string",
535 "value":"11-22-33-22-11-44"
538 "type_name":"string",
539 "value":"xgei-0/4/1/5"
542 "type_name":"string",
546 "type_name":"integer",
549 "sfc_encapsulation":{
550 "type_name":"string",
557 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
558 "type_name":"tosca.interfaces.node.lifecycle.Standard",
562 "description":"Standard lifecycle create operation."
566 "description":"Standard lifecycle stop operation."
570 "description":"Standard lifecycle start operation."
574 "description":"Standard lifecycle delete operation."
578 "description":"Standard lifecycle configure operation."
586 "type_name":"tosca.capabilities.Node"
590 "type_name":"tosca.capabilities.nfv.Forwarder"
595 "name":"virtualbinding",
596 "source_requirement_index":0,
597 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
598 "target_capability_name":"feature"
601 "name":"virtualLink",
602 "source_requirement_index":1,
603 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
604 "target_capability_name":"feature"
608 "source_requirement_index":2,
609 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
610 "target_capability_name":"feature"
615 "id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
616 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
617 "template_name":"VFW",
620 "type_name":"boolean",
624 "type_name":"string",
625 "value":"vbrasplugin_1.0"
628 "type_name":"string",
631 "request_reclassification":{
632 "type_name":"boolean",
636 "type_name":"string",
640 "type_name":"string",
644 "type_name":"string",
648 "type_name":"boolean",
652 "type_name":"string",
656 "type_name":"string",
660 "type_name":"string",
661 "value":"vcpe_vfw_zte_1_0"
664 "type_name":"boolean",
667 "adjust_vnf_capacity":{
668 "type_name":"boolean",
671 "vmnumber_overquota_alarm":{
672 "type_name":"boolean",
676 "type_name":"string",
680 "type_name":"string",
683 "externalPluginManageNetworkName":{
684 "type_name":"string",
685 "value":"vlan_4007_plugin_net"
688 "type_name":"string",
695 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
696 "type_name":"tosca.interfaces.node.lifecycle.Standard",
700 "description":"Standard lifecycle create operation."
704 "description":"Standard lifecycle stop operation."
708 "description":"Standard lifecycle start operation."
712 "description":"Standard lifecycle delete operation."
716 "description":"Standard lifecycle configure operation."
724 "type_name":"tosca.capabilities.Node"
728 "type_name":"tosca.capabilities.nfv.Forwarder"
731 "name":"vfw_fw_inout",
732 "type_name":"tosca.capabilities.nfv.Forwarder"
737 "name":"vfw_ctrl_by_manager_cp",
738 "source_requirement_index":0,
739 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
740 "target_capability_name":"feature"
743 "name":"vfw_data_cp",
744 "source_requirement_index":1,
745 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
746 "target_capability_name":"feature"
749 "name":"virtualLink",
750 "source_requirement_index":2,
751 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
752 "target_capability_name":"feature"
756 "source_requirement_index":3,
757 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
758 "target_capability_name":"feature"
763 "id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5",
764 "type_name":"tosca.nodes.nfv.ext.zte.CP",
765 "template_name":"m600_tunnel_cp",
768 "type_name":"string",
769 "value":"bidirectional"
772 "type_name":"string",
776 "type_name":"integer",
780 "type_name":"string",
781 "value":"00-11-00-22-33-00"
784 "type_name":"string",
785 "value":"gei-0/4/0/13"
788 "type_name":"string",
789 "value":"191.167.100.5"
792 "type_name":"integer",
795 "sfc_encapsulation":{
796 "type_name":"string",
803 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
804 "type_name":"tosca.interfaces.node.lifecycle.Standard",
808 "description":"Standard lifecycle create operation."
812 "description":"Standard lifecycle stop operation."
816 "description":"Standard lifecycle start operation."
820 "description":"Standard lifecycle delete operation."
824 "description":"Standard lifecycle configure operation."
832 "type_name":"tosca.capabilities.Node"
836 "type_name":"tosca.capabilities.nfv.Forwarder"
841 "name":"virtualLink",
842 "source_requirement_index":0,
843 "target_node_id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
844 "target_capability_name":"feature"
847 "name":"virtualbinding",
848 "source_requirement_index":1,
849 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
850 "target_capability_name":"feature"
854 "source_requirement_index":2,
855 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
856 "target_capability_name":"feature"
861 "id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
862 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
863 "template_name":"ext_mnet_net",
866 "type_name":"string",
867 "value":"vlan_4008_mng_net"
870 "type_name":"boolean",
874 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
878 "availability_zone":"nova"
882 "type_name":"integer",
886 "type_name":"integer",
890 "type_name":"string",
891 "value":"vlan_4008_mng_net"
894 "type_name":"string",
901 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
902 "type_name":"tosca.interfaces.node.lifecycle.Standard",
906 "description":"Standard lifecycle create operation."
910 "description":"Standard lifecycle stop operation."
914 "description":"Standard lifecycle start operation."
918 "description":"Standard lifecycle delete operation."
922 "description":"Standard lifecycle configure operation."
930 "type_name":"tosca.capabilities.Node"
933 "name":"virtual_linkable",
934 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
939 "id":"m6000_data_in_eldly5txw4frny3cc349uz3nc",
940 "type_name":"tosca.nodes.nfv.ext.zte.CP",
941 "template_name":"m6000_data_in",
944 "type_name":"string",
945 "value":"bidirectional"
948 "type_name":"string",
952 "type_name":"integer",
956 "type_name":"string",
957 "value":"11-22-33-22-11-41"
960 "type_name":"string",
961 "value":"gei-0/4/0/7"
964 "type_name":"string",
968 "type_name":"integer",
971 "sfc_encapsulation":{
972 "type_name":"string",
976 "type_name":"string",
983 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
984 "type_name":"tosca.interfaces.node.lifecycle.Standard",
988 "description":"Standard lifecycle create operation."
992 "description":"Standard lifecycle stop operation."
996 "description":"Standard lifecycle start operation."
1000 "description":"Standard lifecycle delete operation."
1004 "description":"Standard lifecycle configure operation."
1012 "type_name":"tosca.capabilities.Node"
1016 "type_name":"tosca.capabilities.nfv.Forwarder"
1021 "name":"virtualbinding",
1022 "source_requirement_index":0,
1023 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1024 "target_capability_name":"feature"
1027 "name":"virtualLink",
1028 "source_requirement_index":1,
1029 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1030 "target_capability_name":"feature"
1034 "source_requirement_index":2,
1035 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1036 "target_capability_name":"feature"
1041 "id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
1042 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
1043 "template_name":"ext_datanet_net",
1046 "type_name":"string",
1047 "value":"vlan_4004_tunnel_net"
1050 "type_name":"boolean",
1054 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1058 "availability_zone":"nova"
1062 "type_name":"integer",
1066 "type_name":"integer",
1070 "type_name":"string",
1071 "value":"vlan_4004_tunnel_net"
1074 "type_name":"string",
1081 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1082 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1086 "description":"Standard lifecycle create operation."
1090 "description":"Standard lifecycle stop operation."
1094 "description":"Standard lifecycle start operation."
1098 "description":"Standard lifecycle delete operation."
1102 "description":"Standard lifecycle configure operation."
1110 "type_name":"tosca.capabilities.Node"
1113 "name":"virtual_linkable",
1114 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1119 "id":"m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7",
1120 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1121 "template_name":"m600_mnt_cp",
1124 "type_name":"string",
1125 "value":"bidirectional"
1128 "type_name":"string",
1132 "type_name":"integer",
1136 "type_name":"string",
1137 "value":"00-11-00-22-33-11"
1140 "type_name":"string",
1141 "value":"gei-0/4/0/1"
1144 "type_name":"string",
1145 "value":"10.46.244.51"
1148 "type_name":"integer",
1151 "sfc_encapsulation":{
1152 "type_name":"string",
1156 "type_name":"string",
1163 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1164 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1168 "description":"Standard lifecycle create operation."
1172 "description":"Standard lifecycle stop operation."
1176 "description":"Standard lifecycle start operation."
1180 "description":"Standard lifecycle delete operation."
1184 "description":"Standard lifecycle configure operation."
1192 "type_name":"tosca.capabilities.Node"
1196 "type_name":"tosca.capabilities.nfv.Forwarder"
1201 "name":"virtualLink",
1202 "source_requirement_index":0,
1203 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1204 "target_capability_name":"feature"
1207 "name":"virtualbinding",
1208 "source_requirement_index":1,
1209 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1210 "target_capability_name":"feature"
1214 "source_requirement_index":2,
1215 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1216 "target_capability_name":"feature"
1221 "id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1222 "type_name":"tosca.nodes.nfv.ext.zte.VL",
1223 "template_name":"sfc_data_network",
1226 "type_name":"string",
1227 "value":"sfc_data_network"
1230 "type_name":"boolean",
1234 "type_name":"boolean",
1238 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1242 "availability_zone":"nova"
1246 "type_name":"integer",
1250 "type_name":"integer",
1254 "type_name":"string",
1255 "value":"sfc_data_network"
1258 "type_name":"string",
1265 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1266 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1270 "description":"Standard lifecycle create operation."
1274 "description":"Standard lifecycle stop operation."
1278 "description":"Standard lifecycle start operation."
1282 "description":"Standard lifecycle delete operation."
1286 "description":"Standard lifecycle configure operation."
1294 "type_name":"tosca.capabilities.Node"
1297 "name":"virtual_linkable",
1298 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1303 "id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1304 "type_name":"tosca.nodes.nfv.ext.PNF",
1305 "template_name":"m6000_s",
1308 "type_name":"string",
1311 "request_reclassification":{
1312 "type_name":"boolean",
1316 "type_name":"string",
1320 "type_name":"string",
1323 "management_address":{
1324 "type_name":"string",
1328 "type_name":"string",
1332 "type_name":"boolean",
1339 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1340 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1344 "description":"Standard lifecycle create operation."
1348 "description":"Standard lifecycle stop operation."
1352 "description":"Standard lifecycle start operation."
1356 "description":"Standard lifecycle delete operation."
1360 "description":"Standard lifecycle configure operation."
1368 "type_name":"tosca.capabilities.Node"
1371 "name":"virtualBinding",
1372 "type_name":"tosca.capabilities.nfv.VirtualBindable"
1376 "type_name":"tosca.capabilities.nfv.Forwarder"
1382 "source_requirement_index":0,
1383 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1384 "target_capability_name":"feature"
1389 "id":"VNAT_cfdljtspvkp234irka59wgab0",
1390 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
1391 "template_name":"VNAT",
1394 "type_name":"boolean",
1398 "type_name":"string",
1399 "value":"vbrasplugin_1.0"
1402 "type_name":"string",
1405 "request_reclassification":{
1406 "type_name":"boolean",
1410 "type_name":"string",
1414 "type_name":"string",
1417 "externalPluginManageNetworkName":{
1418 "type_name":"string",
1419 "value":"vlan_4007_plugin_net"
1422 "type_name":"string",
1426 "type_name":"boolean",
1430 "type_name":"string",
1434 "type_name":"string",
1438 "type_name":"string",
1439 "value":"vcpe_vnat_zte_1"
1442 "type_name":"boolean",
1445 "adjust_vnf_capacity":{
1446 "type_name":"boolean",
1449 "vmnumber_overquota_alarm":{
1450 "type_name":"boolean",
1454 "type_name":"string",
1458 "type_name":"string",
1459 "value":"192.167.0.10-192.168.0.20"
1462 "type_name":"string",
1466 "type_name":"string",
1473 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1474 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1478 "description":"Standard lifecycle create operation."
1482 "description":"Standard lifecycle stop operation."
1486 "description":"Standard lifecycle start operation."
1490 "description":"Standard lifecycle delete operation."
1494 "description":"Standard lifecycle configure operation."
1502 "type_name":"tosca.capabilities.Node"
1506 "type_name":"tosca.capabilities.nfv.Forwarder"
1509 "name":"vnat_fw_inout",
1510 "type_name":"tosca.capabilities.nfv.Forwarder"
1515 "name":"vnat_ctrl_by_manager_cp",
1516 "source_requirement_index":0,
1517 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1518 "target_capability_name":"feature"
1521 "name":"vnat_data_cp",
1522 "source_requirement_index":1,
1523 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1524 "target_capability_name":"feature"
1527 "name":"virtualLink",
1528 "source_requirement_index":2,
1529 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1530 "target_capability_name":"feature"
1534 "source_requirement_index":3,
1535 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1536 "target_capability_name":"feature"
1543 "id":"vnffg1_wk1aqhk6exoh5fmds2unu0uyc",
1544 "type_name":"tosca.groups.nfv.VNFFG",
1545 "template_name":"vnffg1",
1548 "type_name":"string",
1551 "connection_point":{
1560 "type_name":"string",
1563 "constituent_vnfs":{
1570 "number_of_endpoints":{
1571 "type_name":"integer",
1574 "dependent_virtual_link":{
1586 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1587 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1591 "description":"Standard lifecycle create operation."
1595 "description":"Standard lifecycle stop operation."
1599 "description":"Standard lifecycle start operation."
1603 "description":"Standard lifecycle delete operation."
1607 "description":"Standard lifecycle configure operation."
1613 "path1_bv53fblv26hawr8dj4fxe2rsd",
1614 "path2_kgmfqr5ldqs9lj3oscrgxqefc"
1619 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
1622 "externalDataNetworkName":{
1623 "type_name":"string",
1624 "value":"vlan_4004_tunnel_net"
1626 "sfc_data_network":{
1627 "type_name":"string",
1628 "value":"sfc_data_network"
1631 "type_name":"string",
1632 "value":"192.167.0.10-192.168.0.20"
1634 "externalManageNetworkName":{
1635 "type_name":"string",
1636 "value":"vlan_4008_mng_net"
1638 "externalPluginManageNetworkName":{
1639 "type_name":"string",
1640 "value":"vlan_4007_plugin_net"
1648 "csarVersion":"v1.0",
1650 "csarProvider":"ZTE",
1652 "invariant_id":"vcpe_ns_sff_1",
1654 "description":"vcpe_ns"
1659 "type_name":"tosca.nodes.nfv.ext.FP",
1660 "default_instances":1,
1664 "type_name":"boolean",
1668 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1672 "dest_port_range":"1-100",
1673 "ip_protocol":"tcp",
1675 "119.1.1.1-119.1.1.10"
1678 {"get_input":"NatIpRange"}
1681 "source_port_range":"1-100"
1686 "interface_templates":[
1687 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>"
1689 "capability_templates":[
1692 "type_name":"tosca.capabilities.Node"
1695 "requirement_templates":[
1698 "target_node_template_name":"m6000_data_out"
1702 "target_node_template_name":"m600_tunnel_cp"
1706 "target_node_template_name":"VNAT",
1707 "target_capability_name":"vnat_fw_inout"
1713 "type_name":"tosca.nodes.nfv.ext.FP",
1714 "default_instances":1,
1718 "type_name":"boolean",
1722 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1726 "dest_port_range":"1-100",
1727 "ip_protocol":"tcp",
1735 "source_port_range":"1-100"
1740 "interface_templates":[
1741 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>"
1743 "capability_templates":[
1746 "type_name":"tosca.capabilities.Node"
1749 "requirement_templates":[
1752 "target_node_template_name":"m6000_data_in"
1756 "target_node_template_name":"m600_tunnel_cp"
1760 "target_node_template_name":"VFW",
1761 "target_capability_name":"vfw_fw_inout"
1765 "target_node_template_name":"VNAT",
1766 "target_capability_name":"vnat_fw_inout"
1770 "target_node_template_name":"m600_tunnel_cp"
1774 "target_node_template_name":"m6000_data_out"
1779 "name":"m6000_data_out",
1780 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1781 "default_instances":1,
1785 "type_name":"string",
1786 "value":"bidirectional"
1789 "type_name":"string",
1793 "type_name":"integer",
1797 "type_name":"string",
1798 "value":"11-22-33-22-11-44"
1801 "type_name":"string",
1802 "value":"xgei-0/4/1/5"
1805 "type_name":"string",
1809 "type_name":"integer",
1812 "sfc_encapsulation":{
1813 "type_name":"string",
1817 "interface_templates":[
1818 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>"
1820 "capability_templates":[
1823 "type_name":"tosca.capabilities.Node"
1827 "type_name":"tosca.capabilities.nfv.Forwarder"
1830 "requirement_templates":[
1832 "name":"virtualbinding",
1833 "target_node_template_name":"m6000_s",
1834 "target_capability_name":"virtualBinding"
1837 "name":"virtualLink",
1838 "target_node_type_name":"tosca.nodes.Root"
1842 "target_node_type_name":"tosca.nodes.Root"
1848 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
1849 "default_instances":1,
1853 "type_name":"boolean",
1857 "type_name":"string",
1858 "value":"vbrasplugin_1.0"
1861 "type_name":"string",
1864 "request_reclassification":{
1865 "type_name":"boolean",
1869 "type_name":"string",
1873 "type_name":"string",
1877 "type_name":"string",
1881 "type_name":"boolean",
1885 "type_name":"string",
1889 "type_name":"string",
1893 "type_name":"string",
1894 "value":"vcpe_vfw_zte_1_0"
1897 "type_name":"boolean",
1900 "adjust_vnf_capacity":{
1901 "type_name":"boolean",
1904 "vmnumber_overquota_alarm":{
1905 "type_name":"boolean",
1909 "type_name":"string",
1913 "type_name":"string",
1916 "externalPluginManageNetworkName":{
1917 "type_name":"string",
1918 "value":"vlan_4007_plugin_net"
1921 "type_name":"string",
1925 "interface_templates":[
1926 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>"
1928 "capability_templates":[
1931 "type_name":"tosca.capabilities.Node"
1935 "type_name":"tosca.capabilities.nfv.Forwarder"
1938 "name":"vfw_fw_inout",
1939 "type_name":"tosca.capabilities.nfv.Forwarder"
1942 "requirement_templates":[
1944 "name":"vfw_ctrl_by_manager_cp",
1945 "target_node_template_name":"ext_mnet_net",
1946 "target_capability_name":"virtual_linkable"
1949 "name":"vfw_data_cp",
1950 "target_node_template_name":"sfc_data_network",
1951 "target_capability_name":"virtual_linkable"
1954 "name":"virtualLink",
1955 "target_node_type_name":"tosca.nodes.Root"
1959 "target_node_type_name":"tosca.nodes.Root"
1964 "name":"m600_tunnel_cp",
1965 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1966 "default_instances":1,
1970 "type_name":"string",
1971 "value":"bidirectional"
1974 "type_name":"string",
1978 "type_name":"integer",
1982 "type_name":"string",
1983 "value":"00-11-00-22-33-00"
1986 "type_name":"string",
1987 "value":"gei-0/4/0/13"
1990 "type_name":"string",
1991 "value":"191.167.100.5"
1994 "type_name":"integer",
1997 "sfc_encapsulation":{
1998 "type_name":"string",
2002 "interface_templates":[
2003 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>"
2005 "capability_templates":[
2008 "type_name":"tosca.capabilities.Node"
2012 "type_name":"tosca.capabilities.nfv.Forwarder"
2015 "requirement_templates":[
2017 "name":"virtualLink",
2018 "target_node_template_name":"ext_datanet_net",
2019 "target_capability_name":"virtual_linkable"
2022 "name":"virtualbinding",
2023 "target_node_template_name":"m6000_s",
2024 "target_capability_name":"virtualBinding"
2028 "target_node_type_name":"tosca.nodes.Root"
2033 "name":"ext_mnet_net",
2034 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2035 "default_instances":1,
2039 "type_name":"string",
2040 "value":"vlan_4008_mng_net"
2043 "type_name":"boolean",
2047 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2051 "availability_zone":"nova"
2055 "type_name":"integer",
2059 "type_name":"integer",
2063 "type_name":"string",
2064 "value":"vlan_4008_mng_net"
2067 "type_name":"string",
2071 "interface_templates":[
2072 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>"
2074 "capability_templates":[
2077 "type_name":"tosca.capabilities.Node"
2080 "name":"virtual_linkable",
2081 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2086 "name":"m6000_data_in",
2087 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2088 "default_instances":1,
2092 "type_name":"string",
2093 "value":"bidirectional"
2096 "type_name":"string",
2100 "type_name":"integer",
2104 "type_name":"string",
2105 "value":"11-22-33-22-11-41"
2108 "type_name":"string",
2109 "value":"gei-0/4/0/7"
2112 "type_name":"string",
2116 "type_name":"integer",
2119 "sfc_encapsulation":{
2120 "type_name":"string",
2124 "type_name":"string",
2128 "interface_templates":[
2129 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>"
2131 "capability_templates":[
2134 "type_name":"tosca.capabilities.Node"
2138 "type_name":"tosca.capabilities.nfv.Forwarder"
2141 "requirement_templates":[
2143 "name":"virtualbinding",
2144 "target_node_template_name":"m6000_s",
2145 "target_capability_name":"virtualBinding"
2148 "name":"virtualLink",
2149 "target_node_type_name":"tosca.nodes.Root"
2153 "target_node_type_name":"tosca.nodes.Root"
2158 "name":"ext_datanet_net",
2159 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2160 "default_instances":1,
2164 "type_name":"string",
2165 "value":"vlan_4004_tunnel_net"
2168 "type_name":"boolean",
2172 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2176 "availability_zone":"nova"
2180 "type_name":"integer",
2184 "type_name":"integer",
2188 "type_name":"string",
2189 "value":"vlan_4004_tunnel_net"
2192 "type_name":"string",
2196 "interface_templates":[
2197 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>"
2199 "capability_templates":[
2202 "type_name":"tosca.capabilities.Node"
2205 "name":"virtual_linkable",
2206 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2211 "name":"m600_mnt_cp",
2212 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2213 "default_instances":1,
2217 "type_name":"string",
2218 "value":"bidirectional"
2221 "type_name":"string",
2225 "type_name":"integer",
2229 "type_name":"string",
2230 "value":"00-11-00-22-33-11"
2233 "type_name":"string",
2234 "value":"gei-0/4/0/1"
2237 "type_name":"string",
2238 "value":"10.46.244.51"
2241 "type_name":"integer",
2244 "sfc_encapsulation":{
2245 "type_name":"string",
2249 "type_name":"string",
2253 "interface_templates":[
2254 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>"
2256 "capability_templates":[
2259 "type_name":"tosca.capabilities.Node"
2263 "type_name":"tosca.capabilities.nfv.Forwarder"
2266 "requirement_templates":[
2268 "name":"virtualLink",
2269 "target_node_template_name":"ext_mnet_net",
2270 "target_capability_name":"virtual_linkable"
2273 "name":"virtualbinding",
2274 "target_node_template_name":"m6000_s",
2275 "target_capability_name":"virtualBinding"
2279 "target_node_type_name":"tosca.nodes.Root"
2284 "name":"sfc_data_network",
2285 "type_name":"tosca.nodes.nfv.ext.zte.VL",
2286 "default_instances":1,
2290 "type_name":"string",
2291 "value":"sfc_data_network"
2294 "type_name":"boolean",
2298 "type_name":"boolean",
2302 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2306 "availability_zone":"nova"
2310 "type_name":"integer",
2314 "type_name":"integer",
2318 "type_name":"string",
2319 "value":"sfc_data_network"
2322 "type_name":"string",
2326 "interface_templates":[
2327 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>"
2329 "capability_templates":[
2332 "type_name":"tosca.capabilities.Node"
2335 "name":"virtual_linkable",
2336 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2342 "type_name":"tosca.nodes.nfv.ext.PNF",
2343 "default_instances":1,
2347 "type_name":"string",
2350 "request_reclassification":{
2351 "type_name":"boolean",
2355 "type_name":"string",
2359 "type_name":"string",
2362 "management_address":{
2363 "type_name":"string",
2367 "type_name":"string",
2371 "type_name":"boolean",
2375 "interface_templates":[
2376 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>"
2378 "capability_templates":[
2381 "type_name":"tosca.capabilities.Node"
2384 "name":"virtualBinding",
2385 "type_name":"tosca.capabilities.nfv.VirtualBindable"
2389 "type_name":"tosca.capabilities.nfv.Forwarder"
2392 "requirement_templates":[
2395 "target_node_type_name":"tosca.nodes.Root"
2401 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
2402 "default_instances":1,
2406 "type_name":"boolean",
2410 "type_name":"string",
2411 "value":"vbrasplugin_1.0"
2414 "type_name":"string",
2417 "request_reclassification":{
2418 "type_name":"boolean",
2422 "type_name":"string",
2426 "type_name":"string",
2429 "externalPluginManageNetworkName":{
2430 "type_name":"string",
2431 "value":"vlan_4007_plugin_net"
2434 "type_name":"string",
2438 "type_name":"boolean",
2442 "type_name":"string",
2446 "type_name":"string",
2450 "type_name":"string",
2451 "value":"vcpe_vnat_zte_1"
2454 "type_name":"boolean",
2457 "adjust_vnf_capacity":{
2458 "type_name":"boolean",
2461 "vmnumber_overquota_alarm":{
2462 "type_name":"boolean",
2466 "type_name":"string",
2470 "type_name":"string",
2471 "value":"192.167.0.10-192.168.0.20"
2474 "type_name":"string",
2478 "type_name":"string",
2482 "interface_templates":[
2483 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>"
2485 "capability_templates":[
2488 "type_name":"tosca.capabilities.Node"
2492 "type_name":"tosca.capabilities.nfv.Forwarder"
2495 "name":"vnat_fw_inout",
2496 "type_name":"tosca.capabilities.nfv.Forwarder"
2499 "requirement_templates":[
2501 "name":"vnat_ctrl_by_manager_cp",
2502 "target_node_template_name":"ext_mnet_net",
2503 "target_capability_name":"virtual_linkable"
2506 "name":"vnat_data_cp",
2507 "target_node_template_name":"sfc_data_network",
2508 "target_capability_name":"virtual_linkable"
2511 "name":"virtualLink",
2512 "target_node_type_name":"tosca.nodes.Root"
2516 "target_node_type_name":"tosca.nodes.Root"
2524 "type_name":"tosca.groups.nfv.VNFFG",
2527 "type_name":"string",
2530 "connection_point":{
2539 "type_name":"string",
2542 "constituent_vnfs":{
2549 "number_of_endpoints":{
2550 "type_name":"integer",
2553 "dependent_virtual_link":{
2562 "interface_templates":[
2563 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>"
2565 "member_node_template_names":[
2571 "substitution_template":{
2572 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
2575 "externalDataNetworkName":{
2576 "type_name":"string",
2577 "value":"vlan_4004_tunnel_net"
2579 "sfc_data_network":{
2580 "type_name":"string",
2581 "value":"sfc_data_network"
2584 "type_name":"string",
2585 "value":"192.167.0.10-192.168.0.20"
2587 "externalManageNetworkName":{
2588 "type_name":"string",
2589 "value":"vlan_4008_mng_net"
2591 "externalPluginManageNetworkName":{
2592 "type_name":"string",
2593 "value":"vlan_4007_plugin_net"
2599 print convert_nsd_model(src_json)