def test_scope_error(self): expected_stdout = "some info" expected_stderr = "some error" expected_retval = 6 scope = "test_scope" 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_cib_xml(mock_runner, scope=scope), ( Severity.ERROR, report_codes.CIB_LOAD_ERROR_SCOPE_MISSING, { "scope": scope, "reason": expected_stderr + "\n" + expected_stdout, } ) ) mock_runner.run.assert_called_once_with( [ self.path("cibadmin"), "--local", "--query", "--scope={0}".format(scope) ] )
def test_error(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 ) assert_raise_library_error( lambda: lib.get_cib_xml(mock_runner), ( Severity.ERROR, report_codes.CIB_LOAD_ERROR, { "reason": expected_stderr + "\n" + expected_stdout, } ) ) mock_runner.run.assert_called_once_with( [self.path("cibadmin"), "--local", "--query"] )
def ensure_cib_version(runner, cib, version, live): """ This method ensures that specified cib is verified by pacemaker with version 'version' or newer. If cib doesn't correspond to this version, method will try to upgrade cib. Returns cib which was verified by pacemaker version 'version' or later. Raises LibraryError on any failure. CommandRunner runner etree cib cib tree tuple version tuple of integers (<major>, <minor>, <revision>) bool live upgrade in a live cluster or not """ current_version = get_pacemaker_version_by_which_cib_was_validated(cib) if current_version >= version: return None if live: upgrade_cib(runner) new_cib_xml = get_cib_xml(runner) else: new_cib_xml = upgrade_cib_file(cib, runner) try: new_cib = parse_cib_xml(new_cib_xml) except (etree.XMLSyntaxError, etree.DocumentInvalid) as e: raise LibraryError(reports.cib_upgrade_failed(str(e))) current_version = get_pacemaker_version_by_which_cib_was_validated(new_cib) if current_version >= version: return new_cib raise LibraryError( reports.unable_to_upgrade_cib_to_required_version( current_version, version))
def run_permission_add(argv): if len(argv) < 4: raise utils.CmdLineInputError() role_id = argv.pop(0) permission_info_list = argv_to_permission_info_list(argv) cib = get_cib(get_cib_xml()) provide_role(cib, role_id) add_permissions_to_role(cib, role_id, permission_info_list) replace_cib_configuration(cib)
def test_success(self): expected_xml = "<xml />" expected_retval = 0 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = (expected_xml, expected_retval) real_xml = lib.get_cib_xml(mock_runner) mock_runner.run.assert_called_once_with( [self.path("cibadmin"), "--local", "--query"] ) self.assertEqual(expected_xml, real_xml)
def test_success(self): expected_stdout = "<xml />" expected_stderr = "" expected_retval = 0 mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = (expected_stdout, expected_stderr, expected_retval) real_xml = lib.get_cib_xml(mock_runner) mock_runner.run.assert_called_once_with( [self.path("cibadmin"), "--local", "--query"]) self.assertEqual(expected_stdout, real_xml)
def run_create_role(argv): if len(argv) < 1: raise utils.CmdLineInputError() role_id = argv.pop(0) description = "" desc_key = 'description=' if argv and argv[0].startswith(desc_key) and len(argv[0]) > len(desc_key): description = argv.pop(0)[len(desc_key):] permission_info_list = argv_to_permission_info_list(argv) cib = get_cib(get_cib_xml()) create_role(cib, role_id, description) add_permissions_to_role(cib, role_id, permission_info_list) replace_cib_configuration(cib)
def test_error(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) assert_raise_library_error( lambda: lib.get_cib_xml(mock_runner), (Severity.ERROR, report_codes.CIB_LOAD_ERROR, { "reason": expected_stderr + "\n" + expected_stdout, })) mock_runner.run.assert_called_once_with( [self.path("cibadmin"), "--local", "--query"])
def test_scope_error(self): expected_stdout = "some info" expected_stderr = "some error" expected_retval = 6 scope = "test_scope" 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_cib_xml(mock_runner, scope=scope), (Severity.ERROR, report_codes.CIB_LOAD_ERROR_SCOPE_MISSING, { "scope": scope, "reason": expected_stderr + "\n" + expected_stdout, })) mock_runner.run.assert_called_once_with([ self.path("cibadmin"), "--local", "--query", "--scope={0}".format(scope) ])
def test_success_scope(self): expected_stdout = "<xml />" expected_stderr = "" expected_retval = 0 scope = "test_scope" mock_runner = mock.MagicMock(spec_set=CommandRunner) mock_runner.run.return_value = ( expected_stdout, expected_stderr, expected_retval ) real_xml = lib.get_cib_xml(mock_runner, scope) mock_runner.run.assert_called_once_with( [ self.path("cibadmin"), "--local", "--query", "--scope={0}".format(scope) ] ) self.assertEqual(expected_stdout, real_xml)
def _get_cib_xml(self): if self.is_cib_live: return get_cib_xml(self.cmd_runner()) else: return self._cib_data