コード例 #1
0
def check_time_service():
    """
    Check time service
    """
    task_inst = task.TaskCheck("Checking time service")
    with task_inst.run():
        timekeepers = ('chronyd.service', 'ntp.service', 'ntpd.service')
        timekeeper = None
        for tk in timekeepers:
            if crmshutils.service_is_available(tk):
                timekeeper = tk
                break
        else:
            task_inst.warn("No NTP service found.")
            return

        task_inst.info("{} is available".format(timekeeper))
        if crmshutils.service_is_enabled(timekeeper):
            task_inst.info("{} is enabled".format(timekeeper))
        else:
            task_inst.warn("{} is disabled".format(timekeeper))
        if crmshutils.service_is_active(timekeeper):
            task_inst.info("{} is active".format(timekeeper))
        else:
            task_inst.warn("{} is not active".format(timekeeper))
コード例 #2
0
def check_fencing():
    """
    Check STONITH/Fence:
      Whether stonith is enabled
      Whether stonith resource is configured and running
    """
    task_inst = task.TaskCheck("Checking STONITH/Fence")
    with task_inst.run():
        if not utils.FenceInfo().fence_enabled:
            task_inst.warn("stonith is disabled")
            return

        task_inst.info("stonith is enabled")
        rc, outp, _ = crmshutils.get_stdout_stderr(
            "crm_mon -r1 | grep '(stonith:.*):'")
        if rc != 0:
            task_inst.warn("No stonith resource configured!")
            return

        res = re.search(r'([^\s]+)\s+\(stonith:(.*)\):\s+(\w+)', outp)
        res_name, res_agent, res_state = res.groups()
        common_msg = "stonith resource {}({})".format(res_name, res_agent)
        state_msg = "{} is {}".format(common_msg, res_state)

        task_inst.info("{} is configured".format(common_msg))
        if res_state == "Started":
            task_inst.info(state_msg)
        else:
            task_inst.warn(state_msg)

        if re.search(r'sbd$', res_agent):
            if crmshutils.service_is_active("sbd"):
                task_inst.info("sbd service is running")
            else:
                task_inst.warn("sbd service is not running!")
コード例 #3
0
ファイル: utils.py プロジェクト: petrpavlu/crmsh
def check_service_state(context, service_name, state, addr):
    if state not in ["started", "stopped"]:
        context.logger.error("\nService state should be \"started/stopped\"\n")
        context.failed = True

    state_dict = {"started": True, "stopped": False}

    remote_addr = None if addr == me() else addr
    return utils.service_is_active(service_name,
                                   remote_addr) is state_dict[state]
コード例 #4
0
 def task_pre_check(self, need_fence=True):
     """
     Prerequisite check
       * pacemaker.service is active
       * stonith is enabled
     """
     if not crmshutils.service_is_active("pacemaker.service"):
         raise TaskError("Cluster not running!")
     if need_fence:
         self.get_fence_info()
         if not self.fence_enabled:
             raise TaskError("Require stonith enabled")
コード例 #5
0
 def do_block(self):
     """
     Context manager to block and unblock ip/ports
     """
     self.firewalld_enabled = crmshutils.service_is_active("firewalld.service")
     if self.firewalld_enabled:
         self.do_block_firewalld()
     else:
         self.do_block_iptables()
     try:
         yield
     finally:
         self.un_block()
コード例 #6
0
def check_firewall():
    """
    Check the firewall status
    """
    task_inst = task.TaskCheck("Checking firewall")
    with task_inst.run():
        for item in ("firewalld", "SuSEfirewall2"):
            if crmshutils.package_is_installed(item):
                task_inst.info("{}.service is available".format(item))
                if crmshutils.service_is_active(item):
                    task_inst.info("{}.service is active".format(item))
                    check_port_open(task_inst, item)
                else:
                    task_inst.warn("{}.service is not active".format(item))
                break
        else:
            task_inst.warn("Failed to detect firewall")
コード例 #7
0
def check_cluster_service(quiet=False):
    """
    Check service status of pacemaker/corosync
    """
    task_inst = task.TaskCheck("Checking cluster service", quiet=quiet)
    with task_inst.run():
        if crmshutils.service_is_enabled("pacemaker"):
            task_inst.info("pacemaker.service is enabled")
        else:
            task_inst.warn("pacemaker.service is disabled")

        if crmshutils.service_is_enabled("corosync"):
            task_inst.warn("corosync.service is enabled")

        for s in ("corosync", "pacemaker"):
            if crmshutils.service_is_active(s):
                task_inst.info("{}.service is running".format(s))
            else:
                task_inst.error("{}.service is not running!".format(s))
        return task_inst.passed