X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_availability_zone.py;h=aee6890c334676d3edfd5b0b39ca00cf1341fc9d;hb=a9104115f1334272759bb1815cfa497c3cca3b24;hp=6ff11c8bdc3001b85d718def4bff76373686b95b;hpb=cc21b8b08b6dbcec577bfb26ff397ac899da8002;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_availability_zone.py b/ice_validator/tests/test_availability_zone.py index 6ff11c8..aee6890 100644 --- a/ice_validator/tests/test_availability_zone.py +++ b/ice_validator/tests/test_availability_zone.py @@ -1,12 +1,12 @@ # -*- coding: utf8 -*- -# ============LICENSE_START======================================================= +# ============LICENSE_START==================================================== # org.onap.vvp/validation-scripts # =================================================================== # Copyright © 2017 AT&T Intellectual Property. All rights reserved. # =================================================================== # # Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the “License”); +# under the Apache License, Version 2.0 (the "License"); # you may not use this software except in compliance with the License. # You may obtain a copy of the License at # @@ -21,7 +21,7 @@ # # # Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); # you may not use this documentation except in compliance with the License. # You may obtain a copy of the License at # @@ -35,27 +35,38 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. # +"""test +""" -import pytest -import yaml import re +import pytest +from tests import cached_yaml as yaml +from tests.utils import nested_files + +from .helpers import validates + +VERSION = "1.1.0" + -def test_availability_zone_naming(heat_template): - ''' +@validates("R-98450") +def test_availability_zone_naming(yaml_file): + """ Make sure all availability zones are properly formatted - ''' + """ - with open(heat_template) as fh: + if nested_files.file_is_a_nested_template(yaml_file): + pytest.skip("test does not apply to nested files") + + with open(yaml_file) as fh: yml = yaml.load(fh) # skip if resources are not defined if "resources" not in yml: pytest.skip("No resources specified in the heat template") - invalid_availability_zones = [] + invalid_availability_zones = set() for k1, v1 in yml["resources"].items(): if not isinstance(v1, dict): @@ -67,10 +78,18 @@ def test_availability_zone_naming(heat_template): if v1["type"] == "OS::Nova::Server": for k2, v2 in v1["properties"].items(): - if k2 != 'availability_zone': + if k2 != "availability_zone": continue + if "str_replace" in v2: + continue + if "get_param" not in v2: + invalid_availability_zones.add(k1) + continue + if not isinstance(v2["get_param"], str): + continue + if not re.match(r"availability_zone_\d+", v2["get_param"]): + invalid_availability_zones.add(v2["get_param"]) - if not re.match(r'availability_zone_\d+', v2["get_param"]): - invalid_availability_zones.append(v2["get_param"]) - - assert not set(invalid_availability_zones) + assert not invalid_availability_zones, "invalid availability zones %s" % list( + invalid_availability_zones + )