From: Tommi Virtanen Date: Thu, 16 Jun 2011 18:37:51 +0000 (-0700) Subject: Refactor ceph mds daemon handling into a separate subtask. X-Git-Tag: v0.94.10~27^2^2~364^2~1720 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=259eb3506881f29d797c417793b9c5bc868365c8;p=ceph.git Refactor ceph mds daemon handling into a separate subtask. --- diff --git a/teuthology/task/ceph.py b/teuthology/task/ceph.py index 5c37813ebf9..b887e0aa6ce 100644 --- a/teuthology/task/ceph.py +++ b/teuthology/task/ceph.py @@ -464,6 +464,47 @@ def osd(ctx, config): run.wait(osd_daemons.itervalues()) +@contextlib.contextmanager +def mds(ctx, config): + log.info('Starting mds daemons...') + mds_daemons = {} + mdss = ctx.cluster.only(teuthology.is_type('mds')) + coverage_dir = '/tmp/cephtest/archive/coverage' + + daemon_signal = 'kill' + if config.get('coverage'): + log.info('Recording coverage for this run.') + daemon_signal = 'term' + + for remote, roles_for_host in mdss.remotes.iteritems(): + for id_ in teuthology.roles_of_type(roles_for_host, 'mds'): + proc = remote.run( + args=[ + '/tmp/cephtest/binary/usr/local/bin/ceph-coverage', + coverage_dir, + '/tmp/cephtest/daemon-helper', + daemon_signal, + '/tmp/cephtest/binary/usr/local/bin/cmds', + '-f', + '-i', id_, + '-c', '/tmp/cephtest/ceph.conf', + ], + logger=log.getChild('mds.{id}'.format(id=id_)), + stdin=run.PIPE, + wait=False, + ) + mds_daemons[id_] = proc + + try: + yield + finally: + log.info('Shutting down mds daemons...') + for id_, proc in mds_daemons.iteritems(): + proc.stdin.close() + + run.wait(mds_daemons.itervalues()) + + @contextlib.contextmanager def task(ctx, config): """ @@ -506,11 +547,9 @@ def task(ctx, config): "task ceph only supports a dictionary for configuration" flavor = None - daemon_signal = 'kill' if config.get('coverage'): log.info('Recording coverage for this run.') flavor = 'gcov' - daemon_signal = 'term' log.info('Checking for old test directory...') processes = ctx.cluster.run( @@ -561,47 +600,18 @@ def task(ctx, config): lambda: osd(ctx=ctx, config=dict( coverage=config.get('coverage'), )), + lambda: mds(ctx=ctx, config=dict( + coverage=config.get('coverage'), + )), ): - - mds_daemons = {} - log.info('Starting mds daemons...') - mdss = ctx.cluster.only(teuthology.is_type('mds')) - for remote, roles_for_host in mdss.remotes.iteritems(): - for id_ in teuthology.roles_of_type(roles_for_host, 'mds'): - proc = remote.run( - args=[ - '/tmp/cephtest/binary/usr/local/bin/ceph-coverage', - coverage_dir, - '/tmp/cephtest/daemon-helper', - daemon_signal, - '/tmp/cephtest/binary/usr/local/bin/cmds', - '-f', - '-i', id_, - '-c', '/tmp/cephtest/ceph.conf', - ], - logger=log.getChild('mds.{id}'.format(id=id_)), - stdin=run.PIPE, - wait=False, - ) - mds_daemons[id_] = proc - - log.info('Waiting until ceph is healthy...') (mon0_remote,) = ctx.cluster.only('mon.0').remotes.keys() teuthology.wait_until_healthy( remote=mon0_remote, ) - try: - yield - finally: - log.info('Shutting down mds daemons...') - for id_, proc in mds_daemons.iteritems(): - proc.stdin.close() - - - run.wait(mds_daemons.itervalues()) + yield if ctx.archive is not None: log.info('Compressing logs...')