From: Patrick Donnelly Date: Fri, 27 May 2022 22:02:22 +0000 (-0400) Subject: test X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fheads%2Fi55530;p=teuthology.git test Signed-off-by: Patrick Donnelly --- diff --git a/scripts/suite.py b/scripts/suite.py index 5cafee024..7f52f7691 100644 --- a/scripts/suite.py +++ b/scripts/suite.py @@ -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 The ceph packages shaman flavor to run with: ('default', 'crimson', 'notcmalloc', 'jaeger') diff --git a/teuthology/suite/__init__.py b/teuthology/suite/__init__.py index 56e3ef124..661aedfd2 100644 --- a/teuthology/suite/__init__.py +++ b/teuthology/suite/__init__.py @@ -43,6 +43,7 @@ def process_args(args): 'ceph': 'ceph_branch', 'sha1': 'ceph_sha1', 'kernel': 'kernel_branch', + 'kernel_override': 'kernel_override', '': 'base_yaml_paths', 'filter': 'filter_in', } diff --git a/teuthology/suite/run.py b/teuthology/suite/run.py index 7ae4a3764..36f597900 100644 --- a/teuthology/suite/run.py +++ b/teuthology/suite/run.py @@ -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 diff --git a/teuthology/task/kernel.py b/teuthology/task/kernel.py index 23c164cd5..092e73108 100644 --- a/teuthology/task/kernel.py +++ b/teuthology/task/kernel.py @@ -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)