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_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_start(self, service_name, service_cls, 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) self.assertIsInstance(service, service_cls) service.start() get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd}, []), mock.call(['10.0.0.2', '10.0.0.3'], {'shell': service.START_CMD}), ])
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({ 'address': 'fuel.local', 'username': '******', }) nodes = fuel_managment.get_nodes() result = fuel_managment.execute_on_cloud(nodes.get_ips(), {'command': 'mycmd'}, raise_on_error=False) ansible_runner_inst.execute.assert_has_calls([ mock.call(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'mycmd'}, []), ]) self.assertEqual(result, [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ])
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 = [ [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({ 'address': 'fuel.local', 'username': '******', }) service = fuel_managment.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(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []), ]) hosts = [ node_collection.Host(ip='10.0.0.3', mac='03', fqdn='node-3'), ] self.assertEqual(nodes.hosts, hosts)
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('Node collection is empty', str(exception)) get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd}, []), ])
def test_start(self, service_name, mock_ansible_runner): ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [ [self.fake_ansible_result], [self.fake_node_ip_result], [ fakes.FakeAnsibleResult(payload={'stdout': ''}, status=executor.STATUS_FAILED, 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') ] ] tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf) service = tcp_managment.get_service(service_name) service.start() 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': self.get_nodes_cmd}), mock.call([self.master_host], {'command': self.get_ips_cmd}), mock.call(self.hosts, {'command': cmd}, []), mock.call([self.hosts[1]], {'shell': service.start_cmd}), ])
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], [self.fake_node_ip_result], [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ] ] tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf) nodes = tcp_managment.get_nodes() result = tcp_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': self.get_nodes_cmd}), mock.call([self.master_host], {'command': self.get_ips_cmd}), mock.call(self.hosts, {'command': 'mycmd'}, []), ]) self.assertEqual(result, [ fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''}) ])
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 = [ [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') ] ] tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf) service = tcp_managment.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(['tcp.local'], {'command': self.get_nodes_cmd}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []), ]) hosts = [ node_collection.Host(ip='10.0.0.3', mac='09:7b:74:90:63:c3', fqdn='cmp02.mk20.local'), ] self.assertEqual(nodes.hosts, hosts)
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_start(self, service_name, service_cls, 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') ], [ fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2'), fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.3') ] ] tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf) service = tcp_managment.get_service(service_name) self.assertIsInstance(service, service_cls) service.start() cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call(['tcp.local'], {'command': self.get_nodes_cmd}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []), mock.call(['10.0.0.3'], {'shell': service.START_CMD}), ])
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_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_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.DevStackCloudManagement(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 setUp(self): super(TCPCloudManagementTestCase, self).setUp() self.fake_ansible_result = fakes.FakeAnsibleResult( payload={ 'stdout': 'cmp01.mk20.local:\n' ' eth1:\n' ' hwaddr: 09:7b:74:90:63:c2\n' ' inet:\n' ' - address: 10.0.0.2\n' ' eth2:\n' ' hwaddr: 00:00:00:00:00:02\n' ' inet:\n' ' - address: 192.168.1.2\n' 'cmp02.mk20.local:\n' ' eth1:\n' ' hwaddr: 00:00:00:00:00:03\n' ' inet:\n' ' - address: 192.168.1.3\n' ' eth2:\n' ' hwaddr: 09:7b:74:90:63:c3\n' ' inet:\n' ' - address: 10.0.0.3\n' }) self.fake_node_ip_result = fakes.FakeAnsibleResult( payload={ 'stdout': 'cmp01.mk20.local:\n' ' 10.0.0.2\n' 'cmp02.mk20.local:\n' ' 10.0.0.3\n' }) self.tcp_conf = { 'address': 'tcp.local', 'username': '******', } self.get_nodes_cmd = ( "salt -E '^(?!cfg|mon)' network.interfaces --out=yaml") self.get_ips_cmd = ("salt -E '^(?!cfg|mon)' " "pillar.get _param:single_address --out=yaml") self.master_host = node_collection.Host('tcp.local') self.hosts = [ node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c2', fqdn='cmp01.mk20.local'), node_collection.Host(ip='10.0.0.3', mac='09:7b:74:90:63:c3', fqdn='cmp02.mk20.local'), ]
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.DevStackCloudManagement(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_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': ''}) ], ] tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf) tcp_managment.verify() ansible_runner_inst.execute.assert_has_calls([ mock.call(['tcp.local'], {'command': self.get_nodes_cmd}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'hostname'}), ])
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_no_discovery(self, mock_ansible_runner): address = '10.0.0.10' ansible_result = fakes.FakeAnsibleResult(payload=dict( stdout='openstack.local')) ansible_runner_inst = mock_ansible_runner.return_value ansible_runner_inst.execute.side_effect = [[ansible_result]] cloud = universal.UniversalCloudManagement(dict(address=address)) self.assertRaises(error.OSFError, cloud.verify)
def setUp(self): super(FuelManagementTestCase, self).setUp() self.fake_ansible_result = fakes.FakeAnsibleResult( payload={ 'stdout': '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},' ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]' })
def setUp(self): super(FuelServiceTestCase, self).setUp() self.conf = {'address': 'fuel.local', 'username': '******'} self.fake_ansible_result = fakes.FakeAnsibleResult( payload={ 'stdout': '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},' ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]' })
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_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({ 'address': 'fuel.local', 'username': '******', }) fuel_managment.verify() ansible_runner_inst.execute.assert_has_calls([ mock.call(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'hostname'}), ])
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], [self.fake_node_ip_result], [fakes.FakeAnsibleResult(payload={'stdout': ''}), fakes.FakeAnsibleResult(payload={'stdout': ''})], ] self.tcp_conf['slave_name_regexp'] = '(ctl*|cmp*)' tcp_managment = saltcloud.SaltCloudManagement(self.tcp_conf) tcp_managment.verify() get_nodes_cmd = "salt -E '(ctl*|cmp*)' network.interfaces --out=yaml" get_ips_cmd = ("salt -E '(ctl*|cmp*)' " "pillar.get _param:single_address --out=yaml") ansible_runner_inst.execute.assert_has_calls([ mock.call([self.master_host], {'command': get_nodes_cmd}), mock.call([self.master_host], {'command': get_ips_cmd}), mock.call(self.hosts, {'command': 'hostname'}), ])
def test_unplug(self, service_name, service_cls, 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) self.assertIsInstance(service, service_cls) service.unplug() get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format( service_cls.GREP) ansible_runner_inst.execute.assert_has_calls([ mock.call(['fuel.local'], {'command': 'fuel node --json'}), mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd}, []), mock.call( ['10.0.0.2', '10.0.0.3'], { 'iptables': { 'protocol': service_cls.PORT[0], 'port': service_cls.PORT[1], 'action': 'block', 'service': service_cls.SERVICE_NAME } }), ])
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_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 setUp(self): super(FuelServiceTestCase, self).setUp() self.conf = {'address': 'fuel.local', 'username': '******'} self.fake_ansible_result = fakes.FakeAnsibleResult( payload={ 'stdout': '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},' ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]' }) self.master_host = node_collection.Host('fuel.local') self.hosts = [ node_collection.Host(ip='10.0.0.2', mac='02', fqdn='node-2'), node_collection.Host(ip='10.0.0.3', mac='03', fqdn='node-3'), ]
def test_start(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.DevStackCloudManagement( self.conf) service = devstack_management.get_service(service_name) service.start() 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}, []), ])
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'}, host='10.0.0.2')], ] devstack_management = devstack.DevStackCloudManagement(self.conf) nodes = devstack_management.get_nodes() ansible_runner_inst.execute.assert_called_once_with( [self.host], {'command': 'cat /sys/class/net/eth0/address'}) self.assertIsInstance(nodes, devstack.DevStackNodeCollection) self.assertEqual( [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1', fqdn='')], nodes.hosts)