def test_freeze(self, service_name, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [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.2'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3')] ] fuel_managment = fuel.FuelManagement(self.conf) service = fuel_managment.get_service(service_name) service.freeze() get_nodes_cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format( service.grep) ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': get_nodes_cmd}, []), mock.call(self.hosts, {'kill': {'grep': service.grep, 'sig': 19}}), ])
def test_plug(self, service_name, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [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.2'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3')] ] fuel_managment = fuel.FuelManagement(self.conf) service = fuel_managment.get_service(service_name) service.plug() get_nodes_cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format( service.grep) ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': get_nodes_cmd}, []), mock.call(self.hosts, {'iptables': {'protocol': service.port[0], 'port': service.port[1], 'action': 'unblock', 'service': service.service_name}}), ])
def test_run_node_collection_empty(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2', status=executor.STATUS_FAILED), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3', status=executor.STATUS_FAILED)], ] fuel_managment = fuel.FuelManagement(self.conf) service = fuel_managment.get_service('keystone') exception = self.assertRaises(error.ServiceError, service.restart) self.assertEqual('Service keystone is not found on any nodes', str(exception)) get_nodes_cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format( service.grep) ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': get_nodes_cmd}, []), ])
def test_get_service_nodes(self, service_name, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [ fakes.FakeAnsibleResult(payload={'stdout': ''}, status=executor.STATUS_FAILED, host='10.0.0.2'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3') ] ] fuel_managment = fuel.FuelManagement(self.conf) service = fuel_managment.get_service(service_name) nodes = service.get_nodes() cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format( service.grep) ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': cmd}, []), ]) self.assertEqual(nodes.hosts, [self.hosts[1]])
def test_init(self, config, expected_runner_calls, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value fuel_managment = fuel.FuelManagement(config) mock_ansible_runner.assert_has_calls(expected_runner_calls) self.assertIs(fuel_managment.master_node_executor, ansible_runner_inst) self.assertIs(fuel_managment.cloud_executor, ansible_runner_inst)
def test_get_nodes_fqdns(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [[self.fake_ansible_result]] fuel_managment = fuel.FuelManagement(self.conf) nodes = fuel_managment.get_nodes(fqdns=['node-3']) hosts = [ node_collection.Host(ip='10.0.0.3', mac='03', fqdn='node-3'), ] self.assertEqual(nodes.hosts, hosts)
def test_get_nodes(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [[self.fake_ansible_result]] fuel_managment = fuel.FuelManagement(self.conf) nodes = fuel_managment.get_nodes() ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), ]) self.assertEqual(nodes.hosts, self.hosts)
def test_verify(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ], ] fuel_managment = fuel.FuelManagement(self.conf) fuel_managment.verify() ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': 'hostname'}), ])
def test_get_nodes_from_discover_driver(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value hosts = [ node_collection.Host(ip='10.0.2.2', mac='09:7b:74:90:63:c2', fqdn='mynode1.local'), node_collection.Host(ip='10.0.2.3', mac='09:7b:74:90:63:c3', fqdn='mynode2.local'), ] node_discover_driver = mock.Mock() node_discover_driver.discover_hosts.return_value = hosts fuel_managment = fuel.FuelManagement(self.conf) fuel_managment.set_node_discover(node_discover_driver) nodes = fuel_managment.get_nodes() self.assertFalse(ansible_runner_inst.execute.called) self.assertEqual(hosts, nodes.hosts)
def test_execute_on_cloud(self, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ] ] fuel_managment = fuel.FuelManagement(self.conf) nodes = fuel_managment.get_nodes() result = fuel_managment.execute_on_cloud(nodes.hosts, {'command': 'mycmd'}, raise_on_error=False) ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': 'fuel node --json'}), mock.call(self.hosts, {'command': 'mycmd'}, []), ]) self.assertEqual(result, [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ])
def test_validate_services(self): fuel_managment = fuel.FuelManagement(self.conf) fuel_managment.validate_services()
def test_get_unknown_service(self): fuel_managment = fuel.FuelManagement(self.conf) self.assertRaises(error.ServiceError, fuel_managment.get_service, 'unknown')