def test_get_service_nodes(self, service_name, service_cls, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'})], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')] ] devstack_management = devstack.DevStackManagement(self.conf) service = devstack_management.get_service(service_name) self.assertIsInstance(service, service_cls) nodes = service.get_nodes() cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call( ['10.0.0.2'], {'command': 'cat /sys/class/net/eth0/address'}), mock.call(['10.0.0.2'], {'command': cmd}, []) ]) self.assertEqual( [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1', fqdn='')], nodes.hosts)
def test_verify_slaves(self, mock_ansible_runner): self.conf['slaves'] = ['10.0.0.3', '10.0.0.4'] ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': 'mac1'}, host='10.0.0.2'), fakes.FakeAnsibleResult(payload={'stdout': 'mac2'}, host='10.0.0.3'), fakes.FakeAnsibleResult(payload={'stdout': 'mac3'}, host='10.0.0.4')], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.4')], ] devstack_management = devstack.DevStackManagement(self.conf) devstack_management.verify() hosts = [ node_collection.Host('10.0.0.2'), node_collection.Host('10.0.0.3'), node_collection.Host('10.0.0.4') ] ansible_runner_inst.execute.assert_has_calls([ mock.call(hosts, {'command': 'cat /sys/class/net/eth0/address'}), ])
def test_get_nodes_with_slaves(self, mock_ansible_runner): self.conf['slaves'] = ['10.0.0.3', '10.0.0.4'] self.conf['iface'] = 'eth1' ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'}, host='10.0.0.2'), fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c2'}, host='10.0.0.3'), fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c3'}, host='10.0.0.4')], ] hosts = [ node_collection.Host('10.0.0.2'), node_collection.Host('10.0.0.3'), node_collection.Host('10.0.0.4') ] devstack_management = devstack.DevStackManagement(self.conf) nodes = devstack_management.get_nodes() ansible_runner_inst.execute.assert_called_once_with( hosts, {'command': 'cat /sys/class/net/eth1/address'}) self.assertIsInstance(nodes, devstack.DevStackNode) self.assertEqual( [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1', fqdn=''), node_collection.Host(ip='10.0.0.3', mac='09:7b:74:90:63:c2', fqdn=''), node_collection.Host(ip='10.0.0.4', mac='09:7b:74:90:63:c3', fqdn='')], nodes.hosts)
def test_verify(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': 'node1.com'})], ] devstack_management = devstack.DevStackManagement(self.conf) devstack_management.verify() ansible_runner_inst.execute.assert_called_once_with( ['10.0.0.2'], {'shell': 'screen -ls | grep stack'})
def test_execute_on_cloud(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '/root'})], ] devstack_management = devstack.DevStackManagement(self.conf) result = devstack_management.execute_on_cloud( ['10.0.0.2'], {'command': 'pwd'}) ansible_runner_inst.execute.assert_called_once_with( ['10.0.0.2'], {'command': 'pwd'}) self.assertEqual( [fakes.FakeAnsibleResult(payload={'stdout': '/root'})], result)
def test_verify(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'}, host='10.0.0.2')], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')], ] devstack_management = devstack.DevStackManagement(self.conf) devstack_management.verify() ansible_runner_inst.execute.assert_has_calls([ mock.call([self.host], {'command': 'cat /sys/class/net/eth0/address'}), ])
def test_get_nodes(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'})], ] devstack_management = devstack.DevStackManagement(self.conf) nodes = devstack_management.get_nodes() ansible_runner_inst.execute.assert_called_once_with( ['10.0.0.2'], {'command': 'cat /sys/class/net/eth0/address'}) self.assertIsInstance(nodes, devstack.DevStackNode) self.assertEqual( [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1', fqdn='')], nodes.hosts)
def test_restart(self, service_name, service_cls, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'})], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')] ] devstack_management = devstack.DevStackManagement(self.conf) service = devstack_management.get_service(service_name) self.assertIsInstance(service, service_cls) service.restart() cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call( ['10.0.0.2'], {'command': 'cat /sys/class/net/eth0/address'}), mock.call(['10.0.0.2'], {'command': cmd}, []), mock.call(['10.0.0.2'], {'shell': service_cls.RESTART_CMD}) ])
def test_terminate(self, service_name, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'}, host='10.0.0.2')], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')] ] devstack_management = devstack.DevStackManagement(self.conf) service = devstack_management.get_service(service_name) service.terminate() cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format( service.grep) ansible_runner_inst.execute.assert_has_calls([ mock.call( [self.host], {'command': 'cat /sys/class/net/eth0/address'}), mock.call([self.discoverd_host], {'command': cmd}, []), mock.call([self.discoverd_host], {'shell': service.terminate_cmd}) ])
def test_validate_services(self): devstack_management = devstack.DevStackManagement(self.conf) devstack_management.validate_services()