X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_nova_servers_vm_types.py;h=36ada321de65399776260ddb0a6d3a8986ff6402;hb=0c4e64d87728b89aa9cd4d41d738f5bfe64ceee3;hp=233304ca201902a04fb1329a2d7c3f9f09779d70;hpb=60d5ad7d00eadd6395eca186e6fa76a43df3c6cf;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_nova_servers_vm_types.py b/ice_validator/tests/test_nova_servers_vm_types.py index 233304c..36ada32 100644 --- a/ice_validator/tests/test_nova_servers_vm_types.py +++ b/ice_validator/tests/test_nova_servers_vm_types.py @@ -2,7 +2,7 @@ # ============LICENSE_START======================================================= # org.onap.vvp/validation-scripts # =================================================================== -# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. # =================================================================== # # Unless otherwise specified, all software contained herein is licensed @@ -35,7 +35,6 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. # import pytest @@ -43,21 +42,20 @@ import re from tests import cached_yaml as yaml -from .helpers import validates +from .helpers import validates, is_nova_server -from .utils.vm_types import get_vm_types_for_resource -from .utils.vm_types import get_vm_types +from .utils.vm_types import get_vm_types_for_resource, get_vm_types from .utils.network_roles import get_network_roles -@validates('R-57282') -def test_vm_type_consistent_on_nova_servers(heat_template): - ''' +@validates("R-57282") +def test_vm_type_consistent_on_nova_servers(yaml_file): + """ Make sure all nova servers have properly formatted properties for their name, image and flavor - ''' - with open(heat_template) as fh: + """ + with open(yaml_file) as fh: yml = yaml.load(fh) # skip if resources are not defined @@ -66,24 +64,20 @@ def test_vm_type_consistent_on_nova_servers(heat_template): invalid_nova_servers = [] for k, v in yml["resources"].items(): - if not isinstance(v, dict): - continue - if v.get('type') != 'OS::Nova::Server': + if not is_nova_server(v): continue - if 'properties' not in v: - continue - vm_types = get_vm_types_for_resource(v) if len(vm_types) != 1: invalid_nova_servers.append(k) - assert not set(invalid_nova_servers), \ - "vm_types not consistant on the following resources {}" \ - .format(invalid_nova_servers) + assert not set( + invalid_nova_servers + ), "vm_types not consistant on the following resources: {}".format( + ",".join(invalid_nova_servers) + ) -@validates('R-48067', - 'R-00977') +@validates("R-48067", "R-00977") def test_vm_type_network_role_collision(yaml_file): with open(yaml_file) as fh: yml = yaml.load(fh) @@ -100,51 +94,46 @@ def test_vm_type_network_role_collision(yaml_file): collisions = [] for nr in network_roles: for vt in vm_types: - if vt in nr or nr in vt: - collisions.append({"vm_type": vt, "network_role": nr}) - - assert not collisions, \ - "vm_type and network_role should not be substrings {}" .format(collisions) - - -@validates('R-50436', - 'R-45188', - 'R-40499') + if vt in nr: + collisions.append( + ( + "vm_type ({}) cannot be a substring " "of network_role ({})" + ).format(vt, nr) + ) + elif nr in vt: + collisions.append( + ( + "network_role ({}) cannot be a substring " "of vm_type ({})" + ).format(nr, vt) + ) + + assert not collisions, ", ".join(collisions) + + +@validates("R-50436", "R-45188", "R-40499") def test_nova_server_flavor_parameter(yaml_file): - - prop = "flavor" - check_nova_parameter_format(prop, yaml_file) + check_nova_parameter_format("flavor", yaml_file) -@validates('R-51430', - 'R-54171', - 'R-87817') +@validates("R-51430", "R-54171", "R-87817") def test_nova_server_name_parameter(yaml_file): + check_nova_parameter_format("name", yaml_file) - prop = "name" - check_nova_parameter_format(prop, yaml_file) - -@validates('R-71152', - 'R-45188', - 'R-57282') +@validates("R-71152", "R-57282", "R-58670") def test_nova_server_image_parameter(yaml_file): - - prop = "image" - check_nova_parameter_format(prop, yaml_file) + check_nova_parameter_format("image", yaml_file) def check_nova_parameter_format(prop, yaml_file): formats = { "string": { - "name": re.compile(r'(.+?)_name_\d+$'), - "flavor": re.compile(r'(.+?)_flavor_name$'), - "image": re.compile(r'(.+?)_image_name$') + "name": re.compile(r"(.+?)_name_\d+$"), + "flavor": re.compile(r"(.+?)_flavor_name$"), + "image": re.compile(r"(.+?)_image_name$"), }, - "comma_delimited_list": { - "name": re.compile(r'(.+?)_names$') - } + "comma_delimited_list": {"name": re.compile(r"(.+?)_names$")}, } with open(yaml_file) as fh: @@ -163,31 +152,28 @@ def check_nova_parameter_format(prop, yaml_file): for k, v in yml["resources"].items(): if not isinstance(v, dict): continue - if v.get('type') != 'OS::Nova::Server': + if v.get("type") != "OS::Nova::Server": continue - prop_param = v.get("properties", {}) \ - .get(prop, {}) \ - .get("get_param") + prop_val = v.get("properties", {}).get(prop, {}) + prop_param = prop_val.get("get_param", "") if isinstance(prop_val, dict) else "" if not prop_param: pytest.skip("{} doesn't have property {}".format(k, prop)) elif isinstance(prop_param, list): prop_param = prop_param[0] - template_param_type = yml.get("parameters", {}) \ - .get(prop_param, {}) \ - .get("type") + template_param_type = yml.get("parameters", {}).get(prop_param, {}).get("type") if not template_param_type: pytest.skip("could not determine param type for {}".format(prop_param)) - format_match = formats.get(template_param_type, {}) \ - .get(prop) + format_match = formats.get(template_param_type, {}).get(prop) if not format_match or not format_match.match(prop_param): - invalid_parameters.append(prop_param) + msg = ( + "Invalid parameter format ({}) on Resource ID ({}) property" " ({})" + ).format(prop_param, k, prop) + invalid_parameters.append(msg) - assert not set(invalid_parameters), \ - "invalid {} parameters detected {}" \ - .format(prop, invalid_parameters) + assert not set(invalid_parameters), ", ".join(invalid_parameters)