]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
task/install: extra_system_packages at the top level can be a list
authorIlya Dryomov <idryomov@gmail.com>
Tue, 4 Nov 2025 12:02:46 +0000 (13:02 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 4 Nov 2025 12:15:54 +0000 (13:15 +0100)
Commit fc5a3197f22e ("task/install: allow both list and dicts for
extra_system_packages") introduced a regression for job definitions
where extra_system_packages at the top level (i.e. on the install
task itself) is a list.  For example

  overrides:
    install:
      ceph:
        flavor: default
        sha1: b7d57fefbec68934ae5e6e7d7c48ac09182397a5
      extra_system_packages:
      - pv

produces AssertionError on

  assert isinstance(b, dict)

in deep_merge() when it's called from _override_extra_system_packages().

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
teuthology/task/install/__init__.py
teuthology/test/task/test_install.py

index 0e5604eacb185254b7c8e527bca9bd78f734429b..d37555bc4bf6a1c6a0e3dd17f169755221b25c8e 100644 (file)
@@ -427,6 +427,9 @@ def _override_extra_system_packages(config, project, install_overrides):
             e = dict(deb=copy.deepcopy(extra), rpm=copy.deepcopy(extra))
         elif isinstance(extra, dict):
             e = copy.deepcopy(extra)
+
+        if isinstance(extra_overrides, list):
+            extra_overrides = dict(deb=extra_overrides, rpm=extra_overrides)
         elif isinstance(extra, str):
             e = dict(deb=[extra], rpm=[extra])
 
index fd44ac58a462f97baaf15c57adff8fb86d0cf045..e635e05023aeb72c9be9c4ff88a3509880c92b5f 100644 (file)
@@ -362,6 +362,28 @@ class TestInstall(object):
                     'rpm': ['alpha', 'xerxes', 'yellow'],
                 }
             ],
+            [
+                {
+                    'tasks': [ { 'install': { 'clean': True, }, }, ],
+                    'overrides': {
+                        'install': {
+                            'ceph': {
+                                 'extra_system_packages': {
+                                     'deb': [],
+                                     'rpm': ['xerxes', 'yellow'],
+                                 },
+                                 'flavor': 'default',
+                                 'sha1': '0123456789abcdef0123456789abcdef01234567',
+                             },
+                            'extra_system_packages': ['alpha'],
+                        },
+                    },
+                },
+                {
+                    'deb': ['alpha'],
+                    'rpm': ['xerxes', 'yellow', 'alpha'],
+                }
+            ],
             [
                 {
                     'tasks': [ { 'install': { 'clean': True, }, }, ],
@@ -383,6 +405,24 @@ class TestInstall(object):
                     'rpm': ['xerxes', 'yellow'],
                 }
             ],
+            [
+                {
+                    'tasks': [ { 'install': { 'clean': True, }, }, ],
+                    'overrides': {
+                        'install': {
+                            'ceph': {
+                                 'flavor': 'default',
+                                 'sha1': '0123456789abcdef0123456789abcdef01234567',
+                             },
+                            'extra_system_packages': ['xerxes', 'yellow'],
+                        },
+                    },
+                },
+                {
+                    'deb': ['xerxes', 'yellow'],
+                    'rpm': ['xerxes', 'yellow'],
+                }
+            ],
             [
                 {
                     'tasks': [ { 'install': { 'clean': True, }, }, ],