X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fbase_topic.py;h=1bc906c2b4d63594f84a2a129dac715125e35e7e;hp=70c8dff5eac55ce0bed458a6d11276d32cfbde46;hb=45bd94c2a096f53a5692f438aa5148c3d42631fa;hpb=15a1f68badbe4865b7abb3cb9ac816ed963d4b63 diff --git a/osm_nbi/base_topic.py b/osm_nbi/base_topic.py index 70c8dff..1bc906c 100644 --- a/osm_nbi/base_topic.py +++ b/osm_nbi/base_topic.py @@ -30,6 +30,21 @@ class EngineException(Exception): super(Exception, self).__init__(message) +def deep_get(target_dict, key_list): + """ + Get a value from target_dict entering in the nested keys. If keys does not exist, it returns None + Example target_dict={a: {b: 5}}; key_list=[a,b] returns 5; both key_list=[a,b,c] and key_list=[f,h] return None + :param target_dict: dictionary to be read + :param key_list: list of keys to read from target_dict + :return: The wanted value if exist, None otherwise + """ + for key in key_list: + if not isinstance(target_dict, dict) or key not in target_dict: + return None + target_dict = target_dict[key] + return target_dict + + def get_iterable(input_var): """ Returns an iterable, in case input_var is None it just returns an empty tuple