import pytest
from tests import cached_yaml as yaml
-from .helpers import validates
+from .helpers import validates, get_param
VERSION = "1.0.0"
@validates("R-74978")
-def test_workload_context(heat_template):
+def test_workload_context(yaml_file):
"""
A VNF's Heat Orchestration Template's OS::Nova::Server Resource
**MUST**
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:
continue
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):
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