[VVP] Generated completed preload from env files
[vvp/validation-scripts.git] / ice_validator / tests / test_environment_file_parameters.py
index 100e4a1..69485bc 100644 (file)
@@ -218,16 +218,22 @@ def run_test_parameter(yaml_file, resource_type, *prop, **kwargs):
     assert not invalid_parameters, "\n".join(invalid_parameters)
 
 
-def get_preload_excluded_parameters(yaml_file):
+def get_preload_excluded_parameters(yaml_file, persistent_only=False, env_spec=None):
     """
     Returns set of all parameters that should not be included in the preload's
     vnf parameters/tag-values section.
+
+    if persistent_only only parameters that are marked as persistent will
+    be excluded
     """
+    env_spec = env_spec or ENV_PARAMETER_SPEC
     results = []
-    for resource_type, specs in ENV_PARAMETER_SPEC.items():
+    for resource_type, specs in env_spec.items():
         # apply to all resources if not in the format of an OpenStack resource
         all_resources = "::" not in resource_type
         for spec in specs:
+            if persistent_only and not spec.get("persistent"):
+                continue
             results.extend(get_template_parameters(yaml_file, resource_type,
                                                    spec, all_resources))
     return {item["param"] for item in results}
@@ -268,10 +274,11 @@ def env_violation(yaml_file, parameter, persistent):
     env_yaml = environment_pair.get("eyml")
     parameters = env_yaml.get("parameters", {})
     in_env = False
-    for param, value in parameters.items():
-        if re.match(parameter, parameter):
-            in_env = True
-            break
+    if parameters:  # env file can be just parameters:
+        for param, value in parameters.items():
+            if re.match(parameter, param):
+                in_env = True
+                break
 
     # confusing return. This function is looking for a violation.
     return not persistent == in_env