mirror of
https://github.com/systemd/systemd.git
synced 2025-03-22 06:50:18 +03:00
tree-wide: implement generic io.systemd.service Varlink interface in all long-running services
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.
This commit is contained in:
parent
fef9eb4e6a
commit
c8127075ae
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user