Add logic to show slave node IPS
New command dos.py slave-ips-list shows ALL IPs assigned to ALL nodes in an environment that have dhcp enabled. Change-Id: I9c5095dbba55a23660f9f20fab525de538ae8b08 Closes-Bug: #1658630
This commit is contained in:
parent
7f1e34d367
commit
f774496e5d
|
@ -143,6 +143,21 @@ class Shell(object):
|
|||
for net in self.env.get_address_pools()]
|
||||
self.print_table(headers=headers, columns=columns)
|
||||
|
||||
def do_slave_ip_list(self):
|
||||
slave_ips = []
|
||||
for l2dev in self.env.get_env_l2_network_devices():
|
||||
# Suppress output of IPs from non-DHCP nets
|
||||
if not l2dev.dhcp:
|
||||
continue
|
||||
for node in self.env.get_nodes():
|
||||
slave_ips.append(
|
||||
node.get_ip_address_by_network_name(l2dev.name))
|
||||
|
||||
if not slave_ips:
|
||||
print('No IPs allocated for environment!')
|
||||
else:
|
||||
print(' '.join(slave_ips))
|
||||
|
||||
def do_time_sync(self):
|
||||
node_name = self.params.node_name
|
||||
node_names = [node_name] if node_name else None
|
||||
|
@ -434,6 +449,11 @@ class Shell(object):
|
|||
help="Show networks in environment",
|
||||
description="Display allocated networks for "
|
||||
"environment")
|
||||
subparsers.add_parser('slave-ip-list',
|
||||
parents=[name_parser],
|
||||
help="Show slave node IPs in environment",
|
||||
description="Display allocated IPs for "
|
||||
"environment slave nodes")
|
||||
subparsers.add_parser('time-sync',
|
||||
parents=[name_parser, node_name_parser],
|
||||
help="Sync time on all env nodes",
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
# pylint: disable=no-self-use
|
||||
|
||||
import collections
|
||||
import datetime
|
||||
import unittest
|
||||
|
||||
|
@ -100,7 +101,19 @@ class TestShell(unittest.TestCase):
|
|||
m.created = datetime.datetime(2016, 5, 12, 15, 12, t)
|
||||
return m
|
||||
|
||||
def create_node_mock(name, vnc_port=5005, snapshots=None):
|
||||
def create_l2netdev_mock(name, dhcp=False):
|
||||
m = mock.Mock(spec=models.L2NetworkDevice)
|
||||
m.name = name
|
||||
m.dhcp = dhcp
|
||||
return name, m
|
||||
|
||||
self.l2netdevs = collections.OrderedDict((
|
||||
create_l2netdev_mock('fuelweb_admin', dhcp=True),
|
||||
create_l2netdev_mock('public', dhcp=True),
|
||||
create_l2netdev_mock('storage'),
|
||||
))
|
||||
|
||||
def create_node_mock(name, vnc_port=5005, snapshots=None, ips=None):
|
||||
m = mock.Mock(spec=models.Node)
|
||||
m.name = name
|
||||
m.group.name = 'rack-01'
|
||||
|
@ -113,16 +126,26 @@ class TestShell(unittest.TestCase):
|
|||
snap_mocks = [
|
||||
create_snap_mock(s_name, t) for s_name, t in snapshots]
|
||||
m.get_snapshots.return_value = snap_mocks
|
||||
return m
|
||||
m.get_ip_address_by_network_name.side_effect = (
|
||||
lambda name: ips[name])
|
||||
return name, m
|
||||
|
||||
self.nodes = {
|
||||
'env1': {
|
||||
'admin': create_node_mock('admin', snapshots=[('snap1', 15),
|
||||
('snap2', 16)]),
|
||||
'slave-00': create_node_mock('slave-00',
|
||||
snapshots=[('snap1', 15)]),
|
||||
'slave-01': create_node_mock('slave-01'),
|
||||
}
|
||||
'env1': collections.OrderedDict((
|
||||
create_node_mock('admin', snapshots=[('snap1', 15),
|
||||
('snap2', 16)],
|
||||
ips={'fuelweb_admin': '192.168.1.2',
|
||||
'public': '192.168.2.2',
|
||||
'storage': '192.168.3.2'}),
|
||||
create_node_mock('slave-00', snapshots=[('snap1', 15)],
|
||||
ips={'fuelweb_admin': '192.168.1.3',
|
||||
'public': '192.168.2.3',
|
||||
'storage': '192.168.3.3'}),
|
||||
create_node_mock('slave-01',
|
||||
ips={'fuelweb_admin': '192.168.1.4',
|
||||
'public': '192.168.2.4',
|
||||
'storage': '192.168.3.4'}),
|
||||
))
|
||||
}
|
||||
|
||||
def create_ap_mock(name, ip_network):
|
||||
|
@ -148,6 +171,7 @@ class TestShell(unittest.TestCase):
|
|||
m.get_admin.side_effect = lambda: nodes['admin']
|
||||
m.get_admin_ip.return_value = admin_ip
|
||||
m.has_admin.side_effect = lambda: bool(admin_ip)
|
||||
m.get_env_l2_network_devices.return_value = self.l2netdevs.values()
|
||||
return m
|
||||
|
||||
self.env_mocks = {
|
||||
|
@ -323,6 +347,21 @@ class TestShell(unittest.TestCase):
|
|||
slave = self.nodes['env1']['slave-00']
|
||||
slave.erase_snapshot.assert_called_once_with(name='snap1')
|
||||
|
||||
def test_slave_ip_list(self):
|
||||
sh = shell.Shell(['slave-ip-list', 'env1'])
|
||||
sh.execute()
|
||||
|
||||
self.print_mock.assert_called_once_with(
|
||||
'192.168.1.2 192.168.1.3 192.168.1.4 '
|
||||
'192.168.2.2 192.168.2.3 192.168.2.4')
|
||||
|
||||
def test_slave_ip_list_empty(self):
|
||||
sh = shell.Shell(['slave-ip-list', 'env2'])
|
||||
sh.execute()
|
||||
|
||||
self.print_mock.assert_called_once_with(
|
||||
'No IPs allocated for environment!')
|
||||
|
||||
def test_net_list(self):
|
||||
sh = shell.Shell(['net-list', 'env1'])
|
||||
sh.execute()
|
||||
|
|
Loading…
Reference in New Issue