]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
test i55530
authorPatrick Donnelly <pdonnell@redhat.com>
Fri, 27 May 2022 22:02:22 +0000 (18:02 -0400)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 2 Jun 2022 17:41:47 +0000 (13:41 -0400)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
scripts/suite.py
teuthology/suite/__init__.py
teuthology/suite/run.py
teuthology/task/kernel.py

index 5cafee024cbea6d2e613bc7cb42b09b81fa23f91..7f52f7691a53cc1504bcd6e22dbb173d40e49a95 100644 (file)
@@ -48,6 +48,9 @@ Standard arguments:
                               The kernel branch to run against,
                               use 'none' to bypass kernel task.
                               [default: distro]
+  --kernel-override           The kernel branch to override any kernel specified
+                              via -k or suite yamls.
+                              [default: False]
   -f <flavor>, --flavor <flavor>
                               The ceph packages shaman flavor to run with:
                               ('default', 'crimson', 'notcmalloc', 'jaeger')
index 56e3ef12423e70814e1bd51e7ee08d97f501dd35..661aedfd22cf0bef5a1d1e06a745d614110537f6 100644 (file)
@@ -43,6 +43,7 @@ def process_args(args):
         'ceph': 'ceph_branch',
         'sha1': 'ceph_sha1',
         'kernel': 'kernel_branch',
+        'kernel_override': 'kernel_override',
         '<config_yaml>': 'base_yaml_paths',
         'filter': 'filter_in',
     }
index 7ae4a37646f8841f6d21c6ddb92aa89d792d2349..36f59790094d76913a4ed65d860acb3984670e13 100644 (file)
@@ -151,6 +151,10 @@ class Run(object):
             kernel_dict = dict(kernel=dict(kdb=True, sha1=kernel_hash))
             if kernel_hash != 'distro':
                 kernel_dict['kernel']['flavor'] = 'default'
+            if self.args.kernel_override:
+                kernel_dict['kernel']['override'] = True
+            else:
+                kernel_dict['kernel']['override'] = False
         else:
             kernel_dict = dict()
         return kernel_dict
index 23c164cd53d48944b1666232a9343b51a6277df0..092e73108d39f1d03ba6fe3f3c1aee98d0d483bd 100644 (file)
@@ -119,25 +119,34 @@ def normalize_and_apply_overrides(ctx, config, overrides):
     timeout = TIMEOUT_DEFAULT
     if 'timeout' in config:
         timeout = config.pop('timeout')
+    config_override = config.pop('override', False)
     config = normalize_config(ctx, config)
 
+    if overrides is None:
+        overrides = {}
+
     if 'timeout' in overrides:
         timeout = overrides.pop('timeout')
-    if overrides:
-        overrides = normalize_config(ctx, overrides)
-        log.debug('normalized overrides %s' % overrides)
-
-        # Handle a case when a version specified with one type of version key
-        # is overridden by a version specified with another type of version key
-        # (e.g. 'branch: foo' is overridden with 'tag: bar').  To be able to
-        # use deep_merge(), drop all version keys from the original config if
-        # the corresponding override has a version key.
-        for role, role_config in config.items():
-            if (role in overrides and
-                    any(k in overrides[role] for k in VERSION_KEYS)):
+    overrides.pop('override', None) # config['override'] overrides overrides (hah), not the other way around!
+
+    overrides = normalize_config(ctx, overrides)
+    log.debug('normalized overrides %s' % overrides)
+
+    # Handle a case when a version specified with one type of version key
+    # is overridden by a version specified with another type of version key
+    # (e.g. 'branch: foo' is overridden with 'tag: bar').  To be able to
+    # use deep_merge(), drop all version keys from the original config if
+    # the corresponding override has a version key.
+    for role, role_config in config.items():
+        role_ov = overrides.get(role)
+        if role_ov  and any(k in role_ov for k in VERSION_KEYS):
+            if config_override:
+                for k in VERSION_KEYS:
+                    role_ov.pop(k, None)
+            else:
                 for k in VERSION_KEYS:
                     role_config.pop(k, None)
-        teuthology.deep_merge(config, overrides)
+    teuthology.deep_merge(config, overrides)
 
     return (config, timeout)