- If more than one vm_type is detected all vm_types will
be returned
"""
- if not isinstance(resource, dict):
- return set()
if not is_nova_server(resource):
return set()
vm_types = []
for k2, v2 in resource["properties"].items():
- if k2 not in key_values:
- continue
- if "get_param" not in v2:
+ if not isinstance(v2, dict) or any(
+ [k2 not in key_values, "get_param" not in v2]
+ ):
continue
formats = [v for v in key_value_formats if v[0] == k2]
for v3 in formats:
def is_nova_server(resource):
return (
- "type" in resource
+ isinstance(resource, dict)
+ and "type" in resource
and "properties" in resource
and resource.get("type") == "OS::Nova::Server"
)
vm_types = get_vm_types_for_resource(resource)
# if more than one vm_type was identified, return None
- if len(vm_types) > 1:
+ if not vm_types or len(vm_types) > 1:
return None
return vm_types.pop()