X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fbase_topic.py;h=130d4fca8d0ba66baba8c5bd7b20288ddce2810f;hp=2986b8180eb035587fbf386e4466b203d7d4569e;hb=ac55f06ddd44914cd40ee757cc6f2ac9186a1c46;hpb=bb70c819066b7f558babf86dbd08fa2f57c52ae5 diff --git a/osm_nbi/base_topic.py b/osm_nbi/base_topic.py index 2986b81..130d4fc 100644 --- a/osm_nbi/base_topic.py +++ b/osm_nbi/base_topic.py @@ -325,12 +325,23 @@ class BaseTopic: update_content = update_content[kitem_old] if isinstance(update_content, dict): kitem_old = kitem + if not isinstance(update_content.get(kitem_old), (dict, list)): + update_content[kitem_old] = {} elif isinstance(update_content, list): + # key must be an index of the list, must be integer kitem_old = int(kitem) + # if index greater than list, extend the list + if kitem_old >= len(update_content): + update_content += [None] * (kitem_old - len(update_content) + 1) + if not isinstance(update_content[kitem_old], (dict, list)): + update_content[kitem_old] = {} else: raise EngineException( "Invalid query string '{}'. Descriptor is not a list nor dict at '{}'".format(k, kitem)) - update_content[kitem_old] = v if not yaml_format else safe_load(v) + if v is None: + del update_content[kitem_old] + else: + update_content[kitem_old] = v if not yaml_format else safe_load(v) except KeyError: raise EngineException( "Invalid query string '{}'. Descriptor does not contain '{}'".format(k, kitem_old))