feat(dbus): Add dphys-swapfile configuration functionality

Implemented `configure_dphys_swapfile` to manage the dphys-swapfile
service, including automatic swapfile removal when the service is
disabled. Updated feature registry to support dphys-swapfile
configuration.
This commit is contained in:
2025-04-20 16:32:57 +02:00
parent 1ae661a5e9
commit 8d8d3bbae4
2 changed files with 24 additions and 2 deletions

View File

@@ -5,7 +5,13 @@
from collections import namedtuple from collections import namedtuple
from logging import getLogger from logging import getLogger
from .revpi_config import ConfigActions, configure_avahi_daemon, configure_gui, simple_systemd from .revpi_config import (
ConfigActions,
configure_avahi_daemon,
configure_dphys_swapfile,
configure_gui,
simple_systemd,
)
from ..dbus_helper import DbusInterface from ..dbus_helper import DbusInterface
log = getLogger(__name__) log = getLogger(__name__)
@@ -73,7 +79,7 @@ def get_feature(feature: str) -> FeatureFunction:
AVAILABLE_FEATURES = { AVAILABLE_FEATURES = {
"gui": FeatureFunction(configure_gui, []), "gui": FeatureFunction(configure_gui, []),
"revpi-con-can": False, "revpi-con-can": False,
"dphys-swapfile": False, "dphys-swapfile": FeatureFunction(configure_dphys_swapfile, []),
"pimodbus-master": FeatureFunction(simple_systemd, ["pimodbus-master.service"]), "pimodbus-master": FeatureFunction(simple_systemd, ["pimodbus-master.service"]),
"pimodbus-slave": FeatureFunction(simple_systemd, ["pimodbus-slave.service"]), "pimodbus-slave": FeatureFunction(simple_systemd, ["pimodbus-slave.service"]),
"systemd-timesyncd": FeatureFunction(simple_systemd, ["systemd-timesyncd.service"]), "systemd-timesyncd": FeatureFunction(simple_systemd, ["systemd-timesyncd.service"]),

View File

@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# SPDX-FileCopyrightText: 2025 KUNBUS GmbH # SPDX-FileCopyrightText: 2025 KUNBUS GmbH
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
import subprocess
from enum import Enum, IntEnum from enum import Enum, IntEnum
from logging import getLogger from logging import getLogger
from os import X_OK, access from os import X_OK, access
@@ -105,6 +106,21 @@ def configure_avahi_daemon(action: ConfigActions):
return return_value return return_value
def configure_dphys_swapfile(action: ConfigActions):
return_value = simple_systemd(action, "dphys-swapfile.service")
# Post actions for dphys-swapfile
if action is ConfigActions.DISABLE:
# Remove swapfile afer disabling the service unit
subprocess.call(
["/sbin/dphys-swapfile", "uninstall"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
return return_value
def configure_gui(action: ConfigActions): def configure_gui(action: ConfigActions):
gui_available = access("/usr/bin/startx", X_OK) gui_available = access("/usr/bin/startx", X_OK)