X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=descriptor-packages%2Ftools%2Fvalidate_descriptor.py;h=010ba16ff00febd5b206ada7a9c741b9087bcd43;hb=aa24514a2010f3e14eb9f02ced504a64004da710;hp=36e7c8d43bf99bd91d2123426ac937afbf77e449;hpb=56225118e3dda28bc50977fcb931249b2fa34444;p=osm%2Fdevops.git diff --git a/descriptor-packages/tools/validate_descriptor.py b/descriptor-packages/tools/validate_descriptor.py index 36e7c8d4..010ba16f 100755 --- a/descriptor-packages/tools/validate_descriptor.py +++ b/descriptor-packages/tools/validate_descriptor.py @@ -46,6 +46,28 @@ def usage(): print(" -i|--input FILE: (same as param FILE) descriptor file to be upgraded") return +def remove_prefix(desc, prefix): + """ + Recursively removes prefix from keys + :param desc: dictionary or list to change + :param prefix: prefix to remove. Must + :return: None, param desc is changed + """ + prefix_len = len(prefix) + if isinstance(desc, dict): + prefixed_list=[] + for k,v in desc.items(): + if isinstance(v, (list, tuple, dict)): + remove_prefix(v, prefix) + if isinstance(k, str) and k.startswith(prefix) and k != prefix: + prefixed_list.append(k) + for k in prefixed_list: + desc[k[prefix_len:]] = desc.pop(k) + elif isinstance(desc, (list, tuple)): + for i in desc: + if isinstance(desc, (list, tuple, dict)): + remove_prefix(i, prefix) + if __name__=="__main__": error_position = [] format_output_yaml = True @@ -91,6 +113,31 @@ if __name__=="__main__": if "vnfd:vnfd-catalog" in data or "vnfd-catalog" in data: descriptor = "VNF" + # Check if mgmt-interface is defined: + remove_prefix(data, "vnfd:") + vnfd_descriptor = data["vnfd-catalog"] + vnfd_list = vnfd_descriptor["vnfd"] + mgmt_iface = False + for vnfd in vnfd_list: + vdu_list = vnfd["vdu"] + for vdu in vdu_list: + interface_list = [] + external_interface_list = vdu.pop("external-interface", ()) + for external_interface in external_interface_list: + if external_interface.get("virtual-interface", {}).get("type") == "OM-MGMT": + raise KeyError( + "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead") + interface_list = vdu.pop("interface", ()) + for interface in interface_list: + if interface.get("virtual-interface", {}).get("type") == "OM-MGMT": + raise KeyError( + "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead") + if vnfd.get("mgmt-interface"): + mgmt_iface = True + if vnfd["mgmt-interface"].get("vdu-id"): + raise KeyError("'mgmt-iface': Deprecated 'vdu-id' field. Please, use 'cp' field instead") + if not mgmt_iface: + raise KeyError("'mgmt-iface' is a mandatory field and it is not defined") myvnfd = vnfd_catalog.vnfd() pybindJSONDecoder.load_ietf_json(data, None, None, obj=myvnfd) elif "nsd:nsd-catalog" in data or "nsd-catalog" in data: