Other minor changes
- updating error message to be more clear for vm_type class
- updating test_network_format to handle nested files w/ no resources
- updating ports.py to handle hardcoded str_replace param/values
Issue-ID: VVP-342
Signed-off-by: stark, steven <steven.stark@att.com>
Change-Id: I63fcda582fe25dcedca87e874327b7ea56fe6ef3
d = dict(
flavor=cls.get_flavor(resource),
image=cls.get_image(resource),
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)
)
if all(d.values()):
vm_class.update(d)
- 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 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)
# 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)
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)
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 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(
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(
% (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:
)
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.
"""
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."
return (
"Unexpected parameter format for {} {} property {}: {}. "
"Please consult the heat guidelines documentation for details."