コード例 #1
0
ファイル: test_lib_pacemaker.py プロジェクト: idevat/pcs
    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)
            ]
        )
コード例 #2
0
ファイル: test_lib_pacemaker.py プロジェクト: idevat/pcs
    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"]
        )
コード例 #3
0
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))
コード例 #4
0
ファイル: acl.py プロジェクト: johnruemker/pcs
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)
コード例 #5
0
    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)
コード例 #6
0
ファイル: test_lib_pacemaker.py プロジェクト: jmartign/pcs
    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)
コード例 #7
0
ファイル: acl.py プロジェクト: johnruemker/pcs
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)
コード例 #8
0
ファイル: test_lib_pacemaker.py プロジェクト: jmartign/pcs
    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"])
コード例 #9
0
ファイル: test_lib_pacemaker.py プロジェクト: jmartign/pcs
    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)
        ])
コード例 #10
0
ファイル: test_lib_pacemaker.py プロジェクト: idevat/pcs
    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)
コード例 #11
0
ファイル: env.py プロジェクト: dchirikov/pcs
 def _get_cib_xml(self):
     if self.is_cib_live:
         return get_cib_xml(self.cmd_runner())
     else:
         return self._cib_data
コード例 #12
0
ファイル: env.py プロジェクト: jmartign/pcs
 def _get_cib_xml(self):
     if self.is_cib_live:
         return get_cib_xml(self.cmd_runner())
     else:
         return self._cib_data