import os
import shutil
from abc import ABC, abstractmethod
+from collections import OrderedDict
from preload.generator import yield_by_count
from preload.environment import PreloadEnvironment
from tests.utils.vm_types import get_vm_type_for_nova_server
from config import Config, get_generator_plugins
+from tests.test_environment_file_parameters import ENV_PARAMETER_SPEC
+
CHANGE = "CHANGEME"
@property
def base_output_params(self):
- return self.base_module.heat.outputs
+ return self.base_module.heat.outputs if self.base_module else {}
def filter_base_outputs(self):
non_base_modules = (m for m in self.modules if not m.is_base_module)
self.heat = Heat(filepath=template_file, envpath=env_path(template_file))
env_pair = get_environment_pair(self.template_file)
env_yaml = env_pair.get("eyml") if env_pair else {}
- self.parameters = env_yaml.get("parameters") or {}
+ self.parameters = {key: "" for key in self.heat.parameters}
+ self.parameters.update(env_yaml.get("parameters") or {})
self.networks = []
self.virtual_machine_types = self._create_vm_types()
self._add_networks()
@property
def env_specs(self):
"""Return available Environment Spec definitions"""
- return Config().env_specs
+ try:
+ return Config().env_specs
+ except FileNotFoundError:
+ return [ENV_PARAMETER_SPEC]
+
+ @property
+ def platform_provided_params(self):
+ result = set()
+ for spec in self.env_specs:
+ for props in spec["PLATFORM PROVIDED"]:
+ result.add(props["property"][-1])
+ return result
@property
def env_template(self):
Returns a a template .env file that can be completed to enable
preload generation.
"""
- params = {}
- params["vnf-name"] = CHANGE
+ params = OrderedDict()
params["vnf-type"] = CHANGE
params["vf-module-model-name"] = CHANGE
params["vf_module_name"] = CHANGE
+ for az in self.availability_zones:
+ params[az] = CHANGE
for network in self.networks:
params[network.name_param] = CHANGE
for param in set(network.subnet_params):
excluded = get_preload_excluded_parameters(
self.template_file, persistent_only=True
)
+ excluded.update(self.platform_provided_params)
for name, value in self.parameters.items():
if name in excluded:
continue
- params[name] = value
+ params[name] = value if value else CHANGE
return {"parameters": params}
@property
:return: dict of parameters suitable for the preload
"""
excluded = get_preload_excluded_parameters(self.template_file)
- return {k: v for k, v in self.parameters.items() if k not in excluded}
+ params = {k: v for k, v in self.parameters.items() if k not in excluded}
+ return params
def _get_vm_type(self, vm_type):
for vm in self.virtual_machine_types: