X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=inline;f=descriptor-packages%2Ftools%2Fvalidate_descriptor.py;h=d2888c3076e76bc0ac76d95aafc60ef32ddb103a;hb=eb0de08b5ed14d15755ab3af7061cb4993a914e8;hp=36e7c8d43bf99bd91d2123426ac937afbf77e449;hpb=dbada22a91407ded3f66e93a7f4b165147ec7db1;p=osm%2Fdevops.git diff --git a/descriptor-packages/tools/validate_descriptor.py b/descriptor-packages/tools/validate_descriptor.py index 36e7c8d4..d2888c30 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,16 @@ 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: + if vnfd.get("mgmt-interface"): + mgmt_iface = True + 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: