]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
task/install: fix AssertionError due to overrides 1942/head
authorVallari Agrawal <val.agl002@gmail.com>
Mon, 20 May 2024 19:00:43 +0000 (00:30 +0530)
committerVallari Agrawal <val.agl002@gmail.com>
Mon, 20 May 2024 19:00:43 +0000 (00:30 +0530)
Fixes:
https://tracker.ceph.com/issues/66093
https://tracker.ceph.com/issues/66133

Signed-off-by: Vallari Agrawal <val.agl002@gmail.com>
teuthology/task/install/__init__.py

index c9e13194d359866b10ba42f04874634f8fb96a2a..8d6c159888b7af3298abc482a12ef320fe01f1d2 100644 (file)
@@ -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,