Mike Degatano 34c394c3d1
Add support for network mounts (#4269)
* Add support for network mounts

* Handle backups and save data

* fix pylint issues
2023-05-01 08:45:52 +02:00

551 lines
15 KiB
Python

"""Mock of systemd unit dbus service."""
from dbus_fast.service import PropertyAccess, dbus_property
from .base import DBusServiceMock
BUS_NAME = "org.freedesktop.systemd1"
DEFAULT_OBJECT_PATH = "/org/freedesktop/systemd1/unit/tmp_2dyellow_2emount"
def setup(object_path: str | None = None) -> DBusServiceMock:
"""Create dbus mock object."""
return SystemdUnit(object_path or DEFAULT_OBJECT_PATH)
# pylint: disable=invalid-name,missing-function-docstring
class SystemdUnit(DBusServiceMock):
"""Systemd Unit mock.
gdbus introspect --system --dest org.freedesktop.systemd1 --object-path /org/freedesktop/systemd1/unit/tmp_2dyellow_2emount
"""
interface = "org.freedesktop.systemd1.Unit"
active_state: list[str] | str = "active"
def __init__(self, object_path: str):
"""Initialize object."""
super().__init__()
self.object_path = object_path
@dbus_property(access=PropertyAccess.READ)
def Id(self) -> "s":
"""Get Id."""
return "tmp-yellow.mount"
@dbus_property(access=PropertyAccess.READ)
def Names(self) -> "as":
"""Get Names."""
return ["tmp-yellow.mount"]
@dbus_property(access=PropertyAccess.READ)
def Following(self) -> "s":
"""Get Following."""
return ""
@dbus_property(access=PropertyAccess.READ)
def Requires(self) -> "as":
"""Get Requires."""
return ["system.slice", "tmp.mount"]
@dbus_property(access=PropertyAccess.READ)
def Requisite(self) -> "as":
"""Get Requisite."""
return []
@dbus_property(access=PropertyAccess.READ)
def Wants(self) -> "as":
"""Get Wants."""
return ["network-online.target"]
@dbus_property(access=PropertyAccess.READ)
def BindsTo(self) -> "as":
"""Get BindsTo."""
return []
@dbus_property(access=PropertyAccess.READ)
def PartOf(self) -> "as":
"""Get PartOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def Upholds(self) -> "as":
"""Get Upholds."""
return []
@dbus_property(access=PropertyAccess.READ)
def RequiredBy(self) -> "as":
"""Get RequiredBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def RequisiteOf(self) -> "as":
"""Get RequisiteOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def WantedBy(self) -> "as":
"""Get WantedBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def BoundBy(self) -> "as":
"""Get BoundBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def UpheldBy(self) -> "as":
"""Get UpheldBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def ConsistsOf(self) -> "as":
"""Get ConsistsOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def Conflicts(self) -> "as":
"""Get Conflicts."""
return ["umount.target"]
@dbus_property(access=PropertyAccess.READ)
def ConflictedBy(self) -> "as":
"""Get ConflictedBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def Before(self) -> "as":
"""Get Before."""
return ["umount.target", "remote-fs.target"]
@dbus_property(access=PropertyAccess.READ)
def After(self) -> "as":
"""Get After."""
return [
"systemd-journald.socket",
"system.slice",
"remote-fs-pre.target",
"network-online.target",
"-.mount",
"network.target",
"tmp.mount",
]
@dbus_property(access=PropertyAccess.READ)
def OnSuccess(self) -> "as":
"""Get OnSuccess."""
return []
@dbus_property(access=PropertyAccess.READ)
def OnSuccessOf(self) -> "as":
"""Get OnSuccessOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def OnFailure(self) -> "as":
"""Get OnFailure."""
return []
@dbus_property(access=PropertyAccess.READ)
def OnFailureOf(self) -> "as":
"""Get OnFailureOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def Triggers(self) -> "as":
"""Get Triggers."""
return []
@dbus_property(access=PropertyAccess.READ)
def TriggeredBy(self) -> "as":
"""Get TriggeredBy."""
return []
@dbus_property(access=PropertyAccess.READ)
def PropagatesReloadTo(self) -> "as":
"""Get PropagatesReloadTo."""
return []
@dbus_property(access=PropertyAccess.READ)
def ReloadPropagatedFrom(self) -> "as":
"""Get ReloadPropagatedFrom."""
return []
@dbus_property(access=PropertyAccess.READ)
def PropagatesStopTo(self) -> "as":
"""Get PropagatesStopTo."""
return []
@dbus_property(access=PropertyAccess.READ)
def StopPropagatedFrom(self) -> "as":
"""Get StopPropagatedFrom."""
return []
@dbus_property(access=PropertyAccess.READ)
def JoinsNamespaceOf(self) -> "as":
"""Get JoinsNamespaceOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def SliceOf(self) -> "as":
"""Get SliceOf."""
return []
@dbus_property(access=PropertyAccess.READ)
def RequiresMountsFor(self) -> "as":
"""Get RequiresMountsFor."""
return ["/tmp"]
@dbus_property(access=PropertyAccess.READ)
def Documentation(self) -> "as":
"""Get Documentation."""
return []
@dbus_property(access=PropertyAccess.READ)
def Description(self) -> "s":
"""Get Description."""
return "/tmp/yellow"
@dbus_property(access=PropertyAccess.READ)
def AccessSELinuxContext(self) -> "s":
"""Get AccessSELinuxContext."""
return ""
@dbus_property(access=PropertyAccess.READ)
def LoadState(self) -> "s":
"""Get LoadState."""
return "loaded"
@dbus_property(access=PropertyAccess.READ)
def ActiveState(self) -> "s":
"""Get ActiveState."""
if isinstance(self.active_state, list):
return self.active_state.pop(0)
return self.active_state
@dbus_property(access=PropertyAccess.READ)
def FreezerState(self) -> "s":
"""Get FreezerState."""
return "running"
@dbus_property(access=PropertyAccess.READ)
def SubState(self) -> "s":
"""Get SubState."""
return "mounted"
@dbus_property(access=PropertyAccess.READ)
def FragmentPath(self) -> "s":
"""Get FragmentPath."""
return "/run/systemd/transient/tmp-yellow.mount"
@dbus_property(access=PropertyAccess.READ)
def SourcePath(self) -> "s":
"""Get SourcePath."""
return ""
@dbus_property(access=PropertyAccess.READ)
def DropInPaths(self) -> "as":
"""Get DropInPaths."""
return []
@dbus_property(access=PropertyAccess.READ)
def UnitFileState(self) -> "s":
"""Get UnitFileState."""
return "transient"
@dbus_property(access=PropertyAccess.READ)
def UnitFilePreset(self) -> "s":
"""Get UnitFilePreset."""
return "enabled"
@dbus_property(access=PropertyAccess.READ)
def StateChangeTimestamp(self) -> "t":
"""Get StateChangeTimestamp."""
return 1682012447583854
@dbus_property(access=PropertyAccess.READ)
def StateChangeTimestampMonotonic(self) -> "t":
"""Get StateChangeTimestampMonotonic."""
return 411597359174
@dbus_property(access=PropertyAccess.READ)
def InactiveExitTimestamp(self) -> "t":
"""Get InactiveExitTimestamp."""
return 1682010434373271
@dbus_property(access=PropertyAccess.READ)
def InactiveExitTimestampMonotonic(self) -> "t":
"""Get InactiveExitTimestampMonotonic."""
return 409584148592
@dbus_property(access=PropertyAccess.READ)
def ActiveEnterTimestamp(self) -> "t":
"""Get ActiveEnterTimestamp."""
return 1682010434467137
@dbus_property(access=PropertyAccess.READ)
def ActiveEnterTimestampMonotonic(self) -> "t":
"""Get ActiveEnterTimestampMonotonic."""
return 409584242457
@dbus_property(access=PropertyAccess.READ)
def ActiveExitTimestamp(self) -> "t":
"""Get ActiveExitTimestamp."""
return 0
@dbus_property(access=PropertyAccess.READ)
def ActiveExitTimestampMonotonic(self) -> "t":
"""Get ActiveExitTimestampMonotonic."""
return 0
@dbus_property(access=PropertyAccess.READ)
def InactiveEnterTimestamp(self) -> "t":
"""Get InactiveEnterTimestamp."""
return 1682010285903114
@dbus_property(access=PropertyAccess.READ)
def InactiveEnterTimestampMonotonic(self) -> "t":
"""Get InactiveEnterTimestampMonotonic."""
return 409435678436
@dbus_property(access=PropertyAccess.READ)
def CanStart(self) -> "b":
"""Get CanStart."""
return True
@dbus_property(access=PropertyAccess.READ)
def CanStop(self) -> "b":
"""Get CanStop."""
return True
@dbus_property(access=PropertyAccess.READ)
def CanReload(self) -> "b":
"""Get CanReload."""
return True
@dbus_property(access=PropertyAccess.READ)
def CanIsolate(self) -> "b":
"""Get CanIsolate."""
return False
@dbus_property(access=PropertyAccess.READ)
def CanClean(self) -> "as":
"""Get CanClean."""
return []
@dbus_property(access=PropertyAccess.READ)
def CanFreeze(self) -> "b":
"""Get CanFreeze."""
return False
@dbus_property(access=PropertyAccess.READ)
def Job(self) -> "(uo)":
"""Get Job."""
return (0, "/")
@dbus_property(access=PropertyAccess.READ)
def StopWhenUnneeded(self) -> "b":
"""Get StopWhenUnneeded."""
return False
@dbus_property(access=PropertyAccess.READ)
def RefuseManualStart(self) -> "b":
"""Get RefuseManualStart."""
return False
@dbus_property(access=PropertyAccess.READ)
def RefuseManualStop(self) -> "b":
"""Get RefuseManualStop."""
return False
@dbus_property(access=PropertyAccess.READ)
def AllowIsolate(self) -> "b":
"""Get AllowIsolate."""
return False
@dbus_property(access=PropertyAccess.READ)
def DefaultDependencies(self) -> "b":
"""Get DefaultDependencies."""
return True
@dbus_property(access=PropertyAccess.READ)
def OnSuccessJobMode(self) -> "s":
"""Get OnSuccessJobMode."""
return "fail"
@dbus_property(access=PropertyAccess.READ)
def OnFailureJobMode(self) -> "s":
"""Get OnFailureJobMode."""
return "replace"
@dbus_property(access=PropertyAccess.READ)
def IgnoreOnIsolate(self) -> "b":
"""Get IgnoreOnIsolate."""
return True
@dbus_property(access=PropertyAccess.READ)
def NeedDaemonReload(self) -> "b":
"""Get NeedDaemonReload."""
return False
@dbus_property(access=PropertyAccess.READ)
def Markers(self) -> "as":
"""Get Markers."""
return []
@dbus_property(access=PropertyAccess.READ)
def JobTimeoutUSec(self) -> "t":
"""Get JobTimeoutUSec."""
return 18446744073709551615
@dbus_property(access=PropertyAccess.READ)
def JobRunningTimeoutUSec(self) -> "t":
"""Get JobRunningTimeoutUSec."""
return 18446744073709551615
@dbus_property(access=PropertyAccess.READ)
def JobTimeoutAction(self) -> "s":
"""Get JobTimeoutAction."""
return "none"
@dbus_property(access=PropertyAccess.READ)
def JobTimeoutRebootArgument(self) -> "s":
"""Get JobTimeoutRebootArgument."""
return ""
@dbus_property(access=PropertyAccess.READ)
def ConditionResult(self) -> "b":
"""Get ConditionResult."""
return True
@dbus_property(access=PropertyAccess.READ)
def AssertResult(self) -> "b":
"""Get AssertResult."""
return True
@dbus_property(access=PropertyAccess.READ)
def ConditionTimestamp(self) -> "t":
"""Get ConditionTimestamp."""
return 1682010434333557
@dbus_property(access=PropertyAccess.READ)
def ConditionTimestampMonotonic(self) -> "t":
"""Get ConditionTimestampMonotonic."""
return 409584108878
@dbus_property(access=PropertyAccess.READ)
def AssertTimestamp(self) -> "t":
"""Get AssertTimestamp."""
return 1682010434333562
@dbus_property(access=PropertyAccess.READ)
def AssertTimestampMonotonic(self) -> "t":
"""Get AssertTimestampMonotonic."""
return 409584108882
@dbus_property(access=PropertyAccess.READ)
def Conditions(self) -> "a(sbbsi)":
"""Get Conditions."""
return []
@dbus_property(access=PropertyAccess.READ)
def Asserts(self) -> "a(sbbsi)":
"""Get Asserts."""
return []
@dbus_property(access=PropertyAccess.READ)
def LoadError(self) -> "(ss)":
"""Get LoadError."""
return ("", "")
@dbus_property(access=PropertyAccess.READ)
def Transient(self) -> "b":
"""Get Transient."""
return True
@dbus_property(access=PropertyAccess.READ)
def Perpetual(self) -> "b":
"""Get Perpetual."""
return False
@dbus_property(access=PropertyAccess.READ)
def StartLimitIntervalUSec(self) -> "t":
"""Get StartLimitIntervalUSec."""
return 10000000
@dbus_property(access=PropertyAccess.READ)
def StartLimitBurst(self) -> "u":
"""Get StartLimitBurst."""
return 5
@dbus_property(access=PropertyAccess.READ)
def StartLimitAction(self) -> "s":
"""Get StartLimitAction."""
return "none"
@dbus_property(access=PropertyAccess.READ)
def FailureAction(self) -> "s":
"""Get FailureAction."""
return "none"
@dbus_property(access=PropertyAccess.READ)
def FailureActionExitStatus(self) -> "i":
"""Get FailureActionExitStatus."""
return -1
@dbus_property(access=PropertyAccess.READ)
def SuccessAction(self) -> "s":
"""Get SuccessAction."""
return "none"
@dbus_property(access=PropertyAccess.READ)
def SuccessActionExitStatus(self) -> "i":
"""Get SuccessActionExitStatus."""
return -1
@dbus_property(access=PropertyAccess.READ)
def RebootArgument(self) -> "s":
"""Get RebootArgument."""
return ""
@dbus_property(access=PropertyAccess.READ)
def InvocationID(self) -> "ay":
"""Get InvocationID."""
return bytes(
[
0xA6,
0xE5,
0x0F,
0x64,
0x3F,
0x1E,
0x45,
0x97,
0xA7,
0x2B,
0x21,
0xA3,
0x34,
0xC0,
0x66,
0x86,
]
)
@dbus_property(access=PropertyAccess.READ)
def CollectMode(self) -> "s":
"""Get CollectMode."""
return "inactive"
@dbus_property(access=PropertyAccess.READ)
def Refs(self) -> "as":
"""Get Refs."""
return []
@dbus_property(access=PropertyAccess.READ)
def ActivationDetails(self) -> "a(ss)":
"""Get ActivationDetails."""
return []