Merge "Remove unnecessary check for pytest.skip"
[vvp/validation-scripts.git] / ice_validator / tests / test_nova_servers_vm_types_use_get_param.py
index 79bc4b2..ce653f6 100644 (file)
@@ -2,7 +2,7 @@
 # ============LICENSE_START=======================================================
 # org.onap.vvp/validation-scripts
 # ===================================================================
-# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
 # ===================================================================
 #
 # Unless otherwise specified, all software contained herein is licensed
 #
 # ============LICENSE_END============================================
 #
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
 #
 
 import pytest
-import yaml
+from tests import cached_yaml as yaml
 
+from .helpers import validates, is_nova_server
 
-def test_vm_type_assignments_on_nova_servers_only_use_get_param(heat_template):
-    '''
+
+@validates("R-901331", "R-481670", "R-663631")
+def test_vm_type_assignments_on_nova_servers_only_use_get_param(yaml_file):
+    """
     Make sure all nova servers only use get_param for their properties
-    '''
-    with open(heat_template) as fh:
+    """
+    with open(yaml_file) as fh:
         yml = yaml.load(fh)
 
     # skip if resources are not defined
@@ -54,23 +56,20 @@ def test_vm_type_assignments_on_nova_servers_only_use_get_param(heat_template):
         pytest.skip("No resources specified in the heat template")
 
     key_values = ["name", "flavor", "image"]
-    invalid_nova_servers = []
+    invalid_nova_servers = set()
 
     for k, v in yml["resources"].items():
-        if not isinstance(v, dict):
-            continue
-        if "properties" not in v:
-            continue
-        if "type" not in v:
-            continue
-        if v["type"] != "OS::Nova::Server":
+        if not is_nova_server(v):
             continue
 
         for k2, v2 in v["properties"].items():
             if k2 in key_values:
                 if not isinstance(v2, dict):
-                    invalid_nova_servers.append(k)
+                    invalid_nova_servers.add(k)
                 elif "get_param" not in v2:
-                    invalid_nova_servers.append(k)
-
-    assert not set(invalid_nova_servers)
+                    invalid_nova_servers.add(k)
+    msg = (
+        "These OS::Nova::Server resources do not derive one or more of "
+        + "their {} properties via get_param: {}"
+    ).format(", ".join(key_values), ", ".join(invalid_nova_servers))
+    assert not invalid_nova_servers, msg