def _resolve_names_in_meta()

in syndicate/core/build/meta_processor.py [0:0]


def _resolve_names_in_meta(resources_dict, old_value, new_value):
    if isinstance(resources_dict, dict):
        for k, v in resources_dict.items():
            if k in NAME_RESOLVING_BLACKLISTED_KEYS:
                continue
            if isinstance(v, str) and old_value == v:
                resources_dict[k] = v.replace(old_value, new_value)
            elif isinstance(v, str) and old_value in v and v.startswith('arn'):
                resources_dict[k] = _resolve_name_in_arn(v, old_value, new_value)
            else:
                _resolve_names_in_meta(v, old_value, new_value)
    elif isinstance(resources_dict, list):
        for item in resources_dict:
            if isinstance(item, dict):
                _resolve_names_in_meta(item, old_value, new_value)
            elif (isinstance(item, str) and old_value in item and
                  item.startswith('arn')):
                index = resources_dict.index(item)
                resources_dict[index] = _resolve_name_in_arn(item, old_value, new_value)
            elif isinstance(item, str):
                if item == old_value:
                    index = resources_dict.index(old_value)
                    del resources_dict[index]
                    resources_dict.append(new_value)