mirror of
https://github.com/ceph/ceph
synced 2025-01-19 01:21:49 +00:00
qa/tasks/workunit.py: use "overrides" as the default settings of workunit
otherwise the settings in "workunit" tasks are always overridden by the settings in template config. so we'd better follow the way of how "install" task updates itself with the "overrides" settings: it uses the "overrides" as the *defaults*. Fixes: http://tracker.ceph.com/issues/19429 Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
parent
fa3ddead5e
commit
47080150a1
@ -5,6 +5,7 @@ import logging
|
||||
import pipes
|
||||
import os
|
||||
|
||||
from copy import deepcopy
|
||||
from util import get_remote_for_role
|
||||
|
||||
from teuthology import misc
|
||||
@ -127,10 +128,18 @@ def task(ctx, config):
|
||||
assert isinstance(config.get('clients'), dict), \
|
||||
'configuration must contain a dictionary of clients'
|
||||
|
||||
overrides = ctx.config.get('overrides', {})
|
||||
misc.deep_merge(config, overrides.get('workunit', {}))
|
||||
# mimic the behavior of the "install" task, where the "overrides" are
|
||||
# actually the defaults of that task. in other words, if none of "sha1",
|
||||
# "tag", or "branch" is specified by a "workunit" tasks, we will update
|
||||
# it with the information in the "workunit" sub-task nested in "overrides".
|
||||
overrides = deepcopy(ctx.config.get('overrides', {}).get('workunit', {}))
|
||||
refspecs = {'branch': Branch, 'tag': Refspec, 'sha1': Refspec}
|
||||
if any(map(lambda i: i in config, refspecs.iterkeys())):
|
||||
for i in refspecs.iterkeys():
|
||||
overrides.pop(i, None)
|
||||
misc.deep_merge(config, overrides)
|
||||
|
||||
for spec, cls in [('branch', Branch), ('tag', Refspec), ('sha1', Refspec)]:
|
||||
for spec, cls in refspecs.iteritems():
|
||||
refspec = config.get(spec)
|
||||
if refspec:
|
||||
refspec = cls(refspec)
|
||||
|
Loading…
Reference in New Issue
Block a user