From 1d281ce111a76c2b056bcaa572c1e929c90237cf Mon Sep 17 00:00:00 2001 From: "stark, steven" Date: Mon, 18 Nov 2019 13:45:47 -0800 Subject: [PATCH] [VVP] Updating vm_type class test to proceed if no cinder 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 Change-Id: I63fcda582fe25dcedca87e874327b7ea56fe6ef3 --- ice_validator/tests/structures.py | 2 +- ice_validator/tests/test_network_format.py | 4 ++-- ice_validator/tests/test_vm_class_has_unique_type.py | 12 +++++++----- ice_validator/tests/utils/ports.py | 5 +++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ice_validator/tests/structures.py b/ice_validator/tests/structures.py index 887917c..09dd222 100644 --- a/ice_validator/tests/structures.py +++ b/ice_validator/tests/structures.py @@ -563,7 +563,7 @@ class NovaServerProcessor(HeatProcessor): 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) diff --git a/ice_validator/tests/test_network_format.py b/ice_validator/tests/test_network_format.py index b291c53..23e46f9 100644 --- a/ice_validator/tests/test_network_format.py +++ b/ice_validator/tests/test_network_format.py @@ -79,7 +79,7 @@ def test_network_has_subnet(yaml_file): 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 @@ -87,7 +87,7 @@ def test_network_has_subnet(yaml_file): # 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) diff --git a/ice_validator/tests/test_vm_class_has_unique_type.py b/ice_validator/tests/test_vm_class_has_unique_type.py index b158f5b..5938535 100644 --- a/ice_validator/tests/test_vm_class_has_unique_type.py +++ b/ice_validator/tests/test_vm_class_has_unique_type.py @@ -73,8 +73,8 @@ class VmClassValidator(object): 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: @@ -98,13 +98,15 @@ class VmClassValidator(object): 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: diff --git a/ice_validator/tests/utils/ports.py b/ice_validator/tests/utils/ports.py index 1f5f658..d6c3be9 100644 --- a/ice_validator/tests/utils/ports.py +++ b/ice_validator/tests/utils/ports.py @@ -160,8 +160,9 @@ def validate_port_parameter( 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." -- 2.16.6