mirror of https://git.48k.eu/ogserver
#915 remove shim code to update database after image restore command
Make direct call to dbi API to update database instead.master
parent
facd0d56e7
commit
6e70916005
43
src/client.c
43
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 *partition = NULL;
|
||||||
const char *image_id = NULL;
|
const char *image_id = NULL;
|
||||||
const char *disk = NULL;
|
const char *disk = NULL;
|
||||||
dbi_result query_result;
|
const char *msglog;
|
||||||
struct og_dbi *dbi;
|
struct og_dbi *dbi;
|
||||||
|
dbi_result result;
|
||||||
const char *key;
|
const char *key;
|
||||||
json_t *value;
|
json_t *value;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
bool res;
|
|
||||||
|
|
||||||
if (json_typeof(data) != JSON_OBJECT)
|
if (json_typeof(data) != JSON_OBJECT)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -649,24 +649,23 @@ static int og_resp_image_restore(json_t *data, struct og_client *cli)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
query_result = dbi_conn_queryf(dbi->conn,
|
result = dbi_conn_queryf(dbi->conn,
|
||||||
"SELECT idperfilsoft FROM imagenes "
|
"SELECT idperfilsoft FROM imagenes "
|
||||||
" WHERE idimagen='%s'",
|
" WHERE idimagen='%s'", image_id);
|
||||||
image_id);
|
if (!result) {
|
||||||
if (!query_result) {
|
|
||||||
og_dbi_close(dbi);
|
og_dbi_close(dbi);
|
||||||
syslog(LOG_ERR, "failed to query database\n");
|
syslog(LOG_ERR, "failed to query database\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!dbi_result_next_row(query_result)) {
|
if (!dbi_result_next_row(result)) {
|
||||||
dbi_result_free(query_result);
|
dbi_result_free(result);
|
||||||
og_dbi_close(dbi);
|
og_dbi_close(dbi);
|
||||||
syslog(LOG_ERR, "software profile does not exist in database\n");
|
syslog(LOG_ERR, "software profile does not exist in database\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
snprintf(img_legacy.software_id, sizeof(img_legacy.software_id),
|
snprintf(img_legacy.software_id, sizeof(img_legacy.software_id),
|
||||||
"%d", dbi_result_get_uint(query_result, "idperfilsoft"));
|
"%d", dbi_result_get_uint(result, "idperfilsoft"));
|
||||||
dbi_result_free(query_result);
|
dbi_result_free(result);
|
||||||
|
|
||||||
err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr);
|
err = og_dbi_get_computer_info(dbi, &computer, cli->addr.sin_addr);
|
||||||
if (err < 0) {
|
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(img_legacy.disk, sizeof(img_legacy.disk), "%s", disk);
|
||||||
snprintf(soft_legacy.id, sizeof(soft_legacy.id), "%d", computer.id);
|
snprintf(soft_legacy.id, sizeof(soft_legacy.id), "%d", computer.id);
|
||||||
|
|
||||||
res = actualizaRestauracionImagen(dbi,
|
result = dbi_conn_queryf(dbi->conn,
|
||||||
img_legacy.image_id,
|
"UPDATE ordenadores_particiones"
|
||||||
img_legacy.disk,
|
" SET idimagen=%s, idperfilsoft=%s, fechadespliegue=NOW(),"
|
||||||
img_legacy.part,
|
" revision=(SELECT revision FROM imagenes WHERE idimagen=%s),"
|
||||||
soft_legacy.id,
|
" idnombreso=IFNULL((SELECT idnombreso FROM perfilessoft WHERE idperfilsoft=%s),0)"
|
||||||
img_legacy.software_id);
|
" 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);
|
og_dbi_close(dbi);
|
||||||
|
|
||||||
if (!res) {
|
|
||||||
syslog(LOG_ERR, "Problem updating client configuration\n");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
dbi_result_free(result);
|
||||||
|
og_dbi_close(dbi);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -451,47 +451,6 @@ bool actualizaCreacionImagen(struct og_dbi *dbi, char *idi, char *dsk,
|
||||||
return true;
|
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
|
// Función: actualizaHardware
|
||||||
//
|
//
|
||||||
|
|
|
@ -25,7 +25,6 @@ struct og_dbi;
|
||||||
bool actualizaConfiguracion(struct og_dbi *,char* ,int);
|
bool actualizaConfiguracion(struct og_dbi *,char* ,int);
|
||||||
bool WakeUp(int, const char *, const char *, const char *, const char *);
|
bool WakeUp(int, const char *, const char *, const char *, const char *);
|
||||||
bool actualizaCreacionImagen(struct og_dbi *,char*,char*,char*,char*,char*,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 actualizaHardware(struct og_dbi *dbi, char* ,char*,char*,char*);
|
||||||
bool cuestionPerfilHardware(struct og_dbi *dbi,char*,char*,int,char*,char*,int *,int);
|
bool cuestionPerfilHardware(struct og_dbi *dbi,char*,char*,int,char*,char*,int *,int);
|
||||||
bool actualizaSoftware(struct og_dbi *, char* , char* , char*,char*,char*);
|
bool actualizaSoftware(struct og_dbi *, char* , char* , char*,char*,char*);
|
||||||
|
|
Loading…
Reference in New Issue