Add CLI option '--skip-sync' to skip time-sync on specified nodes
The option '--skip-sync' can be used with CLI commands 'time-sync' and 'revert-resume'. Change-Id: I44ab39de5a46756f1174f6832ab3ea0badc987dc
This commit is contained in:
parent
dba9bd0b15
commit
10f4ac744e
|
@ -38,6 +38,7 @@ htmlcov/
|
|||
.coverage
|
||||
cover/
|
||||
.cache
|
||||
.pytest_cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
|
||||
|
|
|
@ -334,7 +334,14 @@ class Shell(object):
|
|||
|
||||
def do_time_sync(self):
|
||||
node_name = self.params.node_name
|
||||
node_names = [node_name] if node_name else None
|
||||
skip_sync = (self.params.skip_sync or '').split(",")
|
||||
|
||||
if node_name:
|
||||
node_names = [node_name]
|
||||
else:
|
||||
node_names = [node.name for node in self.env.get_active_nodes()
|
||||
if node.name not in skip_sync]
|
||||
|
||||
cur_time = self.env.get_curr_time(node_names)
|
||||
for name in sorted(cur_time):
|
||||
print('Current time on {0!r} = {1}'.format(name, cur_time[name]))
|
||||
|
@ -468,6 +475,12 @@ class Shell(object):
|
|||
node_name_parser.add_argument('--node-name', '-N',
|
||||
help='node name',
|
||||
default=None)
|
||||
|
||||
skip_sync_parser = argparse.ArgumentParser(add_help=False)
|
||||
skip_sync_parser.add_argument('--skip-sync', '-K',
|
||||
help='Comma-separated list of nodes '
|
||||
'to skip time-sync',
|
||||
default=None)
|
||||
timesync_parser = argparse.ArgumentParser(add_help=False)
|
||||
timesync_parser.add_argument('--timesync', dest='timesync',
|
||||
action='store_const', const=True,
|
||||
|
@ -678,14 +691,16 @@ class Shell(object):
|
|||
description="Display allocated IPs for "
|
||||
"environment slave nodes")
|
||||
subparsers.add_parser('time-sync',
|
||||
parents=[name_parser, node_name_parser],
|
||||
parents=[name_parser, node_name_parser,
|
||||
skip_sync_parser],
|
||||
help="Sync time on all env nodes",
|
||||
description="Sync time on all active nodes "
|
||||
"of environment starting from "
|
||||
"admin")
|
||||
subparsers.add_parser('revert-resume',
|
||||
parents=[name_parser, snapshot_name_parser,
|
||||
node_name_parser, timesync_parser],
|
||||
node_name_parser, timesync_parser,
|
||||
skip_sync_parser],
|
||||
help="Revert, resume, sync time on VMs",
|
||||
description="Revert and resume VMs in selected"
|
||||
"environment, then optionally sync "
|
||||
|
|
|
@ -491,20 +491,26 @@ class TestShell(unittest.TestCase):
|
|||
|
||||
def test_time_sync(self):
|
||||
self.env_mocks['env1'].get_curr_time.return_value = {
|
||||
'node1': 'Thu May 12 18:26:34 MSK 2016',
|
||||
'node2': 'Thu May 12 18:13:44 MSK 2016',
|
||||
'slave-01': 'Thu May 12 18:26:34 MSK 2016',
|
||||
'slave-02': 'Thu May 12 18:13:44 MSK 2016',
|
||||
}
|
||||
self.env_mocks['env1'].sync_time.return_value = {
|
||||
'node1': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'node2': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'slave-01': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'slave-02': 'Thu May 12 19:00:00 MSK 2016',
|
||||
}
|
||||
|
||||
self.env_mocks['env1'].get_active_nodes.return_value = [
|
||||
self.nodes['env1']['slave-01'], self.nodes['env1']['slave-02']
|
||||
]
|
||||
|
||||
sh = shell.Shell(['time-sync', 'env1'])
|
||||
sh.execute()
|
||||
|
||||
self.client_inst.get_env.assert_called_once_with('env1')
|
||||
self.env_mocks['env1'].get_curr_time.assert_called_once_with(None)
|
||||
self.env_mocks['env1'].sync_time.assert_called_once_with(None)
|
||||
self.env_mocks['env1'].get_curr_time.assert_called_once_with(
|
||||
['slave-01', 'slave-02'])
|
||||
self.env_mocks['env1'].sync_time.assert_called_once_with(
|
||||
['slave-01', 'slave-02'])
|
||||
|
||||
def test_time_sync_node(self):
|
||||
self.env_mocks['env1'].get_curr_time.return_value = {
|
||||
|
@ -540,22 +546,28 @@ class TestShell(unittest.TestCase):
|
|||
|
||||
def test_revert_resume_with_time_sync(self):
|
||||
self.env_mocks['env1'].get_curr_time.return_value = {
|
||||
'node1': 'Thu May 12 18:26:34 MSK 2016',
|
||||
'node2': 'Thu May 12 18:13:44 MSK 2016',
|
||||
'slave-01': 'Thu May 12 18:26:34 MSK 2016',
|
||||
'slave-02': 'Thu May 12 18:13:44 MSK 2016',
|
||||
}
|
||||
self.env_mocks['env1'].sync_time.return_value = {
|
||||
'node1': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'node2': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'slave-01': 'Thu May 12 19:00:00 MSK 2016',
|
||||
'slave-02': 'Thu May 12 19:00:00 MSK 2016',
|
||||
}
|
||||
|
||||
self.env_mocks['env1'].get_active_nodes.return_value = [
|
||||
self.nodes['env1']['slave-01'], self.nodes['env1']['slave-02']
|
||||
]
|
||||
|
||||
sh = shell.Shell(['revert-resume', '--timesync', 'env1', 'snap1'])
|
||||
sh.execute()
|
||||
|
||||
self.client_inst.get_env.assert_called_once_with('env1')
|
||||
self.env_mocks['env1'].revert.assert_called_once_with(
|
||||
'snap1', flag=False, resume=True)
|
||||
self.env_mocks['env1'].get_curr_time.assert_called_once_with(None)
|
||||
self.env_mocks['env1'].sync_time.assert_called_once_with(None)
|
||||
self.env_mocks['env1'].get_curr_time.assert_called_once_with(
|
||||
['slave-01', 'slave-02'])
|
||||
self.env_mocks['env1'].sync_time.assert_called_once_with(
|
||||
['slave-01', 'slave-02'])
|
||||
|
||||
def test_version(self):
|
||||
sh = shell.Shell(['version'])
|
||||
|
|
Loading…
Reference in New Issue