Skip to content

Commit

Permalink
Set Log Level For The Manager
Browse files Browse the repository at this point in the history
I added public API to the Manager.
Now a user  can use the with sdbus to set new log leve for the manger

Signed-off-by: Artiom Divak <[email protected]>
  • Loading branch information
ArtiomDivak committed Jun 14, 2023
1 parent dc0eeda commit 4251eaa
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
4 changes: 3 additions & 1 deletion data/org.containers.hirte.Manager.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
</method>
<method name="EnableMetrics" />
<method name="DisableMetrics" />

<method name="SetLogLevel">
<arg name="loglevel" type="s" direction="in" />
</method>
<signal name="JobNew">
<arg name="id" type="u" />
<arg name="job" type="o" />
Expand Down
25 changes: 23 additions & 2 deletions src/manager/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -465,9 +465,8 @@ static int manager_method_ping(sd_bus_message *m, UNUSED void *userdata, UNUSED

int r = sd_bus_message_read(m, "s", &arg);
if (r < 0) {
return r;
return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_INVALID_ARGS, "Invalid arguments");
}

return sd_bus_reply_method_return(m, "s", arg);
}

Expand Down Expand Up @@ -812,13 +811,35 @@ static int manager_method_metrics_disable(sd_bus_message *m, void *userdata, UNU
return sd_bus_reply_method_return(m, "");
}

/*************************************************************************
************** org.containers.hirte.Manager.SetLogLevel ***************
************************************************************************/

static int set_log_level(sd_bus_message *m, UNUSED void *userdata, UNUSED sd_bus_error *ret_error) {
const char *level = NULL;

int r = sd_bus_message_read(m, "s", &level);
if (r < 0) {
return sd_bus_reply_method_errorf(
m, SD_BUS_ERROR_FAILED, "Failed to read the parameter: %s", strerror(-r));
}
LogLevel loglevel = string_to_log_level(level);
if (loglevel == LOG_LEVEL_INVALID) {
return sd_bus_reply_method_errorf(m, SD_BUS_ERROR_FAILED, "Invalid input for log level");
}
hirte_log_set_level(loglevel);
hirte_log_infof("Log level changed to %s", level);
return 1;
}

static const sd_bus_vtable manager_vtable[] = {
SD_BUS_VTABLE_START(0),
SD_BUS_METHOD("Ping", "s", "s", manager_method_ping, 0),
SD_BUS_METHOD("ListUnits", "", NODE_AND_UNIT_INFO_STRUCT_ARRAY_TYPESTRING, manager_method_list_units, 0),
SD_BUS_METHOD("ListNodes", "", "a(sos)", manager_method_list_nodes, 0),
SD_BUS_METHOD("GetNode", "s", "o", manager_method_get_node, 0),
SD_BUS_METHOD("CreateMonitor", "", "o", manager_method_create_monitor, 0),
SD_BUS_METHOD("SetLogLevel", "s", "", set_log_level, 0),
SD_BUS_METHOD("EnableMetrics", "", "", manager_method_metrics_enable, 0),
SD_BUS_METHOD("DisableMetrics", "", "", manager_method_metrics_disable, 0),
SD_BUS_SIGNAL_WITH_NAMES("JobNew", "uo", SD_BUS_PARAM(id) SD_BUS_PARAM(job), 0),
Expand Down

0 comments on commit 4251eaa

Please sign in to comment.