summaryrefslogtreecommitdiffstats
path: root/src/rest.c
diff options
context:
space:
mode:
authorJose M. Guisado <jguisado@soleta.eu>2021-07-22 14:09:46 +0200
committerOpenGnSys Support Team <soporte-og@soleta.eu>2021-07-22 15:52:12 +0200
commit261d490c4e8ad9b6cee46e82a8ad029eeaf6cd6b (patch)
treeeef5c5974e3c33c26441da9b738b6e6d82fa5112 /src/rest.c
parent33d8cecfe1ce64c517fe995875397b32e534bdb0 (diff)
#1052 Populate session column when adding actions
If the scope of a command, procedure or task is related to a group of computers then actions associated with that schedule can share the same session value. og_dbi_add_action was not initializing session value, as it is only used for visualization purposes in the legacy web interface. This patch enables og_dbi_add_action to populate session column by assigning it the id value of the first action related to the scope. Example: Power off command for a room scope of 4 clients will result in 4 actions, a power off for each client. The first action id will determine the session value for the rest.
Diffstat (limited to 'src/rest.c')
-rw-r--r--src/rest.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rest.c b/src/rest.c
index bb64047..fa35eab 100644
--- a/src/rest.c
+++ b/src/rest.c
@@ -2666,7 +2666,7 @@ static int og_cmd_legacy(const char *input, struct og_cmd *cmd)
return err;
}
-static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *task,
+static int og_dbi_add_action(const struct og_dbi *dbi, struct og_task *task,
struct og_cmd *cmd)
{
char start_date_string[24];
@@ -2692,7 +2692,7 @@ static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *tas
"VALUES (%d, %d, %d, '%s', '%s', %d, %d, '%s', "
"'%s', %d, %d, %d, %d, '%s', %d, %d, %d)",
cmd->client_id, EJECUCION_TAREA, task->task_id,
- "", cmd->ip, 0, task->command_id,
+ "", cmd->ip, task->session, task->command_id,
task->params, start_date_string,
ACCION_INICIADA, ACCION_SINRESULTADO,
task->type_scope, task->scope, "",
@@ -2704,13 +2704,23 @@ static int og_dbi_add_action(const struct og_dbi *dbi, const struct og_task *tas
__func__, __LINE__, msglog);
return -1;
}
+
cmd->id = dbi_conn_sequence_last(dbi->conn, NULL);
+ if (!task->session) {
+ task->session = cmd->id;
+ dbi_result_free(result);
+ result = dbi_conn_queryf(dbi->conn,
+ "UPDATE acciones SET sesion=%d "
+ "WHERE idaccion=%d",
+ task->session, cmd->id);
+ }
+
dbi_result_free(result);
return 0;
}
-static int og_queue_task_command(struct og_dbi *dbi, const struct og_task *task,
+static int og_queue_task_command(struct og_dbi *dbi, struct og_task *task,
char *query)
{
struct og_cmd *cmd;