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 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,