From e71e8924d11c76ef6fb3efc74f95b9fc9d239b44 Mon Sep 17 00:00:00 2001 From: Dmitry Belyaninov Date: Wed, 25 Jan 2017 15:18:01 +0000 Subject: [PATCH] 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 --- devops/client/environment.py | 14 +++++++++++--- devops/tests/client/test_environment.py | 24 ++++++++++++------------ devops/tests/test_shell.py | 12 ++++++------ 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/devops/client/environment.py b/devops/client/environment.py index a156777d..b251abda 100644 --- a/devops/client/environment.py +++ b/devops/client/environment.py @@ -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', diff --git a/devops/tests/client/test_environment.py b/devops/tests/client/test_environment.py index a5f80d1a..f6719067 100644 --- a/devops/tests/client/test_environment.py +++ b/devops/tests/client/test_environment.py @@ -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 diff --git a/devops/tests/test_shell.py b/devops/tests/test_shell.py index 2c5313e2..e4e72f52 100644 --- a/devops/tests/test_shell.py +++ b/devops/tests/test_shell.py @@ -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):