]>
git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/die_on_err.py
2 Raise exceptions on osd coredumps or test err directories
7 from teuthology
.orchestra
import run
9 from tasks
import ceph_manager
10 from teuthology
import misc
as teuthology
12 log
= logging
.getLogger(__name__
)
14 @contextlib.contextmanager
15 def task(ctx
, config
):
17 Die if {testdir}/err exists or if an OSD dumps core
22 first_mon
= teuthology
.get_first_mon(ctx
, config
)
23 (mon
,) = ctx
.cluster
.only(first_mon
).remotes
.keys()
25 num_osds
= teuthology
.num_instances_of_type(ctx
.cluster
, 'osd')
26 log
.info('num_osds is %s' % num_osds
)
28 manager
= ceph_manager
.CephManager(
31 logger
=log
.getChild('ceph_manager'),
34 while len(manager
.get_osd_status()['up']) < num_osds
:
37 testdir
= teuthology
.get_testdir(ctx
)
40 for i
in range(num_osds
):
41 (osd_remote
,) = ctx
.cluster
.only('osd.%d' % i
).remotes
.keys()
43 args
= [ 'test', '-e', '{tdir}/err'.format(tdir
=testdir
) ],
47 exit_status
= p
.exitstatus
50 log
.info("osd %d has an error" % i
)
51 raise Exception("osd %d error" % i
)
53 log_path
= '/var/log/ceph/osd.%d.log' % (i
)
57 'tail', '-1', log_path
,
59 'grep', '-q', 'end dump'
64 exit_status
= p
.exitstatus
67 log
.info("osd %d dumped core" % i
)
68 raise Exception("osd %d dumped core" % i
)