summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOpenGnSys Support Team <soporte-og@soleta.eu>2021-12-22 16:38:27 +0100
committerOpenGnSys Support Team <soporte-og@soleta.eu>2021-12-22 17:30:04 +0100
commit6e709160050187f631d622566e19bec77888bd49 (patch)
tree433c68116acc625e612ea0c52847ab95b4229beb /src
parentfacd0d56e732141efd367343e175de9b6cd407cf (diff)
#915 remove shim code to update database after image restore command
Make direct call to dbi API to update database instead.
Diffstat (limited to 'src')
-rw-r--r--src/client.c47
-rw-r--r--src/ogAdmServer.c41
-rw-r--r--src/ogAdmServer.h1
3 files changed, 26 insertions, 63 deletions
diff --git a/src/client.c b/src/client.c
index a70c9e4..ad4c5d3 100644
--- a/src/client.c
+++ b/src/client.c
@@ -615,12 +615,12 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli)
const char *partition = NULL;
const char *image_id = NULL;
const char *disk = NULL;
- dbi_result query_result;
+ const char *msglog;
struct og_dbi *dbi;
+ dbi_result result;
const char *key;
json_t *value;
int err = 0;
- bool res;
if (json_typeof(data) != JSON_OBJECT)
return -1;
@@ -649,24 +649,23 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli)
return -1;
}
- query_result = dbi_conn_queryf(dbi->conn,
- "SELECT idperfilsoft FROM imagenes "
- " WHERE idimagen='%s'",
- image_id);
- if (!query_result) {
+ result = dbi_conn_queryf(dbi->conn,
+ "SELECT idperfilsoft FROM imagenes "
+ " WHERE idimagen='%s'", image_id);
+ if (!result) {
og_dbi_close(dbi);
syslog(LOG_ERR, "failed to query database\n");
return -1;
}
- if (!dbi_result_next_row(query_result)) {
- dbi_result_free(query_result);
+ if (!dbi_result_next_row(result)) {
+ dbi_result_free(result);
og_dbi_close(dbi);
syslog(LOG_ERR, "software profile does not exist in database\n");
return -1;
}
snprintf(img_legacy.software_id, sizeof(img_legacy.software_id),
- "%d", dbi_result_get_uint(query_result, "idperfilsoft"));
- dbi_result_free(query_result);
+ "%d", dbi_result_get_uint(result, "idperfilsoft"));
+ dbi_result_free(result);
err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr);
if (err < 0) {
@@ -680,18 +679,24 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli)
snprintf(img_legacy.disk, sizeof(img_legacy.disk), "%s", disk);
snprintf(soft_legacy.id, sizeof(soft_legacy.id), "%d", computer.id);
- res = actualizaRestauracionImagen(dbi,
- img_legacy.image_id,
- img_legacy.disk,
- img_legacy.part,
- soft_legacy.id,
- img_legacy.software_id);
- og_dbi_close(dbi);
-
- if (!res) {
- syslog(LOG_ERR, "Problem updating client configuration\n");
+ result = dbi_conn_queryf(dbi->conn,
+ "UPDATE ordenadores_particiones"
+ " SET idimagen=%s, idperfilsoft=%s, fechadespliegue=NOW(),"
+ " revision=(SELECT revision FROM imagenes WHERE idimagen=%s),"
+ " idnombreso=IFNULL((SELECT idnombreso FROM perfilessoft WHERE idperfilsoft=%s),0)"
+ " WHERE idordenador=%s AND numdisk=%s AND numpar=%s",
+ img_legacy.image_id, img_legacy.software_id,
+ img_legacy.image_id, img_legacy.software_id,
+ soft_legacy.id, img_legacy.disk, img_legacy.part);
+ if (!result) {
+ dbi_conn_error(dbi->conn, &msglog);
+ syslog(LOG_ERR, "failed to update database (%s:%d) %s\n",
+ __func__, __LINE__, msglog);
+ og_dbi_close(dbi);
return -1;
}
+ dbi_result_free(result);
+ og_dbi_close(dbi);
return 0;
}
diff --git a/src/ogAdmServer.c b/src/ogAdmServer.c
index 6f6de54..2b64254 100644
--- a/src/ogAdmServer.c
+++ b/src/ogAdmServer.c
@@ -452,47 +452,6 @@ bool actualizaCreacionImagen(struct og_dbi *dbi, char *idi, char *dsk,
}
// ________________________________________________________________________________________________________
-// Función: actualizaRestauracionImagen
-//
-// Descripción:
-// Esta función actualiza la base de datos con el resultado de la restauración de una imagen
-// Parámetros:
-// - db: Objeto base de datos (ya operativo)
-// - tbl: Objeto tabla
-// - idi: Identificador de la imagen
-// - dsk: Disco de donde se restauró
-// - par: Partición de donde se restauró
-// - ido: Identificador del cliente donde se restauró
-// - ifs: Identificador del perfil software contenido en la imagen
-// Devuelve:
-// true: Si el proceso es correcto
-// false: En caso de ocurrir algún error
-// ________________________________________________________________________________________________________
-bool actualizaRestauracionImagen(struct og_dbi *dbi, char *idi,
- char *dsk, char *par, char *ido, char *ifs)
-{
- const char *msglog;
- dbi_result result;
-
- /* Actualizar los datos de la imagen */
- result = dbi_conn_queryf(dbi->conn,
- "UPDATE ordenadores_particiones"
- " SET idimagen=%s, idperfilsoft=%s, fechadespliegue=NOW(),"
- " revision=(SELECT revision FROM imagenes WHERE idimagen=%s),"
- " idnombreso=IFNULL((SELECT idnombreso FROM perfilessoft WHERE idperfilsoft=%s),0)"
- " WHERE idordenador=%s AND numdisk=%s AND numpar=%s", idi, ifs, idi, ifs, ido, dsk, par);
-
- if (!result) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
- dbi_result_free(result);
-
- return true;
-}
-// ________________________________________________________________________________________________________
// Función: actualizaHardware
//
// Descripción:
diff --git a/src/ogAdmServer.h b/src/ogAdmServer.h
index d818289..0768561 100644
--- a/src/ogAdmServer.h
+++ b/src/ogAdmServer.h
@@ -25,7 +25,6 @@ struct og_dbi;
bool actualizaConfiguracion(struct og_dbi *,char* ,int);
bool WakeUp(int, const char *, const char *, const char *, const char *);
bool actualizaCreacionImagen(struct og_dbi *,char*,char*,char*,char*,char*,char*);
-bool actualizaRestauracionImagen(struct og_dbi *,char*,char*,char*,char*,char*);
bool actualizaHardware(struct og_dbi *dbi, char* ,char*,char*,char*);
bool cuestionPerfilHardware(struct og_dbi *dbi,char*,char*,int,char*,char*,int *,int);
bool actualizaSoftware(struct og_dbi *, char* , char* , char*,char*,char*);