]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Refactor ceph mds daemon handling into a separate subtask.
authorTommi Virtanen <tommi.virtanen@dreamhost.com>
Thu, 16 Jun 2011 18:37:51 +0000 (11:37 -0700)
committerTommi Virtanen <tommi.virtanen@dreamhost.com>
Thu, 16 Jun 2011 21:36:21 +0000 (14:36 -0700)
teuthology/task/ceph.py

index 5c37813ebf9dd4f2645097c5125b894a0a0a3e85..b887e0aa6ce7d1ddd6556d789c9bb1674c3c7198 100644 (file)
@@ -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...')