1 # Copyright 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
270 def convert_nsd_model(src_json):
271 target_json = {'vnfs': [], 'pnfs': [], 'fps': []}
272 src_json_inst, src_json_model = convert_common(src_json, target_json)
274 src_nodes = src_json_inst['nodes']
275 for node in src_nodes:
276 type_name = node['type_name']
277 if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'):
278 target_json['vnfs'].append(convert_vnf_node(node, src_json_model))
279 elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'):
280 target_json['pnfs'].append(convert_pnf_node(node, src_json_model))
281 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
282 or node['type_name'].find('.RouteExternalVL') > 0:
283 target_json['vls'].append(convert_vl_node(node, src_nodes))
284 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
285 target_json['cps'].append(convert_cp_node(node, src_nodes))
286 elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'):
287 target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model))
288 elif type_name.endswith('.Router'):
289 target_json['routers'].append(convert_router_node(node, src_nodes))
291 target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes)
293 target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []}
294 convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed'])
295 return json.dumps(target_json)
298 def convert_vnfd_model(src_json):
299 target_json = {'image_files': [], 'local_storages': [], 'vdus': []}
300 src_json_inst, src_json_model = convert_common(src_json, target_json)
302 src_nodes = src_json_inst['nodes']
303 for node in src_nodes:
304 type_name = node['type_name']
305 if type_name.endswith('.ImageFile'):
306 target_json['image_files'].append(convert_imagefile_node(node, src_nodes))
307 elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'):
308 target_json['local_storages'].append(convert_localstorage_node(node, src_nodes))
309 elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'):
310 target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model))
311 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
312 or node['type_name'].find('.RouteExternalVL') > 0:
313 target_json['vls'].append(convert_vl_node(node, src_nodes))
314 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
315 target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD'))
316 elif type_name.endswith('.Router'):
317 target_json['routers'].append(convert_router_node(node, src_nodes))
319 target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []}
320 convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed'])
321 return json.dumps(target_json)
323 if __name__ == '__main__':
324 src_json = json.dumps(
330 "csarVersion":"v1.0",
332 "csarProvider":"ZTE",
334 "invariant_id":"vcpe_ns_sff_1",
336 "description":"vcpe_ns"
340 "id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
341 "type_name":"tosca.nodes.nfv.ext.FP",
342 "template_name":"path2",
345 "type_name":"boolean",
349 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
353 "dest_port_range":"1-100",
356 "119.1.1.1-119.1.1.10"
359 {"get_input":"NatIpRange"}
362 "source_port_range":"1-100"
370 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
371 "type_name":"tosca.interfaces.node.lifecycle.Standard",
375 "description":"Standard lifecycle create operation."
379 "description":"Standard lifecycle stop operation."
383 "description":"Standard lifecycle start operation."
387 "description":"Standard lifecycle delete operation."
391 "description":"Standard lifecycle configure operation."
399 "type_name":"tosca.capabilities.Node"
405 "source_requirement_index":0,
406 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
410 "source_requirement_index":1,
411 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
415 "source_requirement_index":2,
416 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
417 "target_capability_name":"feature"
422 "id":"path1_bv53fblv26hawr8dj4fxe2rsd",
423 "type_name":"tosca.nodes.nfv.ext.FP",
424 "template_name":"path1",
427 "type_name":"boolean",
431 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
435 "dest_port_range":"1-100",
444 "source_port_range":"1-100"
452 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
453 "type_name":"tosca.interfaces.node.lifecycle.Standard",
457 "description":"Standard lifecycle create operation."
461 "description":"Standard lifecycle stop operation."
465 "description":"Standard lifecycle start operation."
469 "description":"Standard lifecycle delete operation."
473 "description":"Standard lifecycle configure operation."
481 "type_name":"tosca.capabilities.Node"
487 "source_requirement_index":0,
488 "target_node_id":"m6000_data_in_eldly5txw4frny3cc349uz3nc"
492 "source_requirement_index":1,
493 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
497 "source_requirement_index":2,
498 "target_node_id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
499 "target_capability_name":"feature"
503 "source_requirement_index":3,
504 "target_node_id":"VNAT_cfdljtspvkp234irka59wgab0",
505 "target_capability_name":"feature"
509 "source_requirement_index":4,
510 "target_node_id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
514 "source_requirement_index":5,
515 "target_node_id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
520 "id":"m6000_data_out_qeukdtf6g87cnparxi51fa8s6",
521 "type_name":"tosca.nodes.nfv.ext.zte.CP",
522 "template_name":"m6000_data_out",
525 "type_name":"string",
526 "value":"bidirectional"
529 "type_name":"string",
533 "type_name":"integer",
537 "type_name":"string",
538 "value":"11-22-33-22-11-44"
541 "type_name":"string",
542 "value":"xgei-0/4/1/5"
545 "type_name":"string",
549 "type_name":"integer",
552 "sfc_encapsulation":{
553 "type_name":"string",
560 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
561 "type_name":"tosca.interfaces.node.lifecycle.Standard",
565 "description":"Standard lifecycle create operation."
569 "description":"Standard lifecycle stop operation."
573 "description":"Standard lifecycle start operation."
577 "description":"Standard lifecycle delete operation."
581 "description":"Standard lifecycle configure operation."
589 "type_name":"tosca.capabilities.Node"
593 "type_name":"tosca.capabilities.nfv.Forwarder"
598 "name":"virtualbinding",
599 "source_requirement_index":0,
600 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
601 "target_capability_name":"feature"
604 "name":"virtualLink",
605 "source_requirement_index":1,
606 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
607 "target_capability_name":"feature"
611 "source_requirement_index":2,
612 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
613 "target_capability_name":"feature"
618 "id":"VFW_57z0ua89aiyl8ncvw7h7mjf34",
619 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
620 "template_name":"VFW",
623 "type_name":"boolean",
627 "type_name":"string",
628 "value":"vbrasplugin_1.0"
631 "type_name":"string",
634 "request_reclassification":{
635 "type_name":"boolean",
639 "type_name":"string",
643 "type_name":"string",
647 "type_name":"string",
651 "type_name":"boolean",
655 "type_name":"string",
659 "type_name":"string",
663 "type_name":"string",
664 "value":"vcpe_vfw_zte_1_0"
667 "type_name":"boolean",
670 "adjust_vnf_capacity":{
671 "type_name":"boolean",
674 "vmnumber_overquota_alarm":{
675 "type_name":"boolean",
679 "type_name":"string",
683 "type_name":"string",
686 "externalPluginManageNetworkName":{
687 "type_name":"string",
688 "value":"vlan_4007_plugin_net"
691 "type_name":"string",
698 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
699 "type_name":"tosca.interfaces.node.lifecycle.Standard",
703 "description":"Standard lifecycle create operation."
707 "description":"Standard lifecycle stop operation."
711 "description":"Standard lifecycle start operation."
715 "description":"Standard lifecycle delete operation."
719 "description":"Standard lifecycle configure operation."
727 "type_name":"tosca.capabilities.Node"
731 "type_name":"tosca.capabilities.nfv.Forwarder"
734 "name":"vfw_fw_inout",
735 "type_name":"tosca.capabilities.nfv.Forwarder"
740 "name":"vfw_ctrl_by_manager_cp",
741 "source_requirement_index":0,
742 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
743 "target_capability_name":"feature"
746 "name":"vfw_data_cp",
747 "source_requirement_index":1,
748 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
749 "target_capability_name":"feature"
752 "name":"virtualLink",
753 "source_requirement_index":2,
754 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
755 "target_capability_name":"feature"
759 "source_requirement_index":3,
760 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
761 "target_capability_name":"feature"
766 "id":"m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5",
767 "type_name":"tosca.nodes.nfv.ext.zte.CP",
768 "template_name":"m600_tunnel_cp",
771 "type_name":"string",
772 "value":"bidirectional"
775 "type_name":"string",
779 "type_name":"integer",
783 "type_name":"string",
784 "value":"00-11-00-22-33-00"
787 "type_name":"string",
788 "value":"gei-0/4/0/13"
791 "type_name":"string",
792 "value":"191.167.100.5"
795 "type_name":"integer",
798 "sfc_encapsulation":{
799 "type_name":"string",
806 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
807 "type_name":"tosca.interfaces.node.lifecycle.Standard",
811 "description":"Standard lifecycle create operation."
815 "description":"Standard lifecycle stop operation."
819 "description":"Standard lifecycle start operation."
823 "description":"Standard lifecycle delete operation."
827 "description":"Standard lifecycle configure operation."
835 "type_name":"tosca.capabilities.Node"
839 "type_name":"tosca.capabilities.nfv.Forwarder"
844 "name":"virtualLink",
845 "source_requirement_index":0,
846 "target_node_id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
847 "target_capability_name":"feature"
850 "name":"virtualbinding",
851 "source_requirement_index":1,
852 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
853 "target_capability_name":"feature"
857 "source_requirement_index":2,
858 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
859 "target_capability_name":"feature"
864 "id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
865 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
866 "template_name":"ext_mnet_net",
869 "type_name":"string",
870 "value":"vlan_4008_mng_net"
873 "type_name":"boolean",
877 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
881 "availability_zone":"nova"
885 "type_name":"integer",
889 "type_name":"integer",
893 "type_name":"string",
894 "value":"vlan_4008_mng_net"
897 "type_name":"string",
904 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
905 "type_name":"tosca.interfaces.node.lifecycle.Standard",
909 "description":"Standard lifecycle create operation."
913 "description":"Standard lifecycle stop operation."
917 "description":"Standard lifecycle start operation."
921 "description":"Standard lifecycle delete operation."
925 "description":"Standard lifecycle configure operation."
933 "type_name":"tosca.capabilities.Node"
936 "name":"virtual_linkable",
937 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
942 "id":"m6000_data_in_eldly5txw4frny3cc349uz3nc",
943 "type_name":"tosca.nodes.nfv.ext.zte.CP",
944 "template_name":"m6000_data_in",
947 "type_name":"string",
948 "value":"bidirectional"
951 "type_name":"string",
955 "type_name":"integer",
959 "type_name":"string",
960 "value":"11-22-33-22-11-41"
963 "type_name":"string",
964 "value":"gei-0/4/0/7"
967 "type_name":"string",
971 "type_name":"integer",
974 "sfc_encapsulation":{
975 "type_name":"string",
979 "type_name":"string",
986 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
987 "type_name":"tosca.interfaces.node.lifecycle.Standard",
991 "description":"Standard lifecycle create operation."
995 "description":"Standard lifecycle stop operation."
999 "description":"Standard lifecycle start operation."
1003 "description":"Standard lifecycle delete operation."
1007 "description":"Standard lifecycle configure operation."
1015 "type_name":"tosca.capabilities.Node"
1019 "type_name":"tosca.capabilities.nfv.Forwarder"
1024 "name":"virtualbinding",
1025 "source_requirement_index":0,
1026 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1027 "target_capability_name":"feature"
1030 "name":"virtualLink",
1031 "source_requirement_index":1,
1032 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1033 "target_capability_name":"feature"
1037 "source_requirement_index":2,
1038 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1039 "target_capability_name":"feature"
1044 "id":"ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
1045 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
1046 "template_name":"ext_datanet_net",
1049 "type_name":"string",
1050 "value":"vlan_4004_tunnel_net"
1053 "type_name":"boolean",
1057 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1061 "availability_zone":"nova"
1065 "type_name":"integer",
1069 "type_name":"integer",
1073 "type_name":"string",
1074 "value":"vlan_4004_tunnel_net"
1077 "type_name":"string",
1084 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1085 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1089 "description":"Standard lifecycle create operation."
1093 "description":"Standard lifecycle stop operation."
1097 "description":"Standard lifecycle start operation."
1101 "description":"Standard lifecycle delete operation."
1105 "description":"Standard lifecycle configure operation."
1113 "type_name":"tosca.capabilities.Node"
1116 "name":"virtual_linkable",
1117 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1122 "id":"m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7",
1123 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1124 "template_name":"m600_mnt_cp",
1127 "type_name":"string",
1128 "value":"bidirectional"
1131 "type_name":"string",
1135 "type_name":"integer",
1139 "type_name":"string",
1140 "value":"00-11-00-22-33-11"
1143 "type_name":"string",
1144 "value":"gei-0/4/0/1"
1147 "type_name":"string",
1148 "value":"10.46.244.51"
1151 "type_name":"integer",
1154 "sfc_encapsulation":{
1155 "type_name":"string",
1159 "type_name":"string",
1166 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1167 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1171 "description":"Standard lifecycle create operation."
1175 "description":"Standard lifecycle stop operation."
1179 "description":"Standard lifecycle start operation."
1183 "description":"Standard lifecycle delete operation."
1187 "description":"Standard lifecycle configure operation."
1195 "type_name":"tosca.capabilities.Node"
1199 "type_name":"tosca.capabilities.nfv.Forwarder"
1204 "name":"virtualLink",
1205 "source_requirement_index":0,
1206 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1207 "target_capability_name":"feature"
1210 "name":"virtualbinding",
1211 "source_requirement_index":1,
1212 "target_node_id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1213 "target_capability_name":"feature"
1217 "source_requirement_index":2,
1218 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1219 "target_capability_name":"feature"
1224 "id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1225 "type_name":"tosca.nodes.nfv.ext.zte.VL",
1226 "template_name":"sfc_data_network",
1229 "type_name":"string",
1230 "value":"sfc_data_network"
1233 "type_name":"boolean",
1237 "type_name":"boolean",
1241 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
1245 "availability_zone":"nova"
1249 "type_name":"integer",
1253 "type_name":"integer",
1257 "type_name":"string",
1258 "value":"sfc_data_network"
1261 "type_name":"string",
1268 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1269 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1273 "description":"Standard lifecycle create operation."
1277 "description":"Standard lifecycle stop operation."
1281 "description":"Standard lifecycle start operation."
1285 "description":"Standard lifecycle delete operation."
1289 "description":"Standard lifecycle configure operation."
1297 "type_name":"tosca.capabilities.Node"
1300 "name":"virtual_linkable",
1301 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
1306 "id":"m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1307 "type_name":"tosca.nodes.nfv.ext.PNF",
1308 "template_name":"m6000_s",
1311 "type_name":"string",
1314 "request_reclassification":{
1315 "type_name":"boolean",
1319 "type_name":"string",
1323 "type_name":"string",
1326 "management_address":{
1327 "type_name":"string",
1331 "type_name":"string",
1335 "type_name":"boolean",
1342 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1343 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1347 "description":"Standard lifecycle create operation."
1351 "description":"Standard lifecycle stop operation."
1355 "description":"Standard lifecycle start operation."
1359 "description":"Standard lifecycle delete operation."
1363 "description":"Standard lifecycle configure operation."
1371 "type_name":"tosca.capabilities.Node"
1374 "name":"virtualBinding",
1375 "type_name":"tosca.capabilities.nfv.VirtualBindable"
1379 "type_name":"tosca.capabilities.nfv.Forwarder"
1385 "source_requirement_index":0,
1386 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1387 "target_capability_name":"feature"
1392 "id":"VNAT_cfdljtspvkp234irka59wgab0",
1393 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
1394 "template_name":"VNAT",
1397 "type_name":"boolean",
1401 "type_name":"string",
1402 "value":"vbrasplugin_1.0"
1405 "type_name":"string",
1408 "request_reclassification":{
1409 "type_name":"boolean",
1413 "type_name":"string",
1417 "type_name":"string",
1420 "externalPluginManageNetworkName":{
1421 "type_name":"string",
1422 "value":"vlan_4007_plugin_net"
1425 "type_name":"string",
1429 "type_name":"boolean",
1433 "type_name":"string",
1437 "type_name":"string",
1441 "type_name":"string",
1442 "value":"vcpe_vnat_zte_1"
1445 "type_name":"boolean",
1448 "adjust_vnf_capacity":{
1449 "type_name":"boolean",
1452 "vmnumber_overquota_alarm":{
1453 "type_name":"boolean",
1457 "type_name":"string",
1461 "type_name":"string",
1462 "value":"192.167.0.10-192.168.0.20"
1465 "type_name":"string",
1469 "type_name":"string",
1476 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1477 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1481 "description":"Standard lifecycle create operation."
1485 "description":"Standard lifecycle stop operation."
1489 "description":"Standard lifecycle start operation."
1493 "description":"Standard lifecycle delete operation."
1497 "description":"Standard lifecycle configure operation."
1505 "type_name":"tosca.capabilities.Node"
1509 "type_name":"tosca.capabilities.nfv.Forwarder"
1512 "name":"vnat_fw_inout",
1513 "type_name":"tosca.capabilities.nfv.Forwarder"
1518 "name":"vnat_ctrl_by_manager_cp",
1519 "source_requirement_index":0,
1520 "target_node_id":"ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1521 "target_capability_name":"feature"
1524 "name":"vnat_data_cp",
1525 "source_requirement_index":1,
1526 "target_node_id":"sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1527 "target_capability_name":"feature"
1530 "name":"virtualLink",
1531 "source_requirement_index":2,
1532 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1533 "target_capability_name":"feature"
1537 "source_requirement_index":3,
1538 "target_node_id":"path2_kgmfqr5ldqs9lj3oscrgxqefc",
1539 "target_capability_name":"feature"
1546 "id":"vnffg1_wk1aqhk6exoh5fmds2unu0uyc",
1547 "type_name":"tosca.groups.nfv.VNFFG",
1548 "template_name":"vnffg1",
1551 "type_name":"string",
1554 "connection_point":{
1563 "type_name":"string",
1566 "constituent_vnfs":{
1573 "number_of_endpoints":{
1574 "type_name":"integer",
1577 "dependent_virtual_link":{
1589 "description":"This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1590 "type_name":"tosca.interfaces.node.lifecycle.Standard",
1594 "description":"Standard lifecycle create operation."
1598 "description":"Standard lifecycle stop operation."
1602 "description":"Standard lifecycle start operation."
1606 "description":"Standard lifecycle delete operation."
1610 "description":"Standard lifecycle configure operation."
1616 "path1_bv53fblv26hawr8dj4fxe2rsd",
1617 "path2_kgmfqr5ldqs9lj3oscrgxqefc"
1622 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
1625 "externalDataNetworkName":{
1626 "type_name":"string",
1627 "value":"vlan_4004_tunnel_net"
1629 "sfc_data_network":{
1630 "type_name":"string",
1631 "value":"sfc_data_network"
1634 "type_name":"string",
1635 "value":"192.167.0.10-192.168.0.20"
1637 "externalManageNetworkName":{
1638 "type_name":"string",
1639 "value":"vlan_4008_mng_net"
1641 "externalPluginManageNetworkName":{
1642 "type_name":"string",
1643 "value":"vlan_4007_plugin_net"
1651 "csarVersion":"v1.0",
1653 "csarProvider":"ZTE",
1655 "invariant_id":"vcpe_ns_sff_1",
1657 "description":"vcpe_ns"
1662 "type_name":"tosca.nodes.nfv.ext.FP",
1663 "default_instances":1,
1667 "type_name":"boolean",
1671 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1675 "dest_port_range":"1-100",
1676 "ip_protocol":"tcp",
1678 "119.1.1.1-119.1.1.10"
1681 {"get_input":"NatIpRange"}
1684 "source_port_range":"1-100"
1689 "interface_templates":[
1690 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>"
1692 "capability_templates":[
1695 "type_name":"tosca.capabilities.Node"
1698 "requirement_templates":[
1701 "target_node_template_name":"m6000_data_out"
1705 "target_node_template_name":"m600_tunnel_cp"
1709 "target_node_template_name":"VNAT",
1710 "target_capability_name":"vnat_fw_inout"
1716 "type_name":"tosca.nodes.nfv.ext.FP",
1717 "default_instances":1,
1721 "type_name":"boolean",
1725 "type_name":"tosca.datatypes.nfv.ext.FPPolicy",
1729 "dest_port_range":"1-100",
1730 "ip_protocol":"tcp",
1738 "source_port_range":"1-100"
1743 "interface_templates":[
1744 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>"
1746 "capability_templates":[
1749 "type_name":"tosca.capabilities.Node"
1752 "requirement_templates":[
1755 "target_node_template_name":"m6000_data_in"
1759 "target_node_template_name":"m600_tunnel_cp"
1763 "target_node_template_name":"VFW",
1764 "target_capability_name":"vfw_fw_inout"
1768 "target_node_template_name":"VNAT",
1769 "target_capability_name":"vnat_fw_inout"
1773 "target_node_template_name":"m600_tunnel_cp"
1777 "target_node_template_name":"m6000_data_out"
1782 "name":"m6000_data_out",
1783 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1784 "default_instances":1,
1788 "type_name":"string",
1789 "value":"bidirectional"
1792 "type_name":"string",
1796 "type_name":"integer",
1800 "type_name":"string",
1801 "value":"11-22-33-22-11-44"
1804 "type_name":"string",
1805 "value":"xgei-0/4/1/5"
1808 "type_name":"string",
1812 "type_name":"integer",
1815 "sfc_encapsulation":{
1816 "type_name":"string",
1820 "interface_templates":[
1821 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>"
1823 "capability_templates":[
1826 "type_name":"tosca.capabilities.Node"
1830 "type_name":"tosca.capabilities.nfv.Forwarder"
1833 "requirement_templates":[
1835 "name":"virtualbinding",
1836 "target_node_template_name":"m6000_s",
1837 "target_capability_name":"virtualBinding"
1840 "name":"virtualLink",
1841 "target_node_type_name":"tosca.nodes.Root"
1845 "target_node_type_name":"tosca.nodes.Root"
1851 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VFW",
1852 "default_instances":1,
1856 "type_name":"boolean",
1860 "type_name":"string",
1861 "value":"vbrasplugin_1.0"
1864 "type_name":"string",
1867 "request_reclassification":{
1868 "type_name":"boolean",
1872 "type_name":"string",
1876 "type_name":"string",
1880 "type_name":"string",
1884 "type_name":"boolean",
1888 "type_name":"string",
1892 "type_name":"string",
1896 "type_name":"string",
1897 "value":"vcpe_vfw_zte_1_0"
1900 "type_name":"boolean",
1903 "adjust_vnf_capacity":{
1904 "type_name":"boolean",
1907 "vmnumber_overquota_alarm":{
1908 "type_name":"boolean",
1912 "type_name":"string",
1916 "type_name":"string",
1919 "externalPluginManageNetworkName":{
1920 "type_name":"string",
1921 "value":"vlan_4007_plugin_net"
1924 "type_name":"string",
1928 "interface_templates":[
1929 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>"
1931 "capability_templates":[
1934 "type_name":"tosca.capabilities.Node"
1938 "type_name":"tosca.capabilities.nfv.Forwarder"
1941 "name":"vfw_fw_inout",
1942 "type_name":"tosca.capabilities.nfv.Forwarder"
1945 "requirement_templates":[
1947 "name":"vfw_ctrl_by_manager_cp",
1948 "target_node_template_name":"ext_mnet_net",
1949 "target_capability_name":"virtual_linkable"
1952 "name":"vfw_data_cp",
1953 "target_node_template_name":"sfc_data_network",
1954 "target_capability_name":"virtual_linkable"
1957 "name":"virtualLink",
1958 "target_node_type_name":"tosca.nodes.Root"
1962 "target_node_type_name":"tosca.nodes.Root"
1967 "name":"m600_tunnel_cp",
1968 "type_name":"tosca.nodes.nfv.ext.zte.CP",
1969 "default_instances":1,
1973 "type_name":"string",
1974 "value":"bidirectional"
1977 "type_name":"string",
1981 "type_name":"integer",
1985 "type_name":"string",
1986 "value":"00-11-00-22-33-00"
1989 "type_name":"string",
1990 "value":"gei-0/4/0/13"
1993 "type_name":"string",
1994 "value":"191.167.100.5"
1997 "type_name":"integer",
2000 "sfc_encapsulation":{
2001 "type_name":"string",
2005 "interface_templates":[
2006 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>"
2008 "capability_templates":[
2011 "type_name":"tosca.capabilities.Node"
2015 "type_name":"tosca.capabilities.nfv.Forwarder"
2018 "requirement_templates":[
2020 "name":"virtualLink",
2021 "target_node_template_name":"ext_datanet_net",
2022 "target_capability_name":"virtual_linkable"
2025 "name":"virtualbinding",
2026 "target_node_template_name":"m6000_s",
2027 "target_capability_name":"virtualBinding"
2031 "target_node_type_name":"tosca.nodes.Root"
2036 "name":"ext_mnet_net",
2037 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2038 "default_instances":1,
2042 "type_name":"string",
2043 "value":"vlan_4008_mng_net"
2046 "type_name":"boolean",
2050 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2054 "availability_zone":"nova"
2058 "type_name":"integer",
2062 "type_name":"integer",
2066 "type_name":"string",
2067 "value":"vlan_4008_mng_net"
2070 "type_name":"string",
2074 "interface_templates":[
2075 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>"
2077 "capability_templates":[
2080 "type_name":"tosca.capabilities.Node"
2083 "name":"virtual_linkable",
2084 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2089 "name":"m6000_data_in",
2090 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2091 "default_instances":1,
2095 "type_name":"string",
2096 "value":"bidirectional"
2099 "type_name":"string",
2103 "type_name":"integer",
2107 "type_name":"string",
2108 "value":"11-22-33-22-11-41"
2111 "type_name":"string",
2112 "value":"gei-0/4/0/7"
2115 "type_name":"string",
2119 "type_name":"integer",
2122 "sfc_encapsulation":{
2123 "type_name":"string",
2127 "type_name":"string",
2131 "interface_templates":[
2132 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>"
2134 "capability_templates":[
2137 "type_name":"tosca.capabilities.Node"
2141 "type_name":"tosca.capabilities.nfv.Forwarder"
2144 "requirement_templates":[
2146 "name":"virtualbinding",
2147 "target_node_template_name":"m6000_s",
2148 "target_capability_name":"virtualBinding"
2151 "name":"virtualLink",
2152 "target_node_type_name":"tosca.nodes.Root"
2156 "target_node_type_name":"tosca.nodes.Root"
2161 "name":"ext_datanet_net",
2162 "type_name":"tosca.nodes.nfv.ext.VL.Vmware",
2163 "default_instances":1,
2167 "type_name":"string",
2168 "value":"vlan_4004_tunnel_net"
2171 "type_name":"boolean",
2175 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2179 "availability_zone":"nova"
2183 "type_name":"integer",
2187 "type_name":"integer",
2191 "type_name":"string",
2192 "value":"vlan_4004_tunnel_net"
2195 "type_name":"string",
2199 "interface_templates":[
2200 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>"
2202 "capability_templates":[
2205 "type_name":"tosca.capabilities.Node"
2208 "name":"virtual_linkable",
2209 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2214 "name":"m600_mnt_cp",
2215 "type_name":"tosca.nodes.nfv.ext.zte.CP",
2216 "default_instances":1,
2220 "type_name":"string",
2221 "value":"bidirectional"
2224 "type_name":"string",
2228 "type_name":"integer",
2232 "type_name":"string",
2233 "value":"00-11-00-22-33-11"
2236 "type_name":"string",
2237 "value":"gei-0/4/0/1"
2240 "type_name":"string",
2241 "value":"10.46.244.51"
2244 "type_name":"integer",
2247 "sfc_encapsulation":{
2248 "type_name":"string",
2252 "type_name":"string",
2256 "interface_templates":[
2257 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>"
2259 "capability_templates":[
2262 "type_name":"tosca.capabilities.Node"
2266 "type_name":"tosca.capabilities.nfv.Forwarder"
2269 "requirement_templates":[
2271 "name":"virtualLink",
2272 "target_node_template_name":"ext_mnet_net",
2273 "target_capability_name":"virtual_linkable"
2276 "name":"virtualbinding",
2277 "target_node_template_name":"m6000_s",
2278 "target_capability_name":"virtualBinding"
2282 "target_node_type_name":"tosca.nodes.Root"
2287 "name":"sfc_data_network",
2288 "type_name":"tosca.nodes.nfv.ext.zte.VL",
2289 "default_instances":1,
2293 "type_name":"string",
2294 "value":"sfc_data_network"
2297 "type_name":"boolean",
2301 "type_name":"boolean",
2305 "type_name":"tosca.datatypes.nfv.ext.LocationInfo",
2309 "availability_zone":"nova"
2313 "type_name":"integer",
2317 "type_name":"integer",
2321 "type_name":"string",
2322 "value":"sfc_data_network"
2325 "type_name":"string",
2329 "interface_templates":[
2330 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>"
2332 "capability_templates":[
2335 "type_name":"tosca.capabilities.Node"
2338 "name":"virtual_linkable",
2339 "type_name":"tosca.capabilities.nfv.VirtualLinkable"
2345 "type_name":"tosca.nodes.nfv.ext.PNF",
2346 "default_instances":1,
2350 "type_name":"string",
2353 "request_reclassification":{
2354 "type_name":"boolean",
2358 "type_name":"string",
2362 "type_name":"string",
2365 "management_address":{
2366 "type_name":"string",
2370 "type_name":"string",
2374 "type_name":"boolean",
2378 "interface_templates":[
2379 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>"
2381 "capability_templates":[
2384 "type_name":"tosca.capabilities.Node"
2387 "name":"virtualBinding",
2388 "type_name":"tosca.capabilities.nfv.VirtualBindable"
2392 "type_name":"tosca.capabilities.nfv.Forwarder"
2395 "requirement_templates":[
2398 "target_node_type_name":"tosca.nodes.Root"
2404 "type_name":"tosca.nodes.nfv.ext.zte.VNF.VNAT",
2405 "default_instances":1,
2409 "type_name":"boolean",
2413 "type_name":"string",
2414 "value":"vbrasplugin_1.0"
2417 "type_name":"string",
2420 "request_reclassification":{
2421 "type_name":"boolean",
2425 "type_name":"string",
2429 "type_name":"string",
2432 "externalPluginManageNetworkName":{
2433 "type_name":"string",
2434 "value":"vlan_4007_plugin_net"
2437 "type_name":"string",
2441 "type_name":"boolean",
2445 "type_name":"string",
2449 "type_name":"string",
2453 "type_name":"string",
2454 "value":"vcpe_vnat_zte_1"
2457 "type_name":"boolean",
2460 "adjust_vnf_capacity":{
2461 "type_name":"boolean",
2464 "vmnumber_overquota_alarm":{
2465 "type_name":"boolean",
2469 "type_name":"string",
2473 "type_name":"string",
2474 "value":"192.167.0.10-192.168.0.20"
2477 "type_name":"string",
2481 "type_name":"string",
2485 "interface_templates":[
2486 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>"
2488 "capability_templates":[
2491 "type_name":"tosca.capabilities.Node"
2495 "type_name":"tosca.capabilities.nfv.Forwarder"
2498 "name":"vnat_fw_inout",
2499 "type_name":"tosca.capabilities.nfv.Forwarder"
2502 "requirement_templates":[
2504 "name":"vnat_ctrl_by_manager_cp",
2505 "target_node_template_name":"ext_mnet_net",
2506 "target_capability_name":"virtual_linkable"
2509 "name":"vnat_data_cp",
2510 "target_node_template_name":"sfc_data_network",
2511 "target_capability_name":"virtual_linkable"
2514 "name":"virtualLink",
2515 "target_node_type_name":"tosca.nodes.Root"
2519 "target_node_type_name":"tosca.nodes.Root"
2527 "type_name":"tosca.groups.nfv.VNFFG",
2530 "type_name":"string",
2533 "connection_point":{
2542 "type_name":"string",
2545 "constituent_vnfs":{
2552 "number_of_endpoints":{
2553 "type_name":"integer",
2556 "dependent_virtual_link":{
2565 "interface_templates":[
2566 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>"
2568 "member_node_template_names":[
2574 "substitution_template":{
2575 "node_type_name":"tosca.nodes.nfv.NS.VCPE_NS"
2578 "externalDataNetworkName":{
2579 "type_name":"string",
2580 "value":"vlan_4004_tunnel_net"
2582 "sfc_data_network":{
2583 "type_name":"string",
2584 "value":"sfc_data_network"
2587 "type_name":"string",
2588 "value":"192.167.0.10-192.168.0.20"
2590 "externalManageNetworkName":{
2591 "type_name":"string",
2592 "value":"vlan_4008_mng_net"
2594 "externalPluginManageNetworkName":{
2595 "type_name":"string",
2596 "value":"vlan_4007_plugin_net"
2602 print convert_nsd_model(src_json)