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))
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!")
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]
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")
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()
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")
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