X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_servers_have_required_metadata.py;h=4f76e7badf8519ec5264362c2fed389a141118f1;hb=1d319a416ba8f0cb764d86323f78318b0d3a8f4c;hp=3a12b9db818f7d46f4595c60d32f2be93ef342b3;hpb=f5edc06be0d8bedeb0904b348ba5e3e67c74f186;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_servers_have_required_metadata.py b/ice_validator/tests/test_servers_have_required_metadata.py index 3a12b9d..4f76e7b 100644 --- a/ice_validator/tests/test_servers_have_required_metadata.py +++ b/ice_validator/tests/test_servers_have_required_metadata.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,41 +35,43 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -# -from .helpers import validates -import yaml import pytest +from tests import cached_yaml as yaml +from .helpers import validates -@validates('R-37437', 'R-71493', 'R-72483') + +@validates("R-37437", "R-71493", "R-72483") def test_servers_have_required_metadata(yaml_file): - ''' + """ Check all defined nova server instances have the required metadata: - vnf_id and vf_module_id - ''' + vnf_id, vf_module_id, and vnf_name + """ with open(yaml_file) as fh: yml = yaml.load(fh) - # Check if the param vm_role is defined if "resources" not in yml: pytest.skip("No resources specified in the heat template") - required_metadata = ["vnf_id", "vf_module_id", "vnf_name"] + required_metadata = {"vnf_id", "vf_module_id", "vnf_name"} - invalid_nova_servers = [] + errors = [] for k, v in yml["resources"].items(): if v.get("type") != "OS::Nova::Server": continue - if 'properties' not in v: + if "properties" not in v: continue - if 'metadata' not in v['properties']: + if "metadata" not in v["properties"]: continue - # do not add the server if it has the required metadata - if set(required_metadata) <= set(v["properties"]["metadata"].keys()): - continue - invalid_nova_servers.append(k) + metadata = set(v.get("properties", {}).get("metadata", {}).keys()) + missing_metadata = required_metadata.difference(metadata) + if missing_metadata: + msg_template = ( + "OS::Nova::Server {} is missing the following " + + "metadata properties: {}" + ) + errors.append(msg_template.format(k, missing_metadata)) - assert not set(invalid_nova_servers) + assert not errors, "\n".join(errors)