예제 #1
0
파일: cluster.py 프로젝트: tomjelinek/pcs
 def _process_response(self, response):
     report = response_to_report_item(
         response, severity=ReportItemSeverity.WARNING
     )
     node = response.request.target.label
     if report is not None:
         self._has_failure = True
         self._report(report)
         return self._get_next_list()
     if response.data.strip() == "Cannot initialize CMAP service":
         # corosync is not running on the node, this is OK
         return self._get_next_list()
     try:
         quorum_status = corosync_live.QuorumStatus.from_string(
             response.data
         )
         if not quorum_status.is_quorate:
             return self._get_next_list()
         self._quorum_status = quorum_status
     except corosync_live.QuorumStatusParsingException as e:
         self._has_failure = True
         self._report(
             reports.corosync_quorum_get_status_error(
                 e.reason,
                 node=node,
                 severity=ReportItemSeverity.WARNING,
             )
         )
         return self._get_next_list()
     return []
예제 #2
0
파일: cluster.py 프로젝트: gmelikov/pcs
 def _process_response(self, response):
     report = response_to_report_item(response,
                                      severity=ReportItemSeverity.WARNING)
     node = response.request.target.label
     if report is not None:
         self._has_failure = True
         self._report(report)
         return self._get_next_list()
     if response.data.strip() == "Cannot initialize CMAP service":
         # corosync is not running on the node, this is OK
         return self._get_next_list()
     try:
         quorum_status = corosync_live.QuorumStatus.from_string(
             response.data)
         if not quorum_status.is_quorate:
             return self._get_next_list()
         self._quorum_status = quorum_status
     except corosync_live.QuorumStatusParsingException as e:
         self._has_failure = True
         self._report(
             reports.corosync_quorum_get_status_error(
                 e.reason,
                 node=node,
                 severity=ReportItemSeverity.WARNING,
             ))
         return self._get_next_list()
예제 #3
0
def status_text(lib_env):
    """
    Get quorum runtime status in plain text
    """
    try:
        return corosync_live.get_quorum_status_text(lib_env.cmd_runner())
    except corosync_live.QuorumStatusReadException as e:
        raise LibraryError(reports.corosync_quorum_get_status_error(e.reason))
예제 #4
0
파일: quorum.py 프로젝트: tomjelinek/pcs
def status_text(lib_env):
    """
    Get quorum runtime status in plain text
    """
    try:
        return corosync_live.get_quorum_status_text(lib_env.cmd_runner())
    except corosync_live.QuorumStatusReadException as e:
        raise LibraryError(reports.corosync_quorum_get_status_error(e.reason))
예제 #5
0
파일: live.py 프로젝트: idevat/pcs
def get_quorum_status_text(runner):
    """
    Get runtime quorum status from the local node
    """
    stdout, stderr, retval = runner.run([os.path.join(settings.corosync_binaries, "corosync-quorumtool"), "-p"])
    # retval is 0 on success if node is not in partition with quorum
    # retval is 1 on error OR on success if node has quorum
    if retval not in [0, 1] or stderr.strip():
        raise LibraryError(reports.corosync_quorum_get_status_error(stderr))
    return stdout
예제 #6
0
파일: live.py 프로젝트: rriifftt/pcs
def get_quorum_status_text(runner):
    """
    Get runtime quorum status from the local node
    """
    stdout, stderr, retval = runner.run([
        os.path.join(settings.corosync_binaries, "corosync-quorumtool"), "-p"
    ])
    # retval is 0 on success if node is not in partition with quorum
    # retval is 1 on error OR on success if node has quorum
    if retval not in [0, 1] or stderr.strip():
        raise LibraryError(reports.corosync_quorum_get_status_error(stderr))
    return stdout
예제 #7
0
def get_status_text(runner, verbose=False):
    """
    Get quorum device client runtime status in plain text
    bool verbose get more detailed output
    """
    cmd = [os.path.join(settings.corosync_binaries, "corosync-qdevice-tool"), "-s"]
    if verbose:
        cmd.append("-v")
    stdout, stderr, retval = runner.run(cmd)
    if retval != 0:
        raise LibraryError(reports.corosync_quorum_get_status_error(join_multilines([stderr, stdout])))
    return stdout
예제 #8
0
def get_status_text(runner, verbose=False):
    """
    Get quorum device client runtime status in plain text
    bool verbose get more detailed output
    """
    cmd = [
        os.path.join(settings.corosync_binaries, "corosync-qdevice-tool"), "-s"
    ]
    if verbose:
        cmd.append("-v")
    stdout, stderr, retval = runner.run(cmd)
    if retval != 0:
        raise LibraryError(
            reports.corosync_quorum_get_status_error(
                join_multilines([stderr, stdout])))
    return stdout