From: Vallari Agrawal Date: Mon, 20 May 2024 19:00:43 +0000 (+0530) Subject: task/install: fix AssertionError due to overrides X-Git-Tag: 1.2.0~41^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=89d7af0c81df042065cab9effa470ce90a88fbde;p=teuthology.git task/install: fix AssertionError due to overrides Fixes: https://tracker.ceph.com/issues/66093 https://tracker.ceph.com/issues/66133 Signed-off-by: Vallari Agrawal --- diff --git a/teuthology/task/install/__init__.py b/teuthology/task/install/__init__.py index c9e13194d..8d6c15988 100644 --- a/teuthology/task/install/__init__.py +++ b/teuthology/task/install/__init__.py @@ -9,6 +9,7 @@ from teuthology import misc as teuthology from teuthology import contextutil, packaging from teuthology.parallel import parallel from teuthology.task import ansible +from teuthology.exceptions import ConfigError from distutils.version import LooseVersion from teuthology.task.install.util import ( @@ -565,16 +566,24 @@ def task(ctx, config): log.debug('project %s' % project) overrides = ctx.config.get('overrides') repos = None - extra_system_packages = config.get('extra_system_packages', []) if overrides: - install_overrides = overrides.get('install', {}) - log.debug('INSTALL overrides: %s' % install_overrides) - teuthology.deep_merge(config, install_overrides.get(project, {})) - overrides_extra_system_packages = install_overrides.get('extra_system_packages') - if overrides_extra_system_packages: - teuthology.deep_merge(extra_system_packages, overrides_extra_system_packages) - repos = install_overrides.get('repos', None) + try: + install_overrides = overrides.get('install', {}) + log.debug('INSTALL overrides: %s' % install_overrides) + teuthology.deep_merge(config, install_overrides.get(project, {})) + overrides_extra_system_packages = install_overrides.get('extra_system_packages') + if overrides_extra_system_packages: + extra_system_packages = config.get('extra_system_packages') + config['extra_system_packages'] = teuthology.deep_merge(extra_system_packages, overrides_extra_system_packages) + repos = install_overrides.get('repos', None) + except AssertionError: + raise ConfigError( + "'install' task config and its overrides contain" \ + "conflicting types for the same config key. Ensure that " \ + "the configuration is of the same type (dict, list, etc.) " \ + "in both the task definition and its overrides." + ) log.debug('config %s' % config) @@ -609,7 +618,7 @@ def task(ctx, config): downgrade_packages=config.get('downgrade_packages', []), exclude_packages=config.get('exclude_packages', []), extra_packages=config.get('extra_packages', []), - extra_system_packages=extra_system_packages, + extra_system_packages=config.get('extra_system_packages', []), extras=config.get('extras', None), enable_coprs=config.get('enable_coprs', []), flavor=flavor,