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