Skip to content

Commit

Permalink
qa/tasks: a new cephadm exec task similar to vip.exec but generalized
Browse files Browse the repository at this point in the history
Add a new cephadm.exec task that works similarly to the existing
vip.exec but instead of only considering VIP related string replacements
it uses that templating feature that was recently added to the
cephadm module for generalized string templating.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
  • Loading branch information
phlogistonjohn committed Mar 21, 2024
1 parent 3ec0bfa commit 1ed6654
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions qa/tasks/cephadm.py
Original file line number Diff line number Diff line change
Expand Up @@ -1463,6 +1463,41 @@ def _shell_command(obj):
raise ValueError(f'invalid command item: {obj!r}')


def exec(ctx, config):
"""
This is similar to the standard 'exec' task, but does template substitutions.
TODO: this should probably be moved out of cephadm.py as it's pretty generic.
"""
assert isinstance(config, dict), "task exec got invalid config"

testdir = teuthology.get_testdir(ctx)

if 'all-roles' in config and len(config) == 1:
a = config['all-roles']
roles = teuthology.all_roles(ctx.cluster)
config = dict((id_, a) for id_ in roles if not id_.startswith('host.'))
elif 'all-hosts' in config and len(config) == 1:
a = config['all-hosts']
roles = teuthology.all_roles(ctx.cluster)
config = dict((id_, a) for id_ in roles if id_.startswith('host.'))

for role, ls in config.items():
(remote,) = ctx.cluster.only(role).remotes.keys()
log.info('Running commands on role %s host %s', role, remote.name)
for c in ls:
c.replace('$TESTDIR', testdir)
remote.run(
args=[
'sudo',
'TESTDIR={tdir}'.format(tdir=testdir),
'bash',
'-ex',
'-c',
_template_transform(ctx, config, c)],
)


def apply(ctx, config):
"""
Apply spec
Expand Down

0 comments on commit 1ed6654

Please sign in to comment.