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 node_pacemaker_status(): try: print( json.dumps(lib_pacemaker.get_local_node_status( utils.cmd_runner()))) except LibraryError as e: utils.process_library_reports(e.args)
def cluster_local_node_status(): """ Return the status of the local cluster member. Example of output: { u'resources_running': 10, u'shutdown': False, u'name': 'cluster-node1', u'standby': False, u'standby_onfail': False, u'expected_up': True, u'is_dc': True, u'maintenance': False, u'online': True, u'offline': False, u'type': 'member', u'id': '1', u'pending': False, u'unclean': False } """ try: node_status = lib_pacemaker.get_local_node_status(utils.cmd_runner()) except LibraryError as exc: raise RuntimeError('Unable to get node status: {0}'.format('\n'.join( [item.message for item in exc.args]))) return node_status
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_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 node_pacemaker_status(): try: print(json.dumps( lib_pacemaker.get_local_node_status(utils.cmd_runner()) )) except LibraryError as e: utils.process_library_reports(e.args)
def test_offline(self): expected_error = "some error" expected_retval = 1 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = (expected_error, 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_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): 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_invalid_status(self): expected_xml = "some error" expected_retval = 0 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = (expected_xml, 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())