1 # Copyright 2016-2017 ZTE Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
18 def safe_get(key_val, key):
19 return key_val[key] if key in key_val else ""
22 def find_node_name(node_id, node_list):
23 for node in node_list:
24 if node['id'] == node_id:
25 return node['template_name']
26 raise Exception('can not find node(%s).' % node_id)
29 def find_node_type(node_id, node_list):
30 for node in node_list:
31 if node['id'] == node_id:
32 return node['type_name']
33 raise Exception('can not find node(%s).' % node_id)
36 def find_related_node(node_id, src_json_model, requirement_name):
38 for model_tpl in safe_get(src_json_model, "node_templates"):
39 for rt in safe_get(model_tpl, 'requirement_templates'):
40 if safe_get(rt, 'name') == requirement_name and safe_get(rt, 'target_node_template_name') == node_id:
41 related_nodes.append(model_tpl['name'])
45 def convert_props(src_node, dest_node):
46 if 'properties' in src_node and src_node['properties']:
47 for prop_name, prop_info in 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):
74 'type': src_node['type_name'],
75 'vnf_id': src_node['template_name'],
81 convert_props(src_node, vnf_node)
82 for model_tpl in safe_get(src_json_model, "node_templates"):
83 if model_tpl['name'] != vnf_node['vnf_id']:
85 vnf_node['dependencies'] = [
87 'key_name': requirement['name'],
88 'vl_id': requirement['target_node_template_name']
89 } for requirement in safe_get(model_tpl, 'requirement_templates')
90 if safe_get(requirement, 'target_capability_name') == 'virtual_linkable'
92 vnf_node['networks'] = [requirement['target_node_template_name'] for
93 requirement in safe_get(model_tpl, 'requirement_templates') if
94 safe_get(requirement, 'name') == 'dependency']
98 def convert_pnf_node(src_node, src_json_model):
99 pnf_node = {'pnf_id': src_node['template_name'], 'description': '', 'properties': {}}
100 convert_props(src_node, pnf_node)
101 pnf_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
105 def convert_vl_node(src_node, src_node_list):
106 vl_node = {'vl_id': src_node['template_name'], 'description': '', 'properties': {}}
107 convert_props(src_node, vl_node)
108 vl_node['route_id'] = ''
109 for relation in safe_get(src_node, 'relationships'):
110 if safe_get(relation, 'type_name').endswith('.VirtualLinksTo'):
111 vl_node['route_id'] = find_node_name(relation['target_node_id'], src_node_list)
113 vl_node['route_external'] = (src_node['type_name'].find('.RouteExternalVL') > 0)
117 def convert_cp_node(src_node, src_node_list, model_type='NSD'):
118 cp_node = {'cp_id': src_node['template_name'], 'description': '', 'properties': {}}
119 convert_props(src_node, cp_node)
120 src_relationships = src_node['relationships']
121 for relation in src_relationships:
122 if safe_get(relation, 'name') == 'virtualLink':
123 cp_node['vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
124 elif safe_get(relation, 'name') == 'virtualbinding':
125 node_key = 'pnf_id' if model_type == 'NSD' else 'vdu_id'
126 cp_node[node_key] = find_node_name(relation['target_node_id'], src_node_list)
130 def convert_router_node(src_node, src_node_list):
131 router_node = {'router_id': src_node['template_name'], 'description': '', 'properties': {}}
132 convert_props(src_node, router_node)
133 for relation in src_node['relationships']:
134 if safe_get(relation, 'name') != 'external_virtual_link':
136 router_node['external_vl_id'] = find_node_name(relation['target_node_id'], src_node_list)
137 router_node['external_ip_addresses'] = []
138 if 'properties' not in relation:
140 for prop_name, prop_info in relation['properties'].items():
141 if prop_name == 'router_ip_address':
142 router_node['external_ip_addresses'].append(prop_info['value'])
147 def convert_fp_node(src_node, src_node_list, src_json_model):
149 'fp_id': src_node['template_name'],
154 convert_props(src_node, fp_node)
155 for relation in safe_get(src_node, 'relationships'):
156 if safe_get(relation, 'name') != 'forwarder':
158 forwarder_point = {'type': 'vnf'}
159 target_node_type = find_node_type(relation['target_node_id'], src_node_list).upper()
160 if target_node_type.find('.CP.') >= 0 or target_node_type.endswith('.CP'):
161 forwarder_point['type'] = 'cp'
162 forwarder_point['node_name'] = find_node_name(relation['target_node_id'], src_node_list)
163 forwarder_point['capability'] = ''
164 if forwarder_point['type'] == 'vnf':
165 for node_tpl in src_json_model["node_templates"]:
166 if fp_node['fp_id'] != node_tpl["name"]:
168 for r_tpl in safe_get(node_tpl, "requirement_templates"):
169 if safe_get(r_tpl, "target_node_template_name") != forwarder_point['node_name']:
171 forwarder_point['capability'] = safe_get(r_tpl, "target_capability_name")
174 fp_node['forwarder_list'].append(forwarder_point)
178 def convert_vnffg_group(src_group, src_group_list, src_node_list):
180 'vnffg_id': src_group['template_name'],
185 convert_props(src_group, vnffg)
186 for member_node_id in src_group['member_node_ids']:
187 vnffg['members'].append(find_node_name(member_node_id, src_node_list))
191 def convert_imagefile_node(src_node, src_node_list):
193 'image_file_id': src_node['template_name'],
197 convert_props(src_node, image_node)
201 def convert_localstorage_node(src_node, src_node_list):
202 localstorage_node = {
203 'local_storage_id': src_node['template_name'],
207 convert_props(src_node, localstorage_node)
208 return localstorage_node
211 def convert_vdu_node(src_node, src_node_list, src_json_model):
213 'vdu_id': src_node['template_name'],
217 'local_storages': [],
223 convert_props(src_node, vdu_node)
225 for relation in src_node['relationships']:
226 r_id, r_name = safe_get(relation, 'target_node_id'), safe_get(relation, 'name')
227 if r_name == 'guest_os':
228 vdu_node['image_file'] = find_node_name(r_id, src_node_list)
229 elif r_name == 'local_storage':
230 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
231 elif r_name.endswith('.AttachesTo'):
232 nt = find_node_type(r_id, src_node_list)
233 if nt.endswith('.BlockStorage.Local') or nt.endswith('.LocalStorage'):
234 vdu_node['local_storages'].append(find_node_name(r_id, src_node_list))
236 for capability in src_node['capabilities']:
237 if capability['name'] != 'nfv_compute':
239 for prop_name, prop_info in capability['properties'].items():
240 if 'value' in prop_info:
241 vdu_node['nfv_compute'][prop_name] = prop_info['value']
243 vdu_node['cps'] = find_related_node(src_node['id'], src_json_model, 'virtualbinding')
245 for cp_node in vdu_node['cps']:
246 for src_cp_node in src_node_list:
247 if src_cp_node['template_name'] != cp_node:
249 for relation in safe_get(src_cp_node, 'relationships'):
250 if relation['name'] != 'virtualLink':
252 vl_node_name = find_node_name(relation['target_node_id'], src_node_list)
253 if vl_node_name not in vdu_node['vls']:
254 vdu_node['vls'].append(vl_node_name)
256 for item in safe_get(src_node, 'artifacts'):
258 'artifact_name': item['name'],
259 'type': item['type_name'],
260 'file': item['source_path']
262 vdu_node['artifacts'].append(artifact)
267 def convert_exposed_node(src_json, src_nodes, exposed):
268 for item in safe_get(safe_get(src_json, 'substitution'), 'requirements'):
270 'key_name': item['mapped_name'],
271 "cp_id": find_node_name(item['node_id'], src_nodes)
273 exposed['external_cps'].append(external_cps)
274 for item in safe_get(safe_get(src_json, 'substitution'), 'capabilities'):
276 'key_name': item['mapped_name'],
277 "cp_id": find_node_name(item['node_id'], src_nodes)
279 exposed['forward_cps'].append(forward_cps)
282 def convert_vnffgs(src_json_inst, src_nodes):
284 src_groups = safe_get(src_json_inst, 'groups')
285 for group in src_groups:
286 type_name = group['type_name'].upper()
287 if type_name.find('.VNFFG.') >= 0 or type_name.endswith('.VNFFG'):
288 vnffgs.append(convert_vnffg_group(group, src_groups, src_nodes))
292 def convert_common(src_json, target_json):
293 if isinstance(src_json, (unicode, str)):
294 src_json_dict = json.loads(src_json)
296 src_json_dict = src_json
297 src_json_inst = src_json_dict["instance"]
298 src_json_model = src_json_dict["model"] if "model" in src_json_dict else {}
300 target_json['metadata'] = convert_metadata(src_json_inst)
301 target_json['inputs'] = convert_inputs(src_json_inst)
302 target_json['vls'] = []
303 target_json['cps'] = []
304 target_json['routers'] = []
306 return src_json_inst, src_json_model
309 def convert_policy_node(src_json):
311 'name': src_json['template_name'],
312 'file_url': src_json['properties']['drl_file_url']['value']
317 def convert_nsd_model(src_json):
324 src_json_inst, src_json_model = convert_common(src_json, target_json)
326 src_nodes = src_json_inst['nodes']
327 for node in src_nodes:
328 type_name = node['type_name']
329 if type_name.find('.VNF.') > 0 or type_name.endswith('.VNF'):
330 target_json['vnfs'].append(convert_vnf_node(node, src_json_model))
331 elif type_name.find('.PNF.') > 0 or type_name.endswith('.PNF'):
332 target_json['pnfs'].append(convert_pnf_node(node, src_json_model))
333 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
334 or node['type_name'].find('.RouteExternalVL') > 0:
335 target_json['vls'].append(convert_vl_node(node, src_nodes))
336 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
337 target_json['cps'].append(convert_cp_node(node, src_nodes))
338 elif type_name.find('.FP.') > 0 or type_name.endswith('.FP'):
339 target_json['fps'].append(convert_fp_node(node, src_nodes, src_json_model))
340 elif type_name.endswith('.Router'):
341 target_json['routers'].append(convert_router_node(node, src_nodes))
342 elif type_name.endswith('tosca.policies.Drools'):
343 target_json['policies'].append(convert_policy_node(node))
345 target_json['vnffgs'] = convert_vnffgs(src_json_inst, src_nodes)
347 target_json['ns_exposed'] = {'external_cps': [], 'forward_cps': []}
348 convert_exposed_node(src_json_inst, src_nodes, target_json['ns_exposed'])
349 return json.dumps(target_json)
352 def convert_vnfd_model(src_json):
355 'local_storages': [],
358 src_json_inst, src_json_model = convert_common(src_json, target_json)
359 if "vnfdVersion" in src_json_inst.get("metadata", {}):
360 from . import toscautil_new
361 return toscautil_new.convert_vnfd_model(src_json)
363 src_nodes = src_json_inst['nodes']
364 for node in src_nodes:
365 type_name = node['type_name']
366 if type_name.endswith('.ImageFile'):
367 target_json['image_files'].append(convert_imagefile_node(node, src_nodes))
368 elif type_name.endswith('.BlockStorage.Local') or type_name.endswith('.LocalStorage'):
369 target_json['local_storages'].append(convert_localstorage_node(node, src_nodes))
370 elif type_name.find('.VDU.') > 0 or type_name.endswith('.VDU'):
371 target_json['vdus'].append(convert_vdu_node(node, src_nodes, src_json_model))
372 elif type_name.find('.VL.') > 0 or type_name.endswith('.VL') \
373 or node['type_name'].find('.RouteExternalVL') > 0:
374 target_json['vls'].append(convert_vl_node(node, src_nodes))
375 elif type_name.find('.CP.') > 0 or type_name.endswith('.CP'):
376 target_json['cps'].append(convert_cp_node(node, src_nodes, 'VNFD'))
377 elif type_name.endswith('.Router'):
378 target_json['routers'].append(convert_router_node(node, src_nodes))
380 target_json['vnf_exposed'] = {'external_cps': [], 'forward_cps': []}
381 convert_exposed_node(src_json_inst, src_nodes, target_json['vnf_exposed'])
382 return json.dumps(target_json)
385 if __name__ == '__main__':
386 src_json = json.dumps(
392 "csarVersion": "v1.0",
394 "csarProvider": "ZTE",
396 "invariant_id": "vcpe_ns_sff_1",
398 "description": "vcpe_ns"
403 "type": "tosca.policies.Drools",
405 "drl_file_url": "policies/abc.drl"
413 "type_name": "tosca.policies.Drools",
414 "template_name": "aaa",
417 "type_name": "string",
418 "value": "policies/abc.drl"
423 "id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
424 "type_name": "tosca.nodes.nfv.ext.FP",
425 "template_name": "path2",
428 "type_name": "boolean",
432 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
436 "dest_port_range": "1-100",
437 "ip_protocol": "tcp",
439 "119.1.1.1-119.1.1.10"
442 {"get_input": "NatIpRange"}
445 "source_port_range": "1-100"
453 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
454 "type_name": "tosca.interfaces.node.lifecycle.Standard",
458 "description": "Standard lifecycle create operation."
462 "description": "Standard lifecycle stop operation."
466 "description": "Standard lifecycle start operation."
470 "description": "Standard lifecycle delete operation."
474 "description": "Standard lifecycle configure operation."
482 "type_name": "tosca.capabilities.Node"
488 "source_requirement_index": 0,
489 "target_node_id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
493 "source_requirement_index": 1,
494 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
498 "source_requirement_index": 2,
499 "target_node_id": "VNAT_cfdljtspvkp234irka59wgab0",
500 "target_capability_name": "feature"
505 "id": "path1_bv53fblv26hawr8dj4fxe2rsd",
506 "type_name": "tosca.nodes.nfv.ext.FP",
507 "template_name": "path1",
510 "type_name": "boolean",
514 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
518 "dest_port_range": "1-100",
519 "ip_protocol": "tcp",
527 "source_port_range": "1-100"
535 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
536 "type_name": "tosca.interfaces.node.lifecycle.Standard",
540 "description": "Standard lifecycle create operation."
544 "description": "Standard lifecycle stop operation."
548 "description": "Standard lifecycle start operation."
552 "description": "Standard lifecycle delete operation."
556 "description": "Standard lifecycle configure operation."
564 "type_name": "tosca.capabilities.Node"
570 "source_requirement_index": 0,
571 "target_node_id": "m6000_data_in_eldly5txw4frny3cc349uz3nc"
575 "source_requirement_index": 1,
576 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
580 "source_requirement_index": 2,
581 "target_node_id": "VFW_57z0ua89aiyl8ncvw7h7mjf34",
582 "target_capability_name": "feature"
586 "source_requirement_index": 3,
587 "target_node_id": "VNAT_cfdljtspvkp234irka59wgab0",
588 "target_capability_name": "feature"
592 "source_requirement_index": 4,
593 "target_node_id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5"
597 "source_requirement_index": 5,
598 "target_node_id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6"
603 "id": "m6000_data_out_qeukdtf6g87cnparxi51fa8s6",
604 "type_name": "tosca.nodes.nfv.ext.zte.CP",
605 "template_name": "m6000_data_out",
608 "type_name": "string",
609 "value": "bidirectional"
612 "type_name": "string",
616 "type_name": "integer",
620 "type_name": "string",
621 "value": "11-22-33-22-11-44"
624 "type_name": "string",
625 "value": "xgei-0/4/1/5"
628 "type_name": "string",
632 "type_name": "integer",
635 "sfc_encapsulation": {
636 "type_name": "string",
643 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
644 "type_name": "tosca.interfaces.node.lifecycle.Standard",
648 "description": "Standard lifecycle create operation."
652 "description": "Standard lifecycle stop operation."
656 "description": "Standard lifecycle start operation."
660 "description": "Standard lifecycle delete operation."
664 "description": "Standard lifecycle configure operation."
672 "type_name": "tosca.capabilities.Node"
676 "type_name": "tosca.capabilities.nfv.Forwarder"
681 "name": "virtualbinding",
682 "source_requirement_index": 0,
683 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
684 "target_capability_name": "feature"
687 "name": "virtualLink",
688 "source_requirement_index": 1,
689 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
690 "target_capability_name": "feature"
694 "source_requirement_index": 2,
695 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
696 "target_capability_name": "feature"
701 "id": "VFW_57z0ua89aiyl8ncvw7h7mjf34",
702 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VFW",
703 "template_name": "VFW",
706 "type_name": "boolean",
710 "type_name": "string",
711 "value": "vbrasplugin_1.0"
714 "type_name": "string",
717 "request_reclassification": {
718 "type_name": "boolean",
722 "type_name": "string",
726 "type_name": "string",
730 "type_name": "string",
734 "type_name": "boolean",
738 "type_name": "string",
742 "type_name": "string",
746 "type_name": "string",
747 "value": "vcpe_vfw_zte_1_0"
750 "type_name": "boolean",
753 "adjust_vnf_capacity": {
754 "type_name": "boolean",
757 "vmnumber_overquota_alarm": {
758 "type_name": "boolean",
762 "type_name": "string",
766 "type_name": "string",
769 "externalPluginManageNetworkName": {
770 "type_name": "string",
771 "value": "vlan_4007_plugin_net"
774 "type_name": "string",
781 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
782 "type_name": "tosca.interfaces.node.lifecycle.Standard",
786 "description": "Standard lifecycle create operation."
790 "description": "Standard lifecycle stop operation."
794 "description": "Standard lifecycle start operation."
798 "description": "Standard lifecycle delete operation."
802 "description": "Standard lifecycle configure operation."
810 "type_name": "tosca.capabilities.Node"
814 "type_name": "tosca.capabilities.nfv.Forwarder"
817 "name": "vfw_fw_inout",
818 "type_name": "tosca.capabilities.nfv.Forwarder"
823 "name": "vfw_ctrl_by_manager_cp",
824 "source_requirement_index": 0,
825 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
826 "target_capability_name": "feature"
829 "name": "vfw_data_cp",
830 "source_requirement_index": 1,
831 "target_node_id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
832 "target_capability_name": "feature"
835 "name": "virtualLink",
836 "source_requirement_index": 2,
837 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
838 "target_capability_name": "feature"
842 "source_requirement_index": 3,
843 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
844 "target_capability_name": "feature"
849 "id": "m600_tunnel_cp_imwfk5l48ljz0g9knc6d68hv5",
850 "type_name": "tosca.nodes.nfv.ext.zte.CP",
851 "template_name": "m600_tunnel_cp",
854 "type_name": "string",
855 "value": "bidirectional"
858 "type_name": "string",
862 "type_name": "integer",
866 "type_name": "string",
867 "value": "00-11-00-22-33-00"
870 "type_name": "string",
871 "value": "gei-0/4/0/13"
874 "type_name": "string",
875 "value": "191.167.100.5"
878 "type_name": "integer",
881 "sfc_encapsulation": {
882 "type_name": "string",
889 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
890 "type_name": "tosca.interfaces.node.lifecycle.Standard",
894 "description": "Standard lifecycle create operation."
898 "description": "Standard lifecycle stop operation."
902 "description": "Standard lifecycle start operation."
906 "description": "Standard lifecycle delete operation."
910 "description": "Standard lifecycle configure operation."
918 "type_name": "tosca.capabilities.Node"
922 "type_name": "tosca.capabilities.nfv.Forwarder"
927 "name": "virtualLink",
928 "source_requirement_index": 0,
929 "target_node_id": "ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
930 "target_capability_name": "feature"
933 "name": "virtualbinding",
934 "source_requirement_index": 1,
935 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
936 "target_capability_name": "feature"
940 "source_requirement_index": 2,
941 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
942 "target_capability_name": "feature"
947 "id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
948 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
949 "template_name": "ext_mnet_net",
952 "type_name": "string",
953 "value": "vlan_4008_mng_net"
956 "type_name": "boolean",
960 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
964 "availability_zone": "nova"
968 "type_name": "integer",
972 "type_name": "integer",
976 "type_name": "string",
977 "value": "vlan_4008_mng_net"
980 "type_name": "string",
987 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
988 "type_name": "tosca.interfaces.node.lifecycle.Standard",
992 "description": "Standard lifecycle create operation."
996 "description": "Standard lifecycle stop operation."
1000 "description": "Standard lifecycle start operation."
1004 "description": "Standard lifecycle delete operation."
1007 "name": "configure",
1008 "description": "Standard lifecycle configure operation."
1016 "type_name": "tosca.capabilities.Node"
1019 "name": "virtual_linkable",
1020 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1025 "id": "m6000_data_in_eldly5txw4frny3cc349uz3nc",
1026 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1027 "template_name": "m6000_data_in",
1030 "type_name": "string",
1031 "value": "bidirectional"
1034 "type_name": "string",
1038 "type_name": "integer",
1042 "type_name": "string",
1043 "value": "11-22-33-22-11-41"
1046 "type_name": "string",
1047 "value": "gei-0/4/0/7"
1050 "type_name": "string",
1054 "type_name": "integer",
1057 "sfc_encapsulation": {
1058 "type_name": "string",
1062 "type_name": "string",
1069 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1070 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1074 "description": "Standard lifecycle create operation."
1078 "description": "Standard lifecycle stop operation."
1082 "description": "Standard lifecycle start operation."
1086 "description": "Standard lifecycle delete operation."
1089 "name": "configure",
1090 "description": "Standard lifecycle configure operation."
1098 "type_name": "tosca.capabilities.Node"
1101 "name": "forwarder",
1102 "type_name": "tosca.capabilities.nfv.Forwarder"
1107 "name": "virtualbinding",
1108 "source_requirement_index": 0,
1109 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1110 "target_capability_name": "feature"
1113 "name": "virtualLink",
1114 "source_requirement_index": 1,
1115 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1116 "target_capability_name": "feature"
1119 "name": "forwarder",
1120 "source_requirement_index": 2,
1121 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1122 "target_capability_name": "feature"
1127 "id": "ext_datanet_net_qtqzlx5dsthzs883hxjn6hyhd",
1128 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
1129 "template_name": "ext_datanet_net",
1132 "type_name": "string",
1133 "value": "vlan_4004_tunnel_net"
1136 "type_name": "boolean",
1140 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
1144 "availability_zone": "nova"
1148 "type_name": "integer",
1152 "type_name": "integer",
1156 "type_name": "string",
1157 "value": "vlan_4004_tunnel_net"
1160 "type_name": "string",
1167 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1168 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1172 "description": "Standard lifecycle create operation."
1176 "description": "Standard lifecycle stop operation."
1180 "description": "Standard lifecycle start operation."
1184 "description": "Standard lifecycle delete operation."
1187 "name": "configure",
1188 "description": "Standard lifecycle configure operation."
1196 "type_name": "tosca.capabilities.Node"
1199 "name": "virtual_linkable",
1200 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1205 "id": "m600_mnt_cp_l3488y2a8ilyfdn0l89ni4os7",
1206 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1207 "template_name": "m600_mnt_cp",
1210 "type_name": "string",
1211 "value": "bidirectional"
1214 "type_name": "string",
1218 "type_name": "integer",
1222 "type_name": "string",
1223 "value": "00-11-00-22-33-11"
1226 "type_name": "string",
1227 "value": "gei-0/4/0/1"
1230 "type_name": "string",
1231 "value": "10.46.244.51"
1234 "type_name": "integer",
1237 "sfc_encapsulation": {
1238 "type_name": "string",
1242 "type_name": "string",
1249 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1250 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1254 "description": "Standard lifecycle create operation."
1258 "description": "Standard lifecycle stop operation."
1262 "description": "Standard lifecycle start operation."
1266 "description": "Standard lifecycle delete operation."
1269 "name": "configure",
1270 "description": "Standard lifecycle configure operation."
1278 "type_name": "tosca.capabilities.Node"
1281 "name": "forwarder",
1282 "type_name": "tosca.capabilities.nfv.Forwarder"
1287 "name": "virtualLink",
1288 "source_requirement_index": 0,
1289 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1290 "target_capability_name": "feature"
1293 "name": "virtualbinding",
1294 "source_requirement_index": 1,
1295 "target_node_id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1296 "target_capability_name": "feature"
1299 "name": "forwarder",
1300 "source_requirement_index": 2,
1301 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1302 "target_capability_name": "feature"
1307 "id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1308 "type_name": "tosca.nodes.nfv.ext.zte.VL",
1309 "template_name": "sfc_data_network",
1312 "type_name": "string",
1313 "value": "sfc_data_network"
1316 "type_name": "boolean",
1320 "type_name": "boolean",
1324 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
1328 "availability_zone": "nova"
1332 "type_name": "integer",
1336 "type_name": "integer",
1340 "type_name": "string",
1341 "value": "sfc_data_network"
1344 "type_name": "string",
1351 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1352 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1356 "description": "Standard lifecycle create operation."
1360 "description": "Standard lifecycle stop operation."
1364 "description": "Standard lifecycle start operation."
1368 "description": "Standard lifecycle delete operation."
1371 "name": "configure",
1372 "description": "Standard lifecycle configure operation."
1380 "type_name": "tosca.capabilities.Node"
1383 "name": "virtual_linkable",
1384 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
1389 "id": "m6000_s_7qtzo5nuocyfmebc6kp9raq18",
1390 "type_name": "tosca.nodes.nfv.ext.PNF",
1391 "template_name": "m6000_s",
1394 "type_name": "string",
1397 "request_reclassification": {
1398 "type_name": "boolean",
1402 "type_name": "string",
1406 "type_name": "string",
1409 "management_address": {
1410 "type_name": "string",
1414 "type_name": "string",
1418 "type_name": "boolean",
1425 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1426 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1430 "description": "Standard lifecycle create operation."
1434 "description": "Standard lifecycle stop operation."
1438 "description": "Standard lifecycle start operation."
1442 "description": "Standard lifecycle delete operation."
1445 "name": "configure",
1446 "description": "Standard lifecycle configure operation."
1454 "type_name": "tosca.capabilities.Node"
1457 "name": "virtualBinding",
1458 "type_name": "tosca.capabilities.nfv.VirtualBindable"
1461 "name": "forwarder",
1462 "type_name": "tosca.capabilities.nfv.Forwarder"
1467 "name": "forwarder",
1468 "source_requirement_index": 0,
1469 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1470 "target_capability_name": "feature"
1475 "id": "VNAT_cfdljtspvkp234irka59wgab0",
1476 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VNAT",
1477 "template_name": "VNAT",
1480 "type_name": "boolean",
1484 "type_name": "string",
1485 "value": "vbrasplugin_1.0"
1488 "type_name": "string",
1491 "request_reclassification": {
1492 "type_name": "boolean",
1496 "type_name": "string",
1499 "vnf_extend_type": {
1500 "type_name": "string",
1503 "externalPluginManageNetworkName": {
1504 "type_name": "string",
1505 "value": "vlan_4007_plugin_net"
1508 "type_name": "string",
1512 "type_name": "boolean",
1516 "type_name": "string",
1520 "type_name": "string",
1524 "type_name": "string",
1525 "value": "vcpe_vnat_zte_1"
1528 "type_name": "boolean",
1531 "adjust_vnf_capacity": {
1532 "type_name": "boolean",
1535 "vmnumber_overquota_alarm": {
1536 "type_name": "boolean",
1540 "type_name": "string",
1544 "type_name": "string",
1545 "value": "192.167.0.10-192.168.0.20"
1548 "type_name": "string",
1552 "type_name": "string",
1559 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1560 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1564 "description": "Standard lifecycle create operation."
1568 "description": "Standard lifecycle stop operation."
1572 "description": "Standard lifecycle start operation."
1576 "description": "Standard lifecycle delete operation."
1579 "name": "configure",
1580 "description": "Standard lifecycle configure operation."
1588 "type_name": "tosca.capabilities.Node"
1591 "name": "forwarder",
1592 "type_name": "tosca.capabilities.nfv.Forwarder"
1595 "name": "vnat_fw_inout",
1596 "type_name": "tosca.capabilities.nfv.Forwarder"
1601 "name": "vnat_ctrl_by_manager_cp",
1602 "source_requirement_index": 0,
1603 "target_node_id": "ext_mnet_net_au2otee5mcy0dnpqykj487zr3",
1604 "target_capability_name": "feature"
1607 "name": "vnat_data_cp",
1608 "source_requirement_index": 1,
1609 "target_node_id": "sfc_data_network_vx3pc1oahn0k0pa5q722yafee",
1610 "target_capability_name": "feature"
1613 "name": "virtualLink",
1614 "source_requirement_index": 2,
1615 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1616 "target_capability_name": "feature"
1619 "name": "forwarder",
1620 "source_requirement_index": 3,
1621 "target_node_id": "path2_kgmfqr5ldqs9lj3oscrgxqefc",
1622 "target_capability_name": "feature"
1629 "id": "vnffg1_wk1aqhk6exoh5fmds2unu0uyc",
1630 "type_name": "tosca.groups.nfv.VNFFG",
1631 "template_name": "vnffg1",
1634 "type_name": "string",
1637 "connection_point": {
1638 "type_name": "list",
1646 "type_name": "string",
1649 "constituent_vnfs": {
1650 "type_name": "list",
1656 "number_of_endpoints": {
1657 "type_name": "integer",
1660 "dependent_virtual_link": {
1661 "type_name": "list",
1672 "description": "This lifecycle interface defines the essential, normative operations that TOSCA nodes may support.",
1673 "type_name": "tosca.interfaces.node.lifecycle.Standard",
1677 "description": "Standard lifecycle create operation."
1681 "description": "Standard lifecycle stop operation."
1685 "description": "Standard lifecycle start operation."
1689 "description": "Standard lifecycle delete operation."
1692 "name": "configure",
1693 "description": "Standard lifecycle configure operation."
1698 "member_node_ids": [
1699 "path1_bv53fblv26hawr8dj4fxe2rsd",
1700 "path2_kgmfqr5ldqs9lj3oscrgxqefc"
1705 "node_type_name": "tosca.nodes.nfv.NS.VCPE_NS"
1708 "externalDataNetworkName": {
1709 "type_name": "string",
1710 "value": "vlan_4004_tunnel_net"
1712 "sfc_data_network": {
1713 "type_name": "string",
1714 "value": "sfc_data_network"
1717 "type_name": "string",
1718 "value": "192.167.0.10-192.168.0.20"
1720 "externalManageNetworkName": {
1721 "type_name": "string",
1722 "value": "vlan_4008_mng_net"
1724 "externalPluginManageNetworkName": {
1725 "type_name": "string",
1726 "value": "vlan_4007_plugin_net"
1734 "csarVersion": "v1.0",
1736 "csarProvider": "ZTE",
1738 "invariant_id": "vcpe_ns_sff_1",
1740 "description": "vcpe_ns"
1745 "type_name": "tosca.nodes.nfv.ext.FP",
1746 "default_instances": 1,
1750 "type_name": "boolean",
1754 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
1758 "dest_port_range": "1-100",
1759 "ip_protocol": "tcp",
1760 "source_ip_range": [
1761 "119.1.1.1-119.1.1.10"
1764 {"get_input": "NatIpRange"}
1767 "source_port_range": "1-100"
1772 "interface_templates": [
1773 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed0288a10>"
1775 "capability_templates": [
1778 "type_name": "tosca.capabilities.Node"
1781 "requirement_templates": [
1783 "name": "forwarder",
1784 "target_node_template_name": "m6000_data_out"
1787 "name": "forwarder",
1788 "target_node_template_name": "m600_tunnel_cp"
1791 "name": "forwarder",
1792 "target_node_template_name": "VNAT",
1793 "target_capability_name": "vnat_fw_inout"
1799 "type_name": "tosca.nodes.nfv.ext.FP",
1800 "default_instances": 1,
1804 "type_name": "boolean",
1808 "type_name": "tosca.datatypes.nfv.ext.FPPolicy",
1812 "dest_port_range": "1-100",
1813 "ip_protocol": "tcp",
1814 "source_ip_range": [
1821 "source_port_range": "1-100"
1826 "interface_templates": [
1827 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81df090>"
1829 "capability_templates": [
1832 "type_name": "tosca.capabilities.Node"
1835 "requirement_templates": [
1837 "name": "forwarder",
1838 "target_node_template_name": "m6000_data_in"
1841 "name": "forwarder",
1842 "target_node_template_name": "m600_tunnel_cp"
1845 "name": "forwarder",
1846 "target_node_template_name": "VFW",
1847 "target_capability_name": "vfw_fw_inout"
1850 "name": "forwarder",
1851 "target_node_template_name": "VNAT",
1852 "target_capability_name": "vnat_fw_inout"
1855 "name": "forwarder",
1856 "target_node_template_name": "m600_tunnel_cp"
1859 "name": "forwarder",
1860 "target_node_template_name": "m6000_data_out"
1865 "name": "m6000_data_out",
1866 "type_name": "tosca.nodes.nfv.ext.zte.CP",
1867 "default_instances": 1,
1871 "type_name": "string",
1872 "value": "bidirectional"
1875 "type_name": "string",
1879 "type_name": "integer",
1883 "type_name": "string",
1884 "value": "11-22-33-22-11-44"
1887 "type_name": "string",
1888 "value": "xgei-0/4/1/5"
1891 "type_name": "string",
1892 "value": "176.1.1.2"
1895 "type_name": "integer",
1898 "sfc_encapsulation": {
1899 "type_name": "string",
1903 "interface_templates": [
1904 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec82c6610>"
1906 "capability_templates": [
1909 "type_name": "tosca.capabilities.Node"
1912 "name": "forwarder",
1913 "type_name": "tosca.capabilities.nfv.Forwarder"
1916 "requirement_templates": [
1918 "name": "virtualbinding",
1919 "target_node_template_name": "m6000_s",
1920 "target_capability_name": "virtualBinding"
1923 "name": "virtualLink",
1924 "target_node_type_name": "tosca.nodes.Root"
1927 "name": "forwarder",
1928 "target_node_type_name": "tosca.nodes.Root"
1934 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VFW",
1935 "default_instances": 1,
1939 "type_name": "boolean",
1943 "type_name": "string",
1944 "value": "vbrasplugin_1.0"
1947 "type_name": "string",
1950 "request_reclassification": {
1951 "type_name": "boolean",
1954 "vnf_extend_type": {
1955 "type_name": "string",
1959 "type_name": "string",
1963 "type_name": "string",
1967 "type_name": "boolean",
1971 "type_name": "string",
1975 "type_name": "string",
1979 "type_name": "string",
1980 "value": "vcpe_vfw_zte_1_0"
1983 "type_name": "boolean",
1986 "adjust_vnf_capacity": {
1987 "type_name": "boolean",
1990 "vmnumber_overquota_alarm": {
1991 "type_name": "boolean",
1995 "type_name": "string",
1999 "type_name": "string",
2002 "externalPluginManageNetworkName": {
2003 "type_name": "string",
2004 "value": "vlan_4007_plugin_net"
2007 "type_name": "string",
2011 "interface_templates": [
2012 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8281950>"
2014 "capability_templates": [
2017 "type_name": "tosca.capabilities.Node"
2020 "name": "forwarder",
2021 "type_name": "tosca.capabilities.nfv.Forwarder"
2024 "name": "vfw_fw_inout",
2025 "type_name": "tosca.capabilities.nfv.Forwarder"
2028 "requirement_templates": [
2030 "name": "vfw_ctrl_by_manager_cp",
2031 "target_node_template_name": "ext_mnet_net",
2032 "target_capability_name": "virtual_linkable"
2035 "name": "vfw_data_cp",
2036 "target_node_template_name": "sfc_data_network",
2037 "target_capability_name": "virtual_linkable"
2040 "name": "virtualLink",
2041 "target_node_type_name": "tosca.nodes.Root"
2044 "name": "forwarder",
2045 "target_node_type_name": "tosca.nodes.Root"
2050 "name": "m600_tunnel_cp",
2051 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2052 "default_instances": 1,
2056 "type_name": "string",
2057 "value": "bidirectional"
2060 "type_name": "string",
2064 "type_name": "integer",
2068 "type_name": "string",
2069 "value": "00-11-00-22-33-00"
2072 "type_name": "string",
2073 "value": "gei-0/4/0/13"
2076 "type_name": "string",
2077 "value": "191.167.100.5"
2080 "type_name": "integer",
2083 "sfc_encapsulation": {
2084 "type_name": "string",
2088 "interface_templates": [
2089 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1ae39d0>"
2091 "capability_templates": [
2094 "type_name": "tosca.capabilities.Node"
2097 "name": "forwarder",
2098 "type_name": "tosca.capabilities.nfv.Forwarder"
2101 "requirement_templates": [
2103 "name": "virtualLink",
2104 "target_node_template_name": "ext_datanet_net",
2105 "target_capability_name": "virtual_linkable"
2108 "name": "virtualbinding",
2109 "target_node_template_name": "m6000_s",
2110 "target_capability_name": "virtualBinding"
2113 "name": "forwarder",
2114 "target_node_type_name": "tosca.nodes.Root"
2119 "name": "ext_mnet_net",
2120 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
2121 "default_instances": 1,
2125 "type_name": "string",
2126 "value": "vlan_4008_mng_net"
2129 "type_name": "boolean",
2133 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2137 "availability_zone": "nova"
2141 "type_name": "integer",
2145 "type_name": "integer",
2149 "type_name": "string",
2150 "value": "vlan_4008_mng_net"
2153 "type_name": "string",
2157 "interface_templates": [
2158 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ed00f89d0>"
2160 "capability_templates": [
2163 "type_name": "tosca.capabilities.Node"
2166 "name": "virtual_linkable",
2167 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2172 "name": "m6000_data_in",
2173 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2174 "default_instances": 1,
2178 "type_name": "string",
2179 "value": "bidirectional"
2182 "type_name": "string",
2186 "type_name": "integer",
2190 "type_name": "string",
2191 "value": "11-22-33-22-11-41"
2194 "type_name": "string",
2195 "value": "gei-0/4/0/7"
2198 "type_name": "string",
2202 "type_name": "integer",
2205 "sfc_encapsulation": {
2206 "type_name": "string",
2210 "type_name": "string",
2214 "interface_templates": [
2215 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1745710>"
2217 "capability_templates": [
2220 "type_name": "tosca.capabilities.Node"
2223 "name": "forwarder",
2224 "type_name": "tosca.capabilities.nfv.Forwarder"
2227 "requirement_templates": [
2229 "name": "virtualbinding",
2230 "target_node_template_name": "m6000_s",
2231 "target_capability_name": "virtualBinding"
2234 "name": "virtualLink",
2235 "target_node_type_name": "tosca.nodes.Root"
2238 "name": "forwarder",
2239 "target_node_type_name": "tosca.nodes.Root"
2244 "name": "ext_datanet_net",
2245 "type_name": "tosca.nodes.nfv.ext.VL.Vmware",
2246 "default_instances": 1,
2250 "type_name": "string",
2251 "value": "vlan_4004_tunnel_net"
2254 "type_name": "boolean",
2258 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2262 "availability_zone": "nova"
2266 "type_name": "integer",
2270 "type_name": "integer",
2274 "type_name": "string",
2275 "value": "vlan_4004_tunnel_net"
2278 "type_name": "string",
2282 "interface_templates": [
2283 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8eac063990>"
2285 "capability_templates": [
2288 "type_name": "tosca.capabilities.Node"
2291 "name": "virtual_linkable",
2292 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2297 "name": "m600_mnt_cp",
2298 "type_name": "tosca.nodes.nfv.ext.zte.CP",
2299 "default_instances": 1,
2303 "type_name": "string",
2304 "value": "bidirectional"
2307 "type_name": "string",
2311 "type_name": "integer",
2315 "type_name": "string",
2316 "value": "00-11-00-22-33-11"
2319 "type_name": "string",
2320 "value": "gei-0/4/0/1"
2323 "type_name": "string",
2324 "value": "10.46.244.51"
2327 "type_name": "integer",
2330 "sfc_encapsulation": {
2331 "type_name": "string",
2335 "type_name": "string",
2339 "interface_templates": [
2340 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec81264d0>"
2342 "capability_templates": [
2345 "type_name": "tosca.capabilities.Node"
2348 "name": "forwarder",
2349 "type_name": "tosca.capabilities.nfv.Forwarder"
2352 "requirement_templates": [
2354 "name": "virtualLink",
2355 "target_node_template_name": "ext_mnet_net",
2356 "target_capability_name": "virtual_linkable"
2359 "name": "virtualbinding",
2360 "target_node_template_name": "m6000_s",
2361 "target_capability_name": "virtualBinding"
2364 "name": "forwarder",
2365 "target_node_type_name": "tosca.nodes.Root"
2370 "name": "sfc_data_network",
2371 "type_name": "tosca.nodes.nfv.ext.zte.VL",
2372 "default_instances": 1,
2376 "type_name": "string",
2377 "value": "sfc_data_network"
2380 "type_name": "boolean",
2384 "type_name": "boolean",
2388 "type_name": "tosca.datatypes.nfv.ext.LocationInfo",
2392 "availability_zone": "nova"
2396 "type_name": "integer",
2400 "type_name": "integer",
2404 "type_name": "string",
2405 "value": "sfc_data_network"
2408 "type_name": "string",
2412 "interface_templates": [
2413 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec813c6d0>"
2415 "capability_templates": [
2418 "type_name": "tosca.capabilities.Node"
2421 "name": "virtual_linkable",
2422 "type_name": "tosca.capabilities.nfv.VirtualLinkable"
2428 "type_name": "tosca.nodes.nfv.ext.PNF",
2429 "default_instances": 1,
2433 "type_name": "string",
2436 "request_reclassification": {
2437 "type_name": "boolean",
2441 "type_name": "string",
2445 "type_name": "string",
2448 "management_address": {
2449 "type_name": "string",
2453 "type_name": "string",
2457 "type_name": "boolean",
2461 "interface_templates": [
2462 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec8132490>"
2464 "capability_templates": [
2467 "type_name": "tosca.capabilities.Node"
2470 "name": "virtualBinding",
2471 "type_name": "tosca.capabilities.nfv.VirtualBindable"
2474 "name": "forwarder",
2475 "type_name": "tosca.capabilities.nfv.Forwarder"
2478 "requirement_templates": [
2480 "name": "forwarder",
2481 "target_node_type_name": "tosca.nodes.Root"
2487 "type_name": "tosca.nodes.nfv.ext.zte.VNF.VNAT",
2488 "default_instances": 1,
2492 "type_name": "boolean",
2496 "type_name": "string",
2497 "value": "vbrasplugin_1.0"
2500 "type_name": "string",
2503 "request_reclassification": {
2504 "type_name": "boolean",
2508 "type_name": "string",
2511 "vnf_extend_type": {
2512 "type_name": "string",
2515 "externalPluginManageNetworkName": {
2516 "type_name": "string",
2517 "value": "vlan_4007_plugin_net"
2520 "type_name": "string",
2524 "type_name": "boolean",
2528 "type_name": "string",
2532 "type_name": "string",
2536 "type_name": "string",
2537 "value": "vcpe_vnat_zte_1"
2540 "type_name": "boolean",
2543 "adjust_vnf_capacity": {
2544 "type_name": "boolean",
2547 "vmnumber_overquota_alarm": {
2548 "type_name": "boolean",
2552 "type_name": "string",
2556 "type_name": "string",
2557 "value": "192.167.0.10-192.168.0.20"
2560 "type_name": "string",
2564 "type_name": "string",
2568 "interface_templates": [
2569 "<aria.modeling.model_elements.InterfaceTemplate object at 0x1bba810>"
2571 "capability_templates": [
2574 "type_name": "tosca.capabilities.Node"
2577 "name": "forwarder",
2578 "type_name": "tosca.capabilities.nfv.Forwarder"
2581 "name": "vnat_fw_inout",
2582 "type_name": "tosca.capabilities.nfv.Forwarder"
2585 "requirement_templates": [
2587 "name": "vnat_ctrl_by_manager_cp",
2588 "target_node_template_name": "ext_mnet_net",
2589 "target_capability_name": "virtual_linkable"
2592 "name": "vnat_data_cp",
2593 "target_node_template_name": "sfc_data_network",
2594 "target_capability_name": "virtual_linkable"
2597 "name": "virtualLink",
2598 "target_node_type_name": "tosca.nodes.Root"
2601 "name": "forwarder",
2602 "target_node_type_name": "tosca.nodes.Root"
2607 "group_templates": [
2610 "type_name": "tosca.groups.nfv.VNFFG",
2613 "type_name": "string",
2616 "connection_point": {
2617 "type_name": "list",
2625 "type_name": "string",
2628 "constituent_vnfs": {
2629 "type_name": "list",
2635 "number_of_endpoints": {
2636 "type_name": "integer",
2639 "dependent_virtual_link": {
2640 "type_name": "list",
2648 "interface_templates": [
2649 "<aria.modeling.model_elements.InterfaceTemplate object at 0x7f8ec811cd10>"
2651 "member_node_template_names": [
2657 "substitution_template": {
2658 "node_type_name": "tosca.nodes.nfv.NS.VCPE_NS"
2661 "externalDataNetworkName": {
2662 "type_name": "string",
2663 "value": "vlan_4004_tunnel_net"
2665 "sfc_data_network": {
2666 "type_name": "string",
2667 "value": "sfc_data_network"
2670 "type_name": "string",
2671 "value": "192.167.0.10-192.168.0.20"
2673 "externalManageNetworkName": {
2674 "type_name": "string",
2675 "value": "vlan_4008_mng_net"
2677 "externalPluginManageNetworkName": {
2678 "type_name": "string",
2679 "value": "vlan_4007_plugin_net"
2685 print convert_nsd_model(src_json)