#915 Fix duplicated command execution when added to the queue

This patch fixes duplicated command execution by running queue scheduler instead
of directly calling the command's REST API function.

If command is already queued, then execute pending commands. Otherwise,
invoke the OgAdmServer REST API.
configfile
Roberto Hueso Gómez 2019-11-15 11:42:25 +01:00 committed by OpenGnSys Support Team
parent 666dd3f44c
commit ccb862bed9
1 changed files with 52 additions and 45 deletions

View File

@ -35,6 +35,53 @@ define('OG_CMD_ID_CREATE_INCREMENTAL_IMAGE', 14);
define('OG_CMD_ID_RESTORE_INCREMENTAL_IMAGE', 15);
define('OG_CMD_ID_SENDMESSAGE', 16);
function run_command($idcomando, $cadenaip, $atributos) {
switch ($idcomando) {
case OG_CMD_ID_WAKEUP:
include("wakeonlan_repo.php");
break;
case OG_CMD_ID_SETUP:
setup($cadenaip, $atributos);
break;
case OG_CMD_ID_SESSION:
session($cadenaip, $atributos);
break;
case OG_CMD_ID_CREATE_BASIC_IMAGE:
create_basic_image($cadenaip, $atributos);
break;
case OG_CMD_ID_CREATE_INCREMENTAL_IMAGE:
create_incremental_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_BASIC_IMAGE:
restore_basic_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_INCREMENTAL_IMAGE:
restore_incremental_image($cadenaip, $atributos);
break;
case OG_CMD_ID_POWEROFF:
poweroff($cadenaip);
break;
case OG_CMD_ID_CREATE_IMAGE:
create_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_IMAGE:
restore_image($cadenaip, $atributos);
break;
case OG_CMD_ID_REBOOT:
reboot($cadenaip);
break;
case OG_CMD_ID_HARDWARE:
hardware($cadenaip);
break;
case OG_CMD_ID_SOFTWARE:
software($cadenaip, $atributos);
break;
case OG_CMD_ID_SCRIPT:
shell(3, $cadenaip, $atributos);
break;
}
}
// Recoge parametros de seguimiento
$sw_ejya="";
$sw_seguimiento="";
@ -183,51 +230,11 @@ if($sw_ejya=='on' || $sw_ejprg=="on" ){
$ValorParametros=extrae_parametros($parametros,chr(13),'=');
$script=@urldecode($ValorParametros["scp"]);
if($sw_ejya=='on'){
/* PARCHE UHU heredado de la version 1.1.0: Si la accion a realizar es Arrancar incluimos una pagina para arrancar desde el repo */
switch ($idcomando) {
case OG_CMD_ID_WAKEUP:
include("wakeonlan_repo.php");
break;
case OG_CMD_ID_SETUP:
setup($cadenaip, $atributos);
break;
case OG_CMD_ID_SESSION:
session($cadenaip, $atributos);
break;
case OG_CMD_ID_CREATE_BASIC_IMAGE:
create_basic_image($cadenaip, $atributos);
break;
case OG_CMD_ID_CREATE_INCREMENTAL_IMAGE:
create_incremental_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_BASIC_IMAGE:
restore_basic_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_INCREMENTAL_IMAGE:
restore_incremental_image($cadenaip, $atributos);
break;
case OG_CMD_ID_POWEROFF:
poweroff($cadenaip);
break;
case OG_CMD_ID_CREATE_IMAGE:
create_image($cadenaip, $atributos);
break;
case OG_CMD_ID_RESTORE_IMAGE:
restore_image($cadenaip, $atributos);
break;
case OG_CMD_ID_REBOOT:
reboot($cadenaip);
break;
case OG_CMD_ID_HARDWARE:
hardware($cadenaip);
break;
case OG_CMD_ID_SOFTWARE:
software($cadenaip, $atributos);
break;
case OG_CMD_ID_SCRIPT:
shell(3, $cadenaip, $atributos);
break;
}
if ($sw_seguimiento == 1 || $sw_ejprg == "on")
run_schedule($cadenaip);
else
run_command($idcomando, $cadenaip, $atributos);
// En agente nuevo devuelvo siempre correcto
$resulhidra = 1;