summaryrefslogtreecommitdiffstats
path: root/src/rest.c
diff options
context:
space:
mode:
authorOpenGnSys Support Team <soporte-og@soleta.eu>2024-10-31 00:27:57 +0100
committerOpenGnSys Support Team <soporte-og@soleta.eu>2024-10-31 01:18:57 +0100
commit479998d76f805c02e041adb209857d4ca6b3f87f (patch)
treea4f6fb7eaba79bea741f5784616fef19494c9d70 /src/rest.c
parent83b1be65897095cdc51b427ba3e42ae3d8756f32 (diff)
src: add last client command context and use it for image creation
Add last client command context that is used in the request to client. This allows to remove the stub image entry in the database in case that the image creation fails.
Diffstat (limited to 'src/rest.c')
-rw-r--r--src/rest.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/rest.c b/src/rest.c
index 2a8b642..27af4d1 100644
--- a/src/rest.c
+++ b/src/rest.c
@@ -254,7 +254,7 @@ static bool og_client_is_busy(const struct og_client *cli,
int og_send_request(enum og_rest_method method, enum og_cmd_type type,
const struct og_msg_params *params,
- const json_t *data)
+ const json_t *data, const struct og_cmd_ctx *ctx)
{
const char *content_type = "Content-Type: application/json";
char content [OG_MSG_REQUEST_MAXLEN - 700] = {};
@@ -320,6 +320,8 @@ int og_send_request(enum og_rest_method method, enum og_cmd_type type,
continue;
cli->last_cmd.type = type;
+ if (ctx)
+ cli->last_cmd.ctx = *ctx;
}
json_decref((json_t *)data);
@@ -691,7 +693,7 @@ static int og_cmd_run_post(json_t *element, struct og_msg_params *params)
clients = json_copy(element);
json_object_del(clients, "clients");
- return og_send_request(OG_METHOD_POST, OG_CMD_SHELL_RUN, params, clients);
+ return og_send_request(OG_METHOD_POST, OG_CMD_SHELL_RUN, params, clients, NULL);
}
static int og_cmd_run_get(json_t *element, struct og_msg_params *params,
@@ -911,7 +913,7 @@ static int og_cmd_session(json_t *element, struct og_msg_params *params)
clients = json_copy(element);
json_object_del(clients, "clients");
- return og_send_request(OG_METHOD_POST, OG_CMD_SESSION, params, clients);
+ return og_send_request(OG_METHOD_POST, OG_CMD_SESSION, params, clients, NULL);
}
static int og_json_os_array_get(struct og_dbi *dbi, json_t *array, const char *ip)
@@ -1065,7 +1067,7 @@ static int og_cmd_poweroff(json_t *element, struct og_msg_params *params)
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR))
return -1;
- return og_send_request(OG_METHOD_POST, OG_CMD_POWEROFF, params, NULL);
+ return og_send_request(OG_METHOD_POST, OG_CMD_POWEROFF, params, NULL, NULL);
}
static int og_cmd_refresh(json_t *element, struct og_msg_params *params)
@@ -1088,7 +1090,7 @@ static int og_cmd_refresh(json_t *element, struct og_msg_params *params)
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR))
return -1;
- return og_send_request(OG_METHOD_GET, OG_CMD_REFRESH, params, NULL);
+ return og_send_request(OG_METHOD_GET, OG_CMD_REFRESH, params, NULL, NULL);
}
static int og_cmd_reboot(json_t *element, struct og_msg_params *params)
@@ -1111,7 +1113,7 @@ static int og_cmd_reboot(json_t *element, struct og_msg_params *params)
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR))
return -1;
- return og_send_request(OG_METHOD_POST, OG_CMD_REBOOT, params, NULL);
+ return og_send_request(OG_METHOD_POST, OG_CMD_REBOOT, params, NULL, NULL);
}
#define OG_TFTP_TMPL_PATH_UEFI "/opt/opengnsys/tftpboot/grub/templates"
@@ -3146,7 +3148,7 @@ static int og_cmd_stop(json_t *element, struct og_msg_params *params)
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR))
return -1;
- return og_send_request(OG_METHOD_POST, OG_CMD_STOP, params, NULL);
+ return og_send_request(OG_METHOD_POST, OG_CMD_STOP, params, NULL, NULL);
}
static int og_cmd_hardware(json_t *element, struct og_msg_params *params)
@@ -3169,7 +3171,7 @@ static int og_cmd_hardware(json_t *element, struct og_msg_params *params)
if (!og_msg_params_validate(params, OG_REST_PARAM_ADDR))
return -1;
- return og_send_request(OG_METHOD_GET, OG_CMD_HARDWARE, params, NULL);
+ return og_send_request(OG_METHOD_GET, OG_CMD_HARDWARE, params, NULL, NULL);
}
static int og_cmd_get_hardware(json_t *element, struct og_msg_params *params,
@@ -3300,7 +3302,7 @@ static int og_cmd_software(json_t *element, struct og_msg_params *params)
clients = json_copy(element);
json_object_del(clients, "clients");
- return og_send_request(OG_METHOD_GET, OG_CMD_SOFTWARE, params, clients);
+ return og_send_request(OG_METHOD_GET, OG_CMD_SOFTWARE, params, clients, NULL);
}
static int og_cmd_get_software(json_t *element, struct og_msg_params *params,
@@ -3682,6 +3684,7 @@ static int og_cmd_add_image(json_t *element, struct og_msg_params *params,
{
char repository_ip[OG_DB_IP_MAXLEN + 1];
char new_image_id[OG_DB_INT_MAXLEN + 1];
+ struct og_cmd_ctx ctx = {};
struct og_dbi *dbi;
json_t *body;
int err = 0;
@@ -3750,8 +3753,10 @@ static int og_cmd_add_image(json_t *element, struct og_msg_params *params,
json_object_set_new(body, "repository", json_string(repository_ip));
json_object_set_new(body, "backup", json_boolean(params->backup));
+ ctx.image.id = params->image.id;
+
return og_send_request(OG_METHOD_POST, OG_CMD_IMAGE_CREATE, params,
- body);
+ body, &ctx);
}
static int og_cmd_create_image(json_t *element, struct og_msg_params *params)
@@ -3846,7 +3851,7 @@ static int og_cmd_restore_image(json_t *element, struct og_msg_params *params)
json_object_set_new(body, "repository", json_string(repository_ip));
return og_send_request(OG_METHOD_POST, OG_CMD_IMAGE_RESTORE, params,
- body);
+ body, NULL);
}
static int og_cmd_delete_image(json_t *element, struct og_msg_params *params)
@@ -4443,7 +4448,7 @@ static int og_cmd_cache_delete(json_t *element, struct og_msg_params *params,
body = json_copy(element);
json_object_del(body, "clients");
- return og_send_request(OG_METHOD_POST, OG_CMD_CACHE_DELETE, params, body);
+ return og_send_request(OG_METHOD_POST, OG_CMD_CACHE_DELETE, params, body, NULL);
}
static int og_cmd_cache_fetch(json_t *element, struct og_msg_params *params,
@@ -4497,7 +4502,7 @@ static int og_cmd_cache_fetch(json_t *element, struct og_msg_params *params,
json_object_del(body, "clients");
json_object_set_new(body, "repository", json_string(repository_ip));
- return og_send_request(OG_METHOD_POST, OG_CMD_CACHE_FETCH, params, body);
+ return og_send_request(OG_METHOD_POST, OG_CMD_CACHE_FETCH, params, body, NULL);
}
static int og_cmd_setup(json_t *element, struct og_msg_params *params)
@@ -4546,7 +4551,7 @@ static int og_cmd_setup(json_t *element, struct og_msg_params *params)
clients = json_copy(element);
json_object_del(clients, "clients");
- return og_send_request(OG_METHOD_POST, OG_CMD_SETUP, params, clients);
+ return og_send_request(OG_METHOD_POST, OG_CMD_SETUP, params, clients, NULL);
}
static int og_cmd_scope_get(json_t *element, struct og_msg_params *params,