Modification of slave adding procedure

We should not define new slave index by incrementing
of current slaves list lenght. We should check all list
and find missing(deleted) slave indexes or increment maximum.

Change-Id: I878879da99e05a78f0203b244c4ea30374cb3ef2
Closes-Bug: 1641945
This commit is contained in:
Dmitry Belyaninov 2017-01-25 15:18:01 +00:00
parent f774496e5d
commit e71e8924d1
3 changed files with 29 additions and 21 deletions

View File

@ -49,12 +49,20 @@ class DevopsEnvironment(object):
group_name='default',
):
group = self._env.get_group(name=group_name)
created_node_names = [n.name for n in group.get_nodes()]
created_nodes = len(group.get_nodes())
def get_available_slave_name():
for i in xrange(1, 1000):
name = "slave-{:02d}".format(i)
if name in created_node_names:
continue
created_node_names.append(name)
return name
new_nodes = []
for node_num in xrange(created_nodes, created_nodes + nodes_count):
node_name = "slave-{:02d}".format(node_num)
for node_num in xrange(nodes_count):
node_name = get_available_slave_name()
slave_conf = templates.create_slave_config(
slave_name=node_name,
slave_role='fuel_slave',

View File

@ -55,7 +55,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
self.ntpgroup_inst = self.ntpgroup_mock.return_value
self.slave_conf = {
'name': 'slave-00',
'name': 'slave-01',
'role': 'fuel_slave',
'params': {},
'volumes': [
@ -82,7 +82,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
nodes_count=1)
self.cr_sl_conf_mock.assert_called_once_with(
slave_name='slave-00',
slave_name='slave-01',
slave_role='fuel_slave',
slave_vcpu=1,
slave_memory=1024,
@ -102,7 +102,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
)
assert len(nodes) == 1
assert nodes[0].name == 'slave-00'
assert nodes[0].name == 'slave-01'
self.vol_define_mock.assert_called_once_with()
@ -189,7 +189,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
)])
slave = self.group.add_node(
name='slave-00',
name='slave-01',
role='fule_slave',
interfaces=[dict(
label='eth0',
@ -201,7 +201,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
eth0.mac_address = '64:52:dc:96:12:cc'
eth0.save()
ip = self.denv.get_node_ip('slave-00')
ip = self.denv.get_node_ip('slave-01')
assert ip == '10.109.0.100'
def test_get_private_keys(self):
@ -250,7 +250,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
)])
slave = self.group.add_node(
name='slave-00',
name='slave-01',
role='fule_slave',
interfaces=[dict(
label='eth0',
@ -264,7 +264,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
key = self.paramiko_mock.RSAKey.from_private_key.return_value
keys = [key, key]
remote = self.denv.get_node_remote('slave-00')
remote = self.denv.get_node_remote('slave-01')
assert remote is ssh
self.ssh_mock.assert_called_with(
'10.109.0.100',
@ -290,7 +290,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
interface_model='e1000',
)])
slave = self.group.add_node(
name='slave-00',
name='slave-01',
role='fule_slave',
interfaces=[dict(
label='eth0',
@ -308,7 +308,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
self.ntpgroup_mock.assert_called_once_with()
self.ntpgroup_inst.add_node.assert_has_calls((
mock.call(ssh, 'admin'),
mock.call(ssh, 'slave-00'),
mock.call(ssh, 'slave-01'),
))
assert self.ntpgroup_inst.sync_time.call_count == 3
@ -332,7 +332,7 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
interface_model='e1000',
)])
slave = self.group.add_node(
name='slave-00',
name='slave-01',
role='fule_slave',
interfaces=[dict(
label='eth0',
@ -344,13 +344,13 @@ class TestDevopsEnvironment(driverless.DriverlessTestCase):
eth0.mac_address = '64:52:dc:96:12:cc'
eth0.save()
t = self.denv.get_curr_time(node_names=['admin', 'slave-00'])
t = self.denv.get_curr_time(node_names=['admin', 'slave-01'])
assert t is self.ntpgroup_inst.get_curr_time.return_value
self.ntpgroup_mock.assert_called_once_with()
self.ntpgroup_inst.add_node.assert_has_calls((
mock.call(ssh, 'admin'),
mock.call(ssh, 'slave-00'),
mock.call(ssh, 'slave-01'),
))
assert self.ntpgroup_inst.sync_time.call_count == 0

View File

@ -137,11 +137,11 @@ class TestShell(unittest.TestCase):
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)],
create_node_mock('slave-01', 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',
create_node_mock('slave-02',
ips={'fuelweb_admin': '192.168.1.4',
'public': '192.168.2.4',
'storage': '192.168.3.4'}),
@ -253,8 +253,8 @@ class TestShell(unittest.TestCase):
' VNC NODE-NAME GROUP-NAME\n'
'----- ----------- ------------\n'
' 5005 admin rack-01\n'
' 5005 slave-00 rack-01\n'
' 5005 slave-01 rack-01')
' 5005 slave-01 rack-01\n'
' 5005 slave-02 rack-01')
def test_show_none(self):
sh = shell.Shell(['show', 'env2'])
@ -327,7 +327,7 @@ class TestShell(unittest.TestCase):
self.print_mock.assert_called_once_with(
'SNAPSHOT CREATED NODES-NAMES\n'
'---------- ------------------- ---------------\n'
'snap1 2016-05-12 17:12:15 admin, slave-00\n'
'snap1 2016-05-12 17:12:15 admin, slave-01\n'
'snap2 2016-05-12 17:12:16 admin')
def test_snapshot_list_none(self):
@ -344,7 +344,7 @@ class TestShell(unittest.TestCase):
self.client_inst.get_env.assert_called_once_with('env1')
admin = self.nodes['env1']['admin']
admin.erase_snapshot.assert_called_once_with(name='snap1')
slave = self.nodes['env1']['slave-00']
slave = self.nodes['env1']['slave-01']
slave.erase_snapshot.assert_called_once_with(name='snap1')
def test_slave_ip_list(self):