Merge "Remove unnecessary check for pytest.skip"
[vvp/validation-scripts.git] / ice_validator / tests / test_nova_servers_workload_context.py
index 650a6e1..dc4c437 100644 (file)
 #
 # ============LICENSE_END============================================
 #
-# ECOMP is a trademark and service mark of AT&T Intellectual Property.
 #
 
-'''workload context
-'''
+"""workload context
+"""
 
 import pytest
 from tests import cached_yaml as yaml
 
-from .helpers import validates
+from .helpers import validates, get_param
 
-VERSION = '1.0.0'
+VERSION = "1.0.0"
 
 
-@validates('R-74978')
-def test_workload_context(heat_template):
-    '''
+@validates("R-74978")
+def test_workload_context(yaml_file):
+    """
+    A VNF's Heat Orchestration Template's OS::Nova::Server Resource
+    **MUST**
+    contain the metadata map value parameter 'workload_context'.
+
     A VNF's Heat Orchestration Template's OS::Nova::Server Resource
     metadata map value parameter 'workload_context' **MUST**
     be declared as type: 'string'.
-    '''
-    with open(heat_template) as fh:
+    """
+    with open(yaml_file) as fh:
         yml = yaml.load(fh)
 
     if "parameters" not in yml:
@@ -65,38 +68,28 @@ def test_workload_context(heat_template):
         pytest.skip("No resources specified in the heat template")
 
     for resource, v in yml["resources"].items():
-        if (not isinstance(v, dict)
-                or v.get('type') != 'OS::Nova::Server'
-                or 'properties' not in v):
+        if (
+            not isinstance(v, dict)
+            or v.get("type") != "OS::Nova::Server"
+            or "properties" not in v
+        ):
             continue
-        metadata = v['properties'].get('metadata')
+        metadata = v["properties"].get("metadata")
         if not isinstance(metadata, dict):
             continue
-        error = validate_metadata(metadata, yml['parameters'])
+        error = validate_metadata(metadata, yml["parameters"])
         if error:
-            assert False, '%s resource "%s" %s' % (
-                heat_template,
-                resource,
-                error)
+            assert False, '%s resource "%s" %s' % (yaml_file, resource, error)
 
 
 def validate_metadata(metadata, parameters):
-    '''validate metatdata.
-    Ensure metadata references parameter workload_context
-    is a string.
+    """validate metatdata.
+    Ensure metadata references parameter workload_context,
+    and that it is a string.
     Return error message string or None if no errors.
-    '''
+    """
     for value in metadata.values():
-        if isinstance(value, dict):
-            if 'get_param' in value:
-                if value['get_param'] == 'workload_context':
-                    wc = parameters.get('workload_context', {})
-                    if wc.get('type') == 'string':
-                        break
-                    else:
-                        return ('must have parameter "workload_context"'
-                                ' of type "string"')
-                    break
-    else:
-        return None
-
+        if get_param(value) == "workload_context" and parameters.get("workload_context", {}).get("type", "") != "string":
+            return 'must have parameter "workload_context" of type "string"'
+        else:
+            return None