ceph/teuthology/task/clock.py

101 lines
2.3 KiB
Python
Raw Normal View History

"""
Clock synchronizer
"""
2011-06-16 21:37:52 +00:00
import logging
import contextlib
2011-06-16 21:37:52 +00:00
from ..orchestra import run
2011-06-16 21:37:52 +00:00
log = logging.getLogger(__name__)
@contextlib.contextmanager
2011-06-16 21:37:52 +00:00
def task(ctx, config):
"""
Sync or skew clock
This will initially sync the clocks. Eventually it should let us also
skew by some number of seconds.
example:
tasks:
- clock:
- ceph:
- interactive:
to sync.
:param ctx: Context
:param config: Configuration
2011-06-16 21:37:52 +00:00
"""
log.info('Syncing clocks and checking initial clock skew...')
for rem in ctx.cluster.remotes.iterkeys():
rem.run(
args=[
'sudo',
'service', 'ntp', 'stop',
run.Raw(';'),
'sudo',
'ntpdate',
2012-09-09 21:23:12 +00:00
# 'clock1.dreamhost.com',
# 'clock2.dreamhost.com',
# 'clock3.dreamhost.com',
# 'time.apple.com',
'0.debian.pool.ntp.org',
'1.debian.pool.ntp.org',
'2.debian.pool.ntp.org',
'3.debian.pool.ntp.org',
run.Raw(';'),
'sudo',
'service', 'ntp', 'start',
run.Raw(';'),
'PATH=/usr/bin:/usr/sbin',
'ntpdc', '-p',
],
2011-06-16 21:37:52 +00:00
)
try:
yield
finally:
log.info('Checking final clock skew...')
for rem in ctx.cluster.remotes.iterkeys():
rem.run(
args=[
'PATH=/usr/bin:/usr/sbin',
'ntpdc', '-p',
],
)
@contextlib.contextmanager
def check(ctx, config):
"""
Run ntpdc at the start and the end of the task.
:param ctx: Context
:param config: Configuration
"""
log.info('Checking initial clock skew...')
for rem in ctx.cluster.remotes.iterkeys():
rem.run(
args=[
'PATH=/usr/bin:/usr/sbin',
'ntpdc', '-p',
],
)
try:
yield
finally:
log.info('Checking final clock skew...')
for rem in ctx.cluster.remotes.iterkeys():
rem.run(
args=[
'PATH=/usr/bin:/usr/sbin',
'ntpdc', '-p',
],
)