#915 remove shim code to update database after image restore command

Make direct call to dbi API to update database instead.
master
OpenGnSys Support Team 2021-12-22 16:38:27 +01:00
parent facd0d56e7
commit 6e70916005
3 changed files with 26 additions and 63 deletions

View File

@ -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;
}

View File

@ -451,47 +451,6 @@ bool actualizaCreacionImagen(struct og_dbi *dbi, char *idi, char *dsk,
return true;
}
// ________________________________________________________________________________________________________
// 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
//

View File

@ -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*);