From 55afd775c77851e96cff80881d65501cec6d58ea Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Tue, 4 Jun 2024 20:07:24 +0200 Subject: [PATCH] Systemd communcations bits which will be probably removed --- client.py | 2 +- server.py | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/client.py b/client.py index 9f215f7..40d54a3 100755 --- a/client.py +++ b/client.py @@ -12,7 +12,7 @@ from typing import Union, Optional, Callable, Dict, List, Set async def main(): - bus = await MessageBus(negotiate_unix_fd=True).connect() + bus = await MessageBus(bus_type=BusType.SYSTEM, negotiate_unix_fd=True).connect() ins = await bus.introspect('cz.ucw.shipcat', '/cz/ucw/ShipCat') diff --git a/server.py b/server.py index d868116..3e06625 100755 --- a/server.py +++ b/server.py @@ -70,7 +70,7 @@ class BusLogic: ) async def loop(self) -> None: - self.bus = await MessageBus(negotiate_unix_fd=True).connect() + self.bus = await MessageBus(bus_type=BusType.SYSTEM, negotiate_unix_fd=True).connect() # Obtain proxy interface for org.freedesktop.DBus dbus_intro = await self.bus.introspect(bus_name='org.freedesktop.DBus', path='/org/freedesktop/DBus') @@ -160,6 +160,32 @@ class BusLogic: async def handle_Check(self, msg: Message) -> Message: [container] = msg.body await self.setup_container(container, msg) + + ins = await self.bus.introspect('org.freedesktop.systemd1', '/org/freedesktop/systemd1') + pxy = self.bus.get_proxy_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1', ins) + pif = pxy.get_interface('org.freedesktop.systemd1.Manager') + p = await pif.call_get_unit('inetd.service') + print(p) + + uns = await self.bus.introspect('org.freedesktop.systemd1', p) + uxy = self.bus.get_proxy_object('org.freedesktop.systemd1', p, uns) + uif = uxy.get_interface('org.freedesktop.systemd1.Unit') + active = await uif.get_active_state() + sub_state = await uif.get_sub_state() + print(active, sub_state) + + await pif.call_subscribe() + + def cb(a, b, c): + self.logger.debug(f'PROP: {a} {b} {c}') + + prif = uxy.get_interface('org.freedesktop.DBus.Properties') + prif.on_properties_changed(cb) + + await asyncio.sleep(60) + + await pif.call_unsubscribe() + return Message.new_method_return(msg) async def handle_Shell(self, msg: Message) -> Message: -- GitLab