From 68b234f35efb3c6b672036bd0434a7e71f8c3b3a Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 15 Feb 2024 13:30:18 +0100 Subject: [PATCH] add PVE::Systemd::is_unit_active Signed-off-by: Wolfgang Bumiller --- src/PVE/Systemd.pm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/PVE/Systemd.pm b/src/PVE/Systemd.pm index 2517d31..07c912e 100644 --- a/src/PVE/Systemd.pm +++ b/src/PVE/Systemd.pm @@ -167,6 +167,23 @@ sub wait_for_unit_removed($;$) { }, $timeout); } +sub is_unit_active($;$) { + my ($unit) = @_; + + my $bus = Net::DBus->system(); + my $reactor = Net::DBus::Reactor->main(); + + my $service = $bus->get_service('org.freedesktop.systemd1'); + my $if = $service->get_object('/org/freedesktop/systemd1', 'org.freedesktop.systemd1.Manager'); + + my $unit_path = eval { $if->GetUnit($unit) } + or return 0; + $if = $service->get_object($unit_path, 'org.freedesktop.systemd1.Unit') + or return 0; + my $state = $if->ActiveState; + return defined($state) && $state eq 'active'; +} + sub read_ini { my ($filename) = @_;