]>
git.proxmox.com Git - ceph.git/blob - ceph/qa/tasks/mon_clock_skew_check.py
2 Handle clock skews in monitors.
9 from StringIO
import StringIO
10 from teuthology
import misc
as teuthology
12 log
= logging
.getLogger(__name__
)
16 Check if there are any clock skews among the monitors in the
19 This task accepts the following options:
21 interval amount of seconds to wait before check. (default: 30.0)
22 expect-skew 'true' or 'false', to indicate whether to expect a skew during
23 the run or not. If 'true', the test will fail if no skew is
24 found, and succeed if a skew is indeed found; if 'false', it's
25 the other way around. (default: false)
27 - mon_clock_skew_check:
31 def __init__(self
, ctx
, manager
, config
, logger
):
33 self
.manager
= manager
39 if self
.config
is None:
43 def task(ctx
, config
):
46 assert isinstance(config
, dict), \
47 'mon_clock_skew_check task only accepts a dict for configuration'
48 interval
= float(config
.get('interval', 30.0))
49 expect_skew
= config
.get('expect-skew', False)
51 log
.info('Beginning mon_clock_skew_check...')
52 first_mon
= teuthology
.get_first_mon(ctx
, config
)
53 (mon
,) = ctx
.cluster
.only(first_mon
).remotes
.iterkeys()
54 manager
= ceph_manager
.CephManager(
57 logger
=log
.getChild('ceph_manager'),
60 quorum_size
= len(teuthology
.get_mon_names(ctx
))
61 manager
.wait_for_mon_quorum_size(quorum_size
)
64 log
.info('sleeping for {s} seconds'.format(
68 health
= manager
.get_mon_health(True)
69 log
.info('got health %s' % health
)
71 if 'MON_CLOCK_SKEW' not in health
['checks']:
72 raise RuntimeError('expected MON_CLOCK_SKEW but got none')
74 if 'MON_CLOCK_SKEW' in health
['checks']:
75 raise RuntimeError('got MON_CLOCK_SKEW but expected none')