diff options
Diffstat (limited to 'linuxnamespaces/systemd/dbussy.py')
-rw-r--r-- | linuxnamespaces/systemd/dbussy.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/linuxnamespaces/systemd/dbussy.py b/linuxnamespaces/systemd/dbussy.py index 77410df..60b74fc 100644 --- a/linuxnamespaces/systemd/dbussy.py +++ b/linuxnamespaces/systemd/dbussy.py @@ -52,6 +52,7 @@ class SystemdJobWaiter: try: return self.jobs_removed[job] except KeyError: + self.jobs_removed.clear() return await asyncio.wait_for(self.job_done, timeout) def __exit__(self, *exc_info: typing.Any) -> None: @@ -72,10 +73,15 @@ async def start_transient_unit( """ bus = await ravel.session_bus_async() with SystemdJobWaiter(bus) as wait: + systemd1 = bus["org.freedesktop.systemd1"]["/org/freedesktop/systemd1"] result = await wait( - bus["org.freedesktop.systemd1"]["/org/freedesktop/systemd1"] - .get_interface("org.freedesktop.systemd1.Manager") - .StartTransientUnit(unitname, "fail", properties, [])[0], + ( + await ( + await systemd1.get_async_interface( + "org.freedesktop.systemd1.Manager" + ) + ).StartTransientUnit(unitname, "fail", properties, []) + )[0], ) if result != "done": raise OSError("StartTransientUnit failed: " + result) |