def node_pacemaker_status(lib, argv, dummy_modifiers): """ Internal pcs-pcsd command """ print(json.dumps( lib_pacemaker.get_local_node_status(utils.cmd_runner()) ))
def test_success(self): node_id = "id_1" node_name = "name_1" node_status = self.fixture_get_node_status(node_name, node_id) expected_status = dict(node_status, offline=False) self.fixture_add_node_status( self.fixture_get_node_status("name_2", "id_2")) self.fixture_add_node_status(node_status) self.fixture_add_node_status( self.fixture_get_node_status("name_3", "id_3")) mock_runner = mock.MagicMock(spec_set=CommandRunner) call_list = [ mock.call(self.crm_mon_cmd()), mock.call([self.path("crm_node"), "--cluster-id"]), mock.call( [self.path("crm_node"), "--name-for-id={0}".format(node_id)]), ] return_value_list = [(str(self.status), "", 0), (node_id, "", 0), (node_name, "", 0)] mock_runner.run.side_effect = return_value_list real_status = lib.get_local_node_status(mock_runner) self.assertEqual(len(return_value_list), len(call_list)) self.assertEqual(len(return_value_list), mock_runner.run.call_count) mock_runner.run.assert_has_calls(call_list) self.assertEqual(expected_status, real_status)
def test_error_3(self): node_id = "id_1" node_name = "name_1" node_status = self.fixture_get_node_status(node_name, node_id) self.fixture_add_node_status(node_status) mock_runner = mock.MagicMock(spec_set=CommandRunner) call_list = [ mock.call(self.crm_mon_cmd()), mock.call([self.path("crm_node"), "--cluster-id"]), mock.call( [self.path("crm_node"), "--name-for-id={0}".format(node_id)] ), ] return_value_list = [ (str(self.status), "", 0), (node_id, "", 0), ("(null)", "", 0), ] mock_runner.run.side_effect = return_value_list assert_raise_library_error( lambda: lib.get_local_node_status(mock_runner), ( Severity.ERROR, report_codes.PACEMAKER_LOCAL_NODE_NAME_NOT_FOUND, {"reason": "node name is null"} ) ) self.assertEqual(len(return_value_list), len(call_list)) self.assertEqual(len(return_value_list), mock_runner.run.call_count) mock_runner.run.assert_has_calls(call_list)
def test_error_3(self): node_id = "id_1" node_name = "name_1" node_status = self.fixture_get_node_status(node_name, node_id) self.fixture_add_node_status(node_status) mock_runner = mock.MagicMock(spec_set=CommandRunner) call_list = [ mock.call(self.crm_mon_cmd()), mock.call([self.path("crm_node"), "--cluster-id"]), mock.call( [self.path("crm_node"), "--name-for-id={0}".format(node_id)]), ] return_value_list = [ (str(self.status), "", 0), (node_id, "", 0), ("(null)", "", 0), ] mock_runner.run.side_effect = return_value_list assert_raise_library_error( lambda: lib.get_local_node_status(mock_runner), (Severity.ERROR, report_codes.PACEMAKER_LOCAL_NODE_NAME_NOT_FOUND, { "reason": "node name is null" })) self.assertEqual(len(return_value_list), len(call_list)) self.assertEqual(len(return_value_list), mock_runner.run.call_count) mock_runner.run.assert_has_calls(call_list)
def test_success(self): node_id = "id_1" node_name = "name_1" node_status = self.fixture_get_node_status(node_name, node_id) expected_status = dict(node_status, offline=False) self.fixture_add_node_status( self.fixture_get_node_status("name_2", "id_2") ) self.fixture_add_node_status(node_status) self.fixture_add_node_status( self.fixture_get_node_status("name_3", "id_3") ) mock_runner = mock.MagicMock(spec_set=CommandRunner) call_list = [ mock.call(self.crm_mon_cmd()), mock.call([self.path("crm_node"), "--cluster-id"]), mock.call( [self.path("crm_node"), "--name-for-id={0}".format(node_id)] ), ] return_value_list = [ (str(self.status), "", 0), (node_id, "", 0), (node_name, "", 0) ] mock_runner.run.side_effect = return_value_list real_status = lib.get_local_node_status(mock_runner) self.assertEqual(len(return_value_list), len(call_list)) self.assertEqual(len(return_value_list), mock_runner.run.call_count) mock_runner.run.assert_has_calls(call_list) self.assertEqual(expected_status, real_status)
def test_offline(self): (self.config.runner.pcmk.load_state( stderr="error: Could not connect to cluster (is it running?)", returncode=102)) env = self.env_assist.get_env() real_status = lib.get_local_node_status(env.cmd_runner()) self.assertEqual(dict(offline=True), real_status)
def test_offline(self): expected_stdout = "some info" expected_stderr = "some error" expected_retval = 1 mock_runner = get_runner(expected_stdout, expected_stderr, expected_retval) self.assertEqual({"offline": True}, lib.get_local_node_status(mock_runner)) mock_runner.run.assert_called_once_with(self.crm_mon_cmd())
def node_pacemaker_status(lib, argv, modifiers): """ Internal pcs-pcsd command """ del lib del argv del modifiers print(json.dumps( lib_pacemaker.get_local_node_status(utils.cmd_runner()) ))
def test_invalid_status(self): (self.config.runner.pcmk.load_state(stdout="invalid xml")) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error(report_codes.BAD_CLUSTER_STATE_FORMAT, force_code=None) ], expected_in_processor=False)
def test_offline(self): expected_stdout = "some info" expected_stderr = "some error" expected_retval = 1 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = (expected_stdout, expected_stderr, expected_retval) self.assertEqual({"offline": True}, lib.get_local_node_status(mock_runner)) mock_runner.run.assert_called_once_with(self.crm_mon_cmd())
def test_success(self): (self.config.runner.pcmk.load_state( nodes=[fixture.state_node(i, f"name_{i}") for i in range(1, 4)]).runner.pcmk.local_node_name( node_name="name_2")) env = self.env_assist.get_env() real_status = lib.get_local_node_status(env.cmd_runner()) self.assertEqual( dict(offline=False, **fixture.state_node("2", "name_2")), real_status)
def test_invalid_status(self): expected_stdout = "invalid xml" expected_stderr = "" expected_retval = 0 mock_runner = get_runner(expected_stdout, expected_stderr, expected_retval) assert_raise_library_error( lambda: lib.get_local_node_status(mock_runner), (Severity.ERROR, report_codes.BAD_CLUSTER_STATE_FORMAT, {})) mock_runner.run.assert_called_once_with(self.crm_mon_cmd())
def test_offline(self): (self.config .runner.pcmk.load_state( stderr="error: Could not connect to cluster (is it running?)", returncode=102 ) ) env = self.env_assist.get_env() real_status = lib.get_local_node_status(env.cmd_runner()) self.assertEqual(dict(offline=True), real_status)
def wait_for_local_node_started(stop_at, interval): try: while True: time.sleep(interval) node_status = lib_pacemaker.get_local_node_status( utils.cmd_runner()) if is_node_fully_started(node_status): return 0, "Started" if datetime.datetime.now() > stop_at: return 1, "Waiting timeout" except LibraryError as e: return 1, "Unable to get node status: {0}".format("\n".join( [build_report_message(item) for item in e.args]))
def test_offline_node_name(self): self.config.runner.pcmk.load_state( nodes=[fixture.state_node(i, f"name_{i}") for i in range(1, 4)]) self.config.runner.pcmk.local_node_name( stderr=( "error: Could not connect to controller: Transport endpoint is " "not connected\n"), returncode=_EXITCODE_NOT_CONNECTED, ) env = self.env_assist.get_env() real_status = lib.get_local_node_status(env.cmd_runner()) self.assertEqual(dict(offline=True), real_status)
def test_success(self): (self.config .runner.pcmk.load_state(nodes=[ fixture.state_node(i, f"name_{i}") for i in range(1, 4) ]) .runner.pcmk.local_node_name(node_name="name_2") ) env = self.env_assist.get_env() real_status = lib.get_local_node_status(env.cmd_runner()) self.assertEqual( dict(offline=False, **fixture.state_node("2", "name_2")), real_status )
def test_error_getting_node_name(self): (self.config.runner.pcmk.load_state( nodes=[fixture.state_node(i, f"name_{i}") for i in range(1, 4)]).runner.pcmk.local_node_name( stdout="some info", stderr="some error", returncode=1)) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error(report_codes.PACEMAKER_LOCAL_NODE_NAME_NOT_FOUND, force_code=None, reason="some error\nsome info") ], expected_in_processor=False)
def test_node_not_in_status(self): (self.config.runner.pcmk.load_state( nodes=[fixture.state_node(i, f"name_{i}") for i in range(1, 4)]).runner.pcmk.local_node_name( node_name="name_X")) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error(report_codes.NODE_NOT_FOUND, force_code=None, node="name_X", searched_types=[]) ], expected_in_processor=False)
def test_offline(self): expected_stdout = "some info" expected_stderr = "some error" expected_retval = 1 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = ( expected_stdout, expected_stderr, expected_retval ) self.assertEqual( {"offline": True}, lib.get_local_node_status(mock_runner) ) mock_runner.run.assert_called_once_with(self.crm_mon_cmd())
def test_invalid_status(self): (self.config .runner.pcmk.load_state(stdout="invalid xml") ) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error( report_codes.BAD_CLUSTER_STATE_FORMAT, force_code=None ) ], expected_in_processor=False )
def test_invalid_status(self): expected_stdout = "invalid xml" expected_stderr = "" expected_retval = 0 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = ( expected_stdout, expected_stderr, expected_retval ) assert_raise_library_error( lambda: lib.get_local_node_status(mock_runner), ( Severity.ERROR, report_codes.BAD_CLUSTER_STATE_FORMAT, {} ) ) mock_runner.run.assert_called_once_with(self.crm_mon_cmd())
def test_node_not_in_status(self): (self.config .runner.pcmk.load_state(nodes=[ fixture.state_node(i, f"name_{i}") for i in range(1, 4) ]) .runner.pcmk.local_node_name(node_name="name_X") ) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error( report_codes.NODE_NOT_FOUND, force_code=None, node="name_X", searched_types=[] ) ], expected_in_processor=False )
def test_error_getting_node_name(self): (self.config .runner.pcmk.load_state(nodes=[ fixture.state_node(i, f"name_{i}") for i in range(1, 4) ]) .runner.pcmk.local_node_name( stdout="some info", stderr="some error", returncode=1 ) ) env = self.env_assist.get_env() self.env_assist.assert_raise_library_error( lambda: lib.get_local_node_status(env.cmd_runner()), [ fixture.error( report_codes.PACEMAKER_LOCAL_NODE_NAME_NOT_FOUND, force_code=None, reason="some error\nsome info" ) ], expected_in_processor=False )
def node_pacemaker_status(lib, argv, modifiers): print(json.dumps(lib_pacemaker.get_local_node_status(utils.cmd_runner())))
def node_pacemaker_status(lib, argv, modifiers): print(json.dumps( lib_pacemaker.get_local_node_status(utils.cmd_runner()) ))