From 9783a7cdb9295acc42d6d5f5962913f20bc6bc06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jake=20Buchholz=20G=C3=B6kt=C3=BCrk?= Date: Sun, 30 Jan 2022 18:17:42 -0800 Subject: [PATCH] Support Alpine Linux & OpenRC Resolves #50 --- src/mount_efs/__init__.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/mount_efs/__init__.py b/src/mount_efs/__init__.py index 0487ddea..92f44bdb 100755 --- a/src/mount_efs/__init__.py +++ b/src/mount_efs/__init__.py @@ -268,6 +268,7 @@ ROCKY8_RELEASE_NAME = "Rocky Linux release 8" ALMALINUX8_RELEASE_NAME = "AlmaLinux release 8" AMAZON_LINUX_2022_RELEASE_NAME = "Amazon Linux release 2022" +ALPINE_RELEASE_NAME = "Alpine Linux" SKIP_NO_LIBWRAP_RELEASES = [ RHEL8_RELEASE_NAME, @@ -280,6 +281,7 @@ ROCKY8_RELEASE_NAME, AMAZON_LINUX_2022_RELEASE_NAME, ALMALINUX8_RELEASE_NAME, + ALPINE_RELEASE_NAME, ] # Multiplier for max read ahead buffer size @@ -1310,6 +1312,11 @@ def get_init_system(comm_file="/proc/1/comm"): init_system = f.read().strip() except IOError: logging.warning("Unable to read %s", comm_file) + + # OpenRC init system manages services a little differently + if init_system == "init" and os.path.isfile("/sbin/openrc"): + init_system = "openrc-init" + logging.debug("Detected OpenRC init system") else: init_system = "launchd" @@ -1369,6 +1376,24 @@ def start_watchdog(init_system): elif "start" in str(status): logging.debug("%s is already running", WATCHDOG_SERVICE) + elif init_system == "openrc-init": + proc = subprocess.Popen( + ["/sbin/service", WATCHDOG_SERVICE, "status"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + close_fds=True, + ) + status, _ = proc.communicate() + if "stopped" in str(status): + subprocess.Popen( + ["/sbin/service", WATCHDOG_SERVICE, "start"], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + close_fds=True, + ) + elif "started" in str(status): + logging.debug("%s is already running", WATCHDOG_SERVICE) + elif init_system == "systemd": rc = subprocess.call( ["systemctl", "is-active", "--quiet", WATCHDOG_SERVICE], close_fds=True