From aaf02ab05d0f56049c39e9838cc6749ee29d7849 Mon Sep 17 00:00:00 2001 From: tamil Date: Thu, 14 Mar 2013 18:18:39 -0700 Subject: [PATCH] added task for ceph.restart Signed-off-by: tamil --- teuthology/task/ceph.py | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/teuthology/task/ceph.py b/teuthology/task/ceph.py index 8ca5099404..cb81925484 100644 --- a/teuthology/task/ceph.py +++ b/teuthology/task/ceph.py @@ -932,6 +932,67 @@ def healthy(ctx, config): ) +@contextlib.contextmanager +def restart(ctx, config): + """ + restart ceph daemons + + For example:: + tasks: + - ceph.restart: [all] + + For example:: + tasks: + - ceph.restart: [osd.0, mon.1] + + """ + if config is None: + config = {} + + ctx.daemons = CephState() + + testdir = teuthology.get_testdir(ctx) + coverage_dir = '{tdir}/archive/coverage'.format(tdir=testdir) + + daemon_signal = 'kill' + + if isinstance(config, list): + assert isinstance(config, list), \ + "task ceph.restart only supports a list for configuration" + config = dict.fromkeys(config) + for i in config.keys(): + type_ = i.split('.')[0] + id_ = i.split('.')[1] + daemons = ctx.cluster.only(teuthology.is_type(type_)) + for remote, roles_for_host in daemons.remotes.iteritems(): + run_cmd = [ + '{tdir}/enable-coredump'.format(tdir=testdir), + 'ceph-coverage', + coverage_dir, + 'sudo', + '{tdir}/daemon-helper'.format(tdir=testdir), + daemon_signal, + ] + run_cmd_tail = [ + 'ceph-%s' % (type_), + '-f', + '-i', id_] + run_cmd.extend(run_cmd_tail) + ctx.daemons.add_daemon(remote, type_, id_, + args=run_cmd, + logger=log.getChild(i), + stdin=run.PIPE, + wait=False, + ) + yield + else: + with contextutil.nested( + lambda: run_daemon(ctx=ctx, config=config, type_='mon'), + lambda: run_daemon(ctx=ctx, config=config, type_='osd'), + lambda: run_daemon(ctx=ctx, config=config, type_='mds'), + ): + yield + @contextlib.contextmanager def task(ctx, config): """ -- 2.39.5