d = dict(
flavor=cls.get_flavor(resource),
image=cls.get_image(resource),
- networks=cls.get_network(resource),
+ network_role=cls.get_network(resource),
)
if all(d.values()):
vm_class.update(d)
networks = []
- for k, v in yml["resources"].items():
+ for k, v in yml.get("resources", {}).items():
if not has_properties(v) or v.get("type") not in ["OS::Neutron::Net"]:
continue
# need to check if contrail networks also require subnet
# if v.get("type") not in NETWORK_RESOURCE_TYPES:
networks.append(k)
- for k, v in yml["resources"].items():
+ for k, v in yml.get("resources", {}).items():
network_prop = v.get("properties", {}).get("network", {}).get("get_resource")
if (
not has_properties(v)
self.vm_rids = collections.defaultdict(set)
self.vm_types = collections.defaultdict(set)
va_config, self.va_count = CinderVolumeAttachmentProcessor.get_config(resources)
- if not va_config:
- pytest.skip("No Cinder Volume Attachment configurations found")
+ # if not va_config:
+ # pytest.skip("No Cinder Volume Attachment configurations found")
for rid, resource in resources.items():
vm_class = NovaServerProcessor.get_vm_class(resource)
if vm_class:
for k, v in self.vm_types.items():
if len(v) > 1:
errors.append(
- "vm-type %s has class conflict %s"
+ "OS::Nova::Server resources with the same vm_type must have identical configurations. "
+ "The following OS::Nova::Server resources for vm-type %s do not have identical configurations: %s"
% (k, ", ".join(str(list(self.vm_classes[c])) for c in v))
)
classes = list(v)
errors.append(
- "Differences %s"
- % ", ".join([str(key_diff(classes[0], c)) for c in classes[1:]])
+ "The following attributes are detected differences between "
+ "OS::Nova::Server's with vm_type %s: %s"
+ % (k, ", ".join([str(key_diff(classes[0], c)) for c in classes[1:]]))
)
for k, v in self.vm_counts.items():
if len(v) > 1:
If the parameter is present in the resource metadata
and exemptions are allowed, then the validation will be skipped.
"""
- parameter = param.get("get_param")
- if not parameter:
+ if isinstance(param, dict) and "get_param" in param:
+ parameter = param.get("get_param")
+ else:
return (
"Unexpected parameter format for {} {} property {}: {}. "
"Please consult the heat guidelines documentation for details."