diff options
Diffstat (limited to 'ice_validator/tests/helpers.py')
-rw-r--r-- | ice_validator/tests/helpers.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ice_validator/tests/helpers.py b/ice_validator/tests/helpers.py index 5744945..afa8672 100644 --- a/ice_validator/tests/helpers.py +++ b/ice_validator/tests/helpers.py @@ -307,3 +307,20 @@ def parameter_type_to_heat_type(parameter): parameter_type = None return parameter_type + + +def prop_iterator(resource, *props): + terminators = ["get_resource", "get_attr", "str_replace"] + if "properties" in resource: + resource = resource.get("properties") + props = list(props) + + if isinstance(resource, dict) and "get_param" in resource: + yield resource.get("get_param") + else: + prop = resource.get(props.pop(0)) + if isinstance(prop, list): + for x in prop: + yield from prop_iterator(x, *props) + elif isinstance(prop, dict) and not any(x for x in terminators if x in prop): + yield from prop_iterator(prop, *props) |