def test__get_power_status_error(self): info = ssh._parse_driver_info(self.node) self.mox.StubOutWithMock(ssh, "_exec_ssh_command") self.mox.StubOutWithMock(ssh, "_get_hosts_name_for_node") ssh._exec_ssh_command(self.sshclient, info["cmd_set"]["list_running"]).AndReturn( ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}'] ) ssh._get_hosts_name_for_node(self.sshclient, info).AndReturn(None) self.mox.ReplayAll() pstate = ssh._get_power_status(self.sshclient, info) self.assertEqual(pstate, states.ERROR) self.mox.VerifyAll()
def test__get_power_status_error(self): info = ssh._parse_driver_info(self.node) self.mox.StubOutWithMock(ssh, '_exec_ssh_command') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') ssh._exec_ssh_command( self.sshclient, info['cmd_set']['list_running']).AndReturn( ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}']) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn(None) self.mox.ReplayAll() pstate = ssh._get_power_status(self.sshclient, info) self.assertEqual(pstate, states.ERROR) self.mox.VerifyAll()
def test__get_power_status_off(self): info = ssh._parse_driver_info(self.node) self.mox.StubOutWithMock(ssh, '_exec_ssh_command') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') ssh._exec_ssh_command( self.sshclient, info['cmd_set']['list_running']).AndReturn( ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}']) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn("NotNodeName") self.mox.ReplayAll() pstate = ssh._get_power_status(self.sshclient, info) self.assertEqual(pstate, states.POWER_OFF) self.mox.VerifyAll()
def test__get_hosts_name_for_node_match_after_retry(self, exec_ssh_mock): self.config(group='ssh', get_vm_name_attempts=2) self.config(group='ssh', get_vm_name_retry_interval=0) info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"] exec_ssh_mock.side_effect = iter([('NodeName', ''), ('', ''), ('NodeName', ''), ('11:11:11:11:11:11', '')]) ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['list_all']) cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['get_node_macs']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') expected = [ mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec) ] * 2 found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual('NodeName', found_name) self.assertEqual(expected, exec_ssh_mock.call_args_list)
def test__power_off_fail(self): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, "_get_power_status") self.mox.StubOutWithMock(ssh, "_get_hosts_name_for_node") self.mox.StubOutWithMock(ssh, "_exec_ssh_command") ssh._get_power_status(self.sshclient, info).AndReturn(states.POWER_ON) ssh._get_hosts_name_for_node(self.sshclient, info).AndReturn("NodeName") cmd_to_exec = info["cmd_set"]["stop_cmd"] cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName") ssh._exec_ssh_command(self.sshclient, cmd_to_exec).AndReturn(None) ssh._get_power_status(self.sshclient, info).AndReturn(states.POWER_ON) self.mox.ReplayAll() current_state = ssh._power_off(self.sshclient, info) self.assertEqual(current_state, states.ERROR) self.mox.VerifyAll()
def test__power_off_fail(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_get_power_status') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') self.mox.StubOutWithMock(ssh, '_exec_ssh_command') ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_ON) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn("NodeName") cmd_to_exec = info['cmd_set']['stop_cmd'] cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\ AndReturn(None) ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_ON) self.mox.ReplayAll() current_state = ssh._power_off(self.sshclient, info) self.assertEqual(current_state, states.ERROR) self.mox.VerifyAll()
def test__power_off_good(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_get_power_status') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') self.mox.StubOutWithMock(ssh, '_exec_ssh_command') ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_ON) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn("NodeName") cmd_to_exec = info['cmd_set']['stop_cmd'] cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\ AndReturn(None) ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_OFF) self.mox.ReplayAll() current_state = ssh._power_off(self.sshclient, info) self.assertEqual(current_state, states.POWER_OFF) self.mox.VerifyAll()
def test__get_hosts_name_for_node_no_match(self): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "22:22:22:22:22:22"] self.mox.StubOutWithMock(ssh, "_exec_ssh_command") ssh._exec_ssh_command(self.sshclient, info["cmd_set"]["list_all"]).AndReturn(["NodeName"]) cmd_to_exec = info["cmd_set"]["get_node_macs"] cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName") ssh._exec_ssh_command(self.sshclient, cmd_to_exec).AndReturn(["52:54:00:cf:2d:31"]) self.mox.ReplayAll() found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual(found_name, None) self.mox.VerifyAll()
def test__get_hosts_name_for_node_match(self, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] ssh_cmd = "%s %s" % (info["cmd_set"]["base_cmd"], info["cmd_set"]["list_all"]) cmd_to_exec = "%s %s" % (info["cmd_set"]["base_cmd"], info["cmd_set"]["get_node_macs"]) cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName") exec_ssh_mock.side_effect = [("NodeName", ""), ("52:54:00:cf:2d:31", "")] expected = [mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec)] found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual("NodeName", found_name) self.assertEqual(expected, exec_ssh_mock.call_args_list)
def test__get_hosts_name_for_node_no_match(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"] self.mox.StubOutWithMock(ssh, '_exec_ssh_command') ssh._exec_ssh_command(self.sshclient, info['cmd_set']['list_all']).\ AndReturn(['NodeName']) cmd_to_exec = info['cmd_set']['get_node_macs'] cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\ AndReturn(['52:54:00:cf:2d:31']) self.mox.ReplayAll() found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual(found_name, None) self.mox.VerifyAll()
def test__get_hosts_name_for_node_match(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['list_all']) cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['get_node_macs']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') self.exec_ssh_mock.side_effect = [['NodeName'], ['52:54:00:cf:2d:31']] expected = [mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec)] found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual(found_name, 'NodeName') self.assertEqual(self.exec_ssh_mock.call_args_list, expected)
def test__get_hosts_name_for_node_match(self, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['list_all']) cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['get_node_macs']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') exec_ssh_mock.side_effect = [('NodeName', ''), ('52:54:00:cf:2d:31', '')] expected = [mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec)] found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertEqual('NodeName', found_name) self.assertEqual(expected, exec_ssh_mock.call_args_list)
def test__get_hosts_name_for_node_no_match(self, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"] exec_ssh_mock.side_effect = iter([('NodeName', ''), ('52:54:00:cf:2d:31', '')]) ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['list_all']) cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['get_node_macs']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') expected = [mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec)] found_name = ssh._get_hosts_name_for_node(self.sshclient, info) self.assertIsNone(found_name) self.assertEqual(expected, exec_ssh_mock.call_args_list)