Merge "Add warning for duplicate parameters"

This commit is contained in:
Zuul 2022-05-30 17:14:11 +00:00 committed by Gerrit Code Review
commit 1308d0d49a
5 changed files with 38 additions and 1 deletions

View File

@ -3499,3 +3499,33 @@ def get_tripleo_cephadm_keys(username, key, pools):
mon='profile rbd',
osd=', '.join(list(
map(lambda x: 'profile rbd pool=' + x, pools)))))]
def duplicate_param_check(user_environments):
"""Register warnings when duplcate parameters are discovered.
:param user_environments: List of user defined environment files.
:type user_environments: Array
"""
used_params = collections.defaultdict(int)
duplicate_params = dict()
for env_file in user_environments:
_env_file_parsed = url_parse.urlparse(env_file)
try:
with open(_env_file_parsed.path, 'r') as f:
_env_map = yaml.safe_load(f)
except FileNotFoundError:
continue
else:
LOG.debug('Inspecting "%s"', _env_file_parsed.path)
for k, v in _env_map.get('parameter_defaults', {}).items():
used_params[k] += 1
if used_params[k] > 1:
duplicate_params[k] = v
for k, v in duplicate_params.items():
LOG.warning(
'Duplicate parameter defined. Key: "%s", Current Value: %s', k,
yaml.dump(v, default_flow_style=False)
)

View File

@ -317,7 +317,7 @@ class DeployOvercloud(command.Command):
rewritten_user_environments.append((env_path, abs_env_path))
utils.check_prohibited_overrides(protected_overrides,
rewritten_user_environments)
utils.duplicate_param_check(user_environments=user_environments)
created_env_files.extend(user_environments)
return created_env_files

View File

@ -72,6 +72,9 @@ class UpdatePrepare(DeployOvercloud):
# Throw deprecation warning if service is enabled and
# ask user if update should still be continued.
if parsed_args.environment_files:
oooutils.duplicate_param_check(
user_environments=parsed_args.environment_files
)
oooutils.check_deprecated_service_is_enabled(
parsed_args.environment_files)

View File

@ -65,6 +65,9 @@ class UpgradePrepare(DeployOvercloud):
# Throw deprecation warning if service is enabled and
# ask user if upgrade should still be continued.
if parsed_args.environment_files:
oooutils.duplicate_param_check(
user_environments=parsed_args.environment_files
)
oooutils.check_deprecated_service_is_enabled(
parsed_args.environment_files)

View File

@ -556,6 +556,7 @@ class Deploy(command.Command):
def _load_user_params(self, user_environments):
user_params = {}
utils.duplicate_param_check(user_environments=user_environments)
for env_file in user_environments:
# undercloud and minion heat stack virtual state tracking is not
# available yet