]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: move ShowStatus/Log* from runtime to context
authorIvan Kruglov <mail@ikruglov.com>
Wed, 9 Jul 2025 13:00:04 +0000 (06:00 -0700)
committerIvan Kruglov <mail@ikruglov.com>
Thu, 10 Jul 2025 19:08:11 +0000 (21:08 +0200)
src/core/varlink-manager.c
src/shared/varlink-io.systemd.Manager.c

index 65b4723f14b53f474656585859257d75111a7ff9..a6a89488a40c86b66ba31f934b4f9c1818b73baa 100644 (file)
@@ -39,11 +39,41 @@ static int manager_environment_build_json(sd_json_variant **ret, const char *nam
         return sd_json_variant_new_array_strv(ret, l);
 }
 
+static int log_level_build_json(sd_json_variant **ret, const char *name, void *userdata) {
+        _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
+        int log_max_level = log_get_max_level();
+        int r;
+
+        assert(ret);
+
+        for (LogTarget log_target = 0; log_target < _LOG_TARGET_SINGLE_MAX; log_target++) {
+                _cleanup_free_ char *log_level_string = NULL;
+
+                int target_max_level = log_get_target_max_level(log_target);
+                const char *log_target_string = log_target_to_string(log_target);
+
+                int log_level = MIN(log_max_level, target_max_level);
+                r = log_level_to_string_alloc(log_level, &log_level_string);
+                if (r < 0)
+                        return r;
+
+                r = sd_json_variant_set_field_string(&v, log_target_string, log_level_string);
+                if (r < 0)
+                        return r;
+        }
+
+        *ret = TAKE_PTR(v);
+        return 0;
+}
+
 static int manager_context_build_json(sd_json_variant **ret, const char *name, void *userdata) {
         Manager *m = ASSERT_PTR(userdata);
 
         return sd_json_buildo(
                         ASSERT_PTR(ret),
+                        SD_JSON_BUILD_PAIR_BOOLEAN("ShowStatus", manager_get_show_status_on(m)),
+                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("LogLevel", log_level_build_json, m),
+                        SD_JSON_BUILD_PAIR_STRING("LogTarget", log_target_to_string(log_get_target())),
                         JSON_BUILD_PAIR_CALLBACK_NON_NULL("Environment", manager_environment_build_json, m),
                         SD_JSON_BUILD_PAIR_STRING("DefaultStandardOutput", exec_output_to_string(m->defaults.std_output)),
                         SD_JSON_BUILD_PAIR_STRING("DefaultStandardError", exec_output_to_string(m->defaults.std_error)),
@@ -76,33 +106,6 @@ static int manager_context_build_json(sd_json_variant **ret, const char *name, v
                         SD_JSON_BUILD_PAIR_STRING("CtrlAltDelBurstAction", emergency_action_to_string(m->cad_burst_action)));
 }
 
-static int log_level_build_runtime_json(sd_json_variant **ret, const char *name, void *userdata) {
-        _cleanup_(sd_json_variant_unrefp) sd_json_variant *v = NULL;
-        int log_max_level = log_get_max_level();
-        int r;
-
-        assert(ret);
-
-        for (LogTarget log_target = 0; log_target < _LOG_TARGET_SINGLE_MAX; log_target++) {
-                _cleanup_free_ char *log_level_string = NULL;
-
-                int target_max_level = log_get_target_max_level(log_target);
-                const char *log_target_string = log_target_to_string(log_target);
-
-                int log_level = MIN(log_max_level, target_max_level);
-                r = log_level_to_string_alloc(log_level, &log_level_string);
-                if (r < 0)
-                        return r;
-
-                r = sd_json_variant_set_field_string(&v, log_target_string, log_level_string);
-                if (r < 0)
-                        return r;
-        }
-
-        *ret = TAKE_PTR(v);
-        return 0;
-}
-
 static int manager_runtime_build_json(sd_json_variant **ret, const char *name, void *userdata) {
         Manager *m = ASSERT_PTR(userdata);
         dual_timestamp watchdog_last_ping;
@@ -141,9 +144,6 @@ static int manager_runtime_build_json(sd_json_variant **ret, const char *name, v
                 JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL("InitRDGeneratorsFinishTimestamp", &m->timestamps[MANAGER_TIMESTAMP_INITRD_GENERATORS_FINISH]),
                 JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL("InitRDUnitsLoadStartTimestamp", &m->timestamps[MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_START]),
                 JSON_BUILD_PAIR_DUAL_TIMESTAMP_NON_NULL("InitRDUnitsLoadFinishTimestamp", &m->timestamps[MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_FINISH]),
-                SD_JSON_BUILD_PAIR_BOOLEAN("ShowStatus", manager_get_show_status_on(m)),
-                JSON_BUILD_PAIR_CALLBACK_NON_NULL("LogLevel", log_level_build_runtime_json, m),
-                SD_JSON_BUILD_PAIR_STRING("LogTarget", log_target_to_string(log_get_target())),
                 SD_JSON_BUILD_PAIR_UNSIGNED("NNames", hashmap_size(m->units)),
                 SD_JSON_BUILD_PAIR_UNSIGNED("NFailedUnits", set_size(m->failed_units)),
                 SD_JSON_BUILD_PAIR_UNSIGNED("NJobs", hashmap_size(m->jobs)),
index 7a31f42559e0bdab77e0416e307d508ac5d929c7..551d2d592e96e6552514d0c4b0f282e43bd60dcf 100644 (file)
@@ -20,6 +20,12 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE(
 
 static SD_VARLINK_DEFINE_STRUCT_TYPE(
                 ManagerContext,
+                SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
+                SD_VARLINK_DEFINE_FIELD(ShowStatus, SD_VARLINK_BOOL, 0),
+                SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
+                SD_VARLINK_DEFINE_FIELD_BY_TYPE(LogLevel, LogLevelStruct, 0),
+                SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
+                SD_VARLINK_DEFINE_FIELD(LogTarget, SD_VARLINK_STRING, 0),
                 SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#ManagerEnvironment="),
                 SD_VARLINK_DEFINE_FIELD(Environment, SD_VARLINK_STRING, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
                 SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultStandardOutput="),
@@ -137,12 +143,6 @@ static SD_VARLINK_DEFINE_STRUCT_TYPE(
                 SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDUnitsLoadStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
                 SD_VARLINK_FIELD_COMMENT("Timestamp when the manager first finished loading units in the initrd"),
                 SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDUnitsLoadFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
-                SD_VARLINK_FIELD_COMMENT("The current show status of the manager"),
-                SD_VARLINK_DEFINE_FIELD(ShowStatus, SD_VARLINK_BOOL, 0),
-                SD_VARLINK_FIELD_COMMENT("The current log level of the manager"),
-                SD_VARLINK_DEFINE_FIELD_BY_TYPE(LogLevel, LogLevelStruct, 0),
-                SD_VARLINK_FIELD_COMMENT("The current log target of the manager"),
-                SD_VARLINK_DEFINE_FIELD(LogTarget, SD_VARLINK_STRING, 0),
                 SD_VARLINK_FIELD_COMMENT("The amount of unique unit names currently loaded"),
                 SD_VARLINK_DEFINE_FIELD(NNames, SD_VARLINK_INT, 0),
                 SD_VARLINK_FIELD_COMMENT("The amount of failed units"),