]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: implement generic io.systemd.service Varlink interface in all long-running...
authorLennart Poettering <lennart@poettering.net>
Tue, 7 Jan 2025 14:21:53 +0000 (15:21 +0100)
committerLennart Poettering <lennart@poettering.net>
Sat, 18 Jan 2025 22:24:29 +0000 (23:24 +0100)
Given we have the generic interface, let's hook it up everywhere.

This doesnt bother with the Reload() call usually, since that's more
involved, but hooks up the other relevant functions where applicable.

src/core/core-varlink.c
src/home/homed-manager.c
src/hostname/hostnamed.c
src/import/importd.c
src/journal/journald-server.c
src/login/logind-varlink.c
src/machine/machined-varlink.c
src/network/networkd-manager-varlink.c
src/oom/oomd-manager.c
src/resolve/resolved-varlink.c

index 4f0563a1c09e25400579e2e0c4ce4128f018f615..92cfd36e7186923ef945966f8a5d50bbf6ee2c5d 100644 (file)
@@ -10,6 +10,7 @@
 #include "varlink-internal.h"
 #include "varlink-io.systemd.UserDatabase.h"
 #include "varlink-io.systemd.ManagedOOM.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 typedef struct LookupParameters {
@@ -589,7 +590,8 @@ int manager_setup_varlink_server(Manager *m) {
         r = sd_varlink_server_add_interface_many(
                         s,
                         &vl_interface_io_systemd_UserDatabase,
-                        &vl_interface_io_systemd_ManagedOOM);
+                        &vl_interface_io_systemd_ManagedOOM,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_debug_errno(r, "Failed to add interfaces to varlink server: %m");
 
@@ -598,7 +600,9 @@ int manager_setup_varlink_server(Manager *m) {
                         "io.systemd.UserDatabase.GetUserRecord",  vl_method_get_user_record,
                         "io.systemd.UserDatabase.GetGroupRecord", vl_method_get_group_record,
                         "io.systemd.UserDatabase.GetMemberships", vl_method_get_memberships,
-                        "io.systemd.ManagedOOM.SubscribeManagedOOMCGroups", vl_method_subscribe_managed_oom_cgroups);
+                        "io.systemd.ManagedOOM.SubscribeManagedOOMCGroups", vl_method_subscribe_managed_oom_cgroups,
+                        "io.systemd.service.Ping", varlink_method_ping,
+                        "io.systemd.service.GetEnvironment", varlink_method_get_environment);
         if (r < 0)
                 return log_debug_errno(r, "Failed to register varlink methods: %m");
 
index bb4ad1f99f4353ae22603ee98b7b0ee407458103..a0d38eb7014a18723a6798be628341f5c9ac34d5 100644 (file)
@@ -54,6 +54,7 @@
 #include "user-record-util.h"
 #include "user-record.h"
 #include "user-util.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-io.systemd.UserDatabase.h"
 #include "varlink-util.h"
 
@@ -1012,7 +1013,10 @@ static int manager_bind_varlink(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate varlink server: %m");
 
-        r = sd_varlink_server_add_interface(m->varlink_server, &vl_interface_io_systemd_UserDatabase);
+        r = sd_varlink_server_add_interface_many(
+                        m->varlink_server,
+                        &vl_interface_io_systemd_UserDatabase,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add UserDatabase interface to varlink server: %m");
 
@@ -1020,7 +1024,10 @@ static int manager_bind_varlink(Manager *m) {
                         m->varlink_server,
                         "io.systemd.UserDatabase.GetUserRecord",  vl_method_get_user_record,
                         "io.systemd.UserDatabase.GetGroupRecord", vl_method_get_group_record,
-                        "io.systemd.UserDatabase.GetMemberships", vl_method_get_memberships);
+                        "io.systemd.UserDatabase.GetMemberships", vl_method_get_memberships,
+                        "io.systemd.service.Ping",                varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",         varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment",      varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");
 
index 2af9c68d988c39cb25cfc28f14aba1c25ddc5ca2..a4549da8268a22237156187c1f78dfb6dce4c2c7 100644 (file)
@@ -42,6 +42,7 @@
 #include "user-util.h"
 #include "utf8.h"
 #include "varlink-io.systemd.Hostname.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 #include "virt.h"
 
@@ -1771,13 +1772,19 @@ static int connect_varlink(Context *c) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate Varlink server: %m");
 
-        r = sd_varlink_server_add_interface(c->varlink_server, &vl_interface_io_systemd_Hostname);
+        r = sd_varlink_server_add_interface_many(
+                        c->varlink_server,
+                        &vl_interface_io_systemd_Hostname,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Hostname interface to Varlink server: %m");
 
         r = sd_varlink_server_bind_method_many(
                         c->varlink_server,
-                        "io.systemd.Hostname.Describe", vl_method_describe);
+                        "io.systemd.Hostname.Describe",      vl_method_describe,
+                        "io.systemd.service.Ping",           varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",    varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment", varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to bind Varlink method calls: %m");
 
index ea8257a833dfb519f57e2a2fef8447f6083b3f85..72c0e4a95a8f1e96400d2b71ffb7c45ca6a2a11c 100644 (file)
@@ -42,6 +42,7 @@
 #include "syslog-util.h"
 #include "user-util.h"
 #include "varlink-io.systemd.Import.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 #include "web-util.h"
 
@@ -1979,14 +1980,20 @@ static int manager_connect_varlink(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate varlink server object: %m");
 
-        r = sd_varlink_server_add_interface(m->varlink_server, &vl_interface_io_systemd_Import);
+        r = sd_varlink_server_add_interface_many(
+                        m->varlink_server,
+                        &vl_interface_io_systemd_Import,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Import interface to varlink server: %m");
 
         r = sd_varlink_server_bind_method_many(
                         m->varlink_server,
-                        "io.systemd.Import.ListTransfers", vl_method_list_transfers,
-                        "io.systemd.Import.Pull",          vl_method_pull);
+                        "io.systemd.Import.ListTransfers",   vl_method_list_transfers,
+                        "io.systemd.Import.Pull",            vl_method_pull,
+                        "io.systemd.service.Ping",           varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",    varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment", varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to bind Varlink method calls: %m");
 
index 8fcfa0c57bbbc03623b0ddfee5c0b187490bb24f..3469a90fefa0e91b603c6c3ccc72273286cd0308 100644 (file)
@@ -64,6 +64,7 @@
 #include "uid-classification.h"
 #include "user-util.h"
 #include "varlink-io.systemd.Journal.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 #define USER_JOURNALS_MAX 1024
@@ -2334,16 +2335,22 @@ static int server_open_varlink(Server *s, const char *socket, int fd) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate varlink server object: %m");
 
-        r = sd_varlink_server_add_interface(s->varlink_server, &vl_interface_io_systemd_Journal);
+        r = sd_varlink_server_add_interface_many(
+                        s->varlink_server,
+                        &vl_interface_io_systemd_Journal,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Journal interface to varlink server: %m");
 
         r = sd_varlink_server_bind_method_many(
                         s->varlink_server,
-                        "io.systemd.Journal.Synchronize",   vl_method_synchronize,
-                        "io.systemd.Journal.Rotate",        vl_method_rotate,
-                        "io.systemd.Journal.FlushToVar",    vl_method_flush_to_var,
-                        "io.systemd.Journal.RelinquishVar", vl_method_relinquish_var);
+                        "io.systemd.Journal.Synchronize",    vl_method_synchronize,
+                        "io.systemd.Journal.Rotate",         vl_method_rotate,
+                        "io.systemd.Journal.FlushToVar",     vl_method_flush_to_var,
+                        "io.systemd.Journal.RelinquishVar",  vl_method_relinquish_var,
+                        "io.systemd.service.Ping",           varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",    varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment", varlink_method_get_environment);
         if (r < 0)
                 return r;
 
index a8a2542e184daa174f514f7bec9a5459e01aafa7..a757033a55f4451ae4ff255c487ec11239c14044 100644 (file)
@@ -10,6 +10,7 @@
 #include "terminal-util.h"
 #include "user-util.h"
 #include "varlink-io.systemd.Login.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 static int manager_varlink_get_session_by_peer(
@@ -355,14 +356,20 @@ int manager_varlink_init(Manager *m) {
 
         sd_varlink_server_set_userdata(s, m);
 
-        r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_Login);
+        r = sd_varlink_server_add_interface_many(
+                        s,
+                        &vl_interface_io_systemd_Login,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Login interface to varlink server: %m");
 
         r = sd_varlink_server_bind_method_many(
                         s,
-                        "io.systemd.Login.CreateSession",  vl_method_create_session,
-                        "io.systemd.Login.ReleaseSession", vl_method_release_session);
+                        "io.systemd.Login.CreateSession",    vl_method_create_session,
+                        "io.systemd.Login.ReleaseSession",   vl_method_release_session,
+                        "io.systemd.service.Ping",           varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",    varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment", varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");
 
index dc293f5895814e40f80d50fdb06bd0f0b1c581e7..5beec14ccd30186735a85e3085e765451a0f63a0 100644 (file)
@@ -17,6 +17,7 @@
 #include "varlink-io.systemd.Machine.h"
 #include "varlink-io.systemd.MachineImage.h"
 #include "varlink-io.systemd.UserDatabase.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 typedef struct LookupParameters {
@@ -776,7 +777,8 @@ static int manager_varlink_init_machine(Manager *m) {
         r = sd_varlink_server_add_interface_many(
                         s,
                         &vl_interface_io_systemd_Machine,
-                        &vl_interface_io_systemd_MachineImage);
+                        &vl_interface_io_systemd_MachineImage,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Machine and MachineImage interfaces to varlink server: %m");
 
@@ -798,7 +800,10 @@ static int manager_varlink_init_machine(Manager *m) {
                         "io.systemd.MachineImage.Update",       vl_method_update_image,
                         "io.systemd.MachineImage.Clone",        vl_method_clone_image,
                         "io.systemd.MachineImage.Remove",       vl_method_remove_image,
-                        "io.systemd.MachineImage.SetPoolLimit", vl_method_set_pool_limit);
+                        "io.systemd.MachineImage.SetPoolLimit", vl_method_set_pool_limit,
+                        "io.systemd.service.Ping",              varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",       varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment",    varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");
 
index b2a196c5fc392f6d9ee01be044a9f6dc60530639..6206fb6e448fa3b9a5fbc319bf2b85a354aab3e3 100644 (file)
@@ -12,6 +12,7 @@
 #include "networkd-manager-varlink.h"
 #include "stat-util.h"
 #include "varlink-io.systemd.Network.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 static int vl_method_get_states(sd_varlink *link, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
@@ -269,16 +270,22 @@ int manager_connect_varlink(Manager *m) {
 
         (void) sd_varlink_server_set_description(s, "varlink-api-network");
 
-        r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_Network);
+        r = sd_varlink_server_add_interface_many(
+                        s,
+                        &vl_interface_io_systemd_Network,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Network interface to varlink server: %m");
 
         r = sd_varlink_server_bind_method_many(
                         s,
-                        "io.systemd.Network.GetStates", vl_method_get_states,
-                        "io.systemd.Network.GetNamespaceId", vl_method_get_namespace_id,
-                        "io.systemd.Network.GetLLDPNeighbors", vl_method_get_lldp_neighbors,
-                        "io.systemd.Network.SetPersistentStorage", vl_method_set_persistent_storage);
+                        "io.systemd.Network.GetStates",            vl_method_get_states,
+                        "io.systemd.Network.GetNamespaceId",       vl_method_get_namespace_id,
+                        "io.systemd.Network.GetLLDPNeighbors",     vl_method_get_lldp_neighbors,
+                        "io.systemd.Network.SetPersistentStorage", vl_method_set_persistent_storage,
+                        "io.systemd.service.Ping",                 varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",          varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment",       varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");
 
index ce3674365a34d94a78f34d74bc2202082145d491..352d558281cf27b2a622e18e73b6353fb182879d 100644 (file)
@@ -20,6 +20,7 @@
 #include "path-util.h"
 #include "percent-util.h"
 #include "varlink-io.systemd.oom.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 typedef struct ManagedOOMMessage {
@@ -746,13 +747,21 @@ static int manager_varlink_init(Manager *m, int fd) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate varlink server object: %m");
 
-        r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_oom);
+        r = sd_varlink_server_add_interface_many(
+                        s,
+                        &vl_interface_io_systemd_oom,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
-                return log_error_errno(r, "Failed to add oom interface to varlink server: %m");
+                return log_error_errno(r, "Failed to add Varlink interfaces to varlink server: %m");
 
-        r = sd_varlink_server_bind_method(s, "io.systemd.oom.ReportManagedOOMCGroups", process_managed_oom_request);
+        r = sd_varlink_server_bind_method_many(
+                        s,
+                        "io.systemd.oom.ReportManagedOOMCGroups", process_managed_oom_request,
+                        "io.systemd.service.Ping",                varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",         varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment",      varlink_method_get_environment);
         if (r < 0)
-                return log_error_errno(r, "Failed to register varlink method: %m");
+                return log_error_errno(r, "Failed to register varlink methods: %m");
 
         if (fd < 0)
                 r = sd_varlink_server_listen_address(s, VARLINK_ADDR_PATH_MANAGED_OOM_USER, 0666);
index 107f722e7d87ba138dfa6071a6c524466da2556d..c30a2a3feacbf8f0ea1421984b8de682a0c7136f 100644 (file)
@@ -9,6 +9,7 @@
 #include "socket-netlink.h"
 #include "varlink-io.systemd.Resolve.h"
 #include "varlink-io.systemd.Resolve.Monitor.h"
+#include "varlink-io.systemd.service.h"
 #include "varlink-util.h"
 
 typedef struct LookupParameters {
@@ -1410,7 +1411,10 @@ static int varlink_main_server_init(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to allocate varlink server object: %m");
 
-        r = sd_varlink_server_add_interface(s, &vl_interface_io_systemd_Resolve);
+        r = sd_varlink_server_add_interface_many(
+                        s,
+                        &vl_interface_io_systemd_Resolve,
+                        &vl_interface_io_systemd_service);
         if (r < 0)
                 return log_error_errno(r, "Failed to add Resolve interface to varlink server: %m");
 
@@ -1419,7 +1423,10 @@ static int varlink_main_server_init(Manager *m) {
                         "io.systemd.Resolve.ResolveHostname", vl_method_resolve_hostname,
                         "io.systemd.Resolve.ResolveAddress",  vl_method_resolve_address,
                         "io.systemd.Resolve.ResolveService",  vl_method_resolve_service,
-                        "io.systemd.Resolve.ResolveRecord",   vl_method_resolve_record);
+                        "io.systemd.Resolve.ResolveRecord",   vl_method_resolve_record,
+                        "io.systemd.service.Ping",            varlink_method_ping,
+                        "io.systemd.service.SetLogLevel",     varlink_method_set_log_level,
+                        "io.systemd.service.GetEnvironment",  varlink_method_get_environment);
         if (r < 0)
                 return log_error_errno(r, "Failed to register varlink methods: %m");