diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 0ccbfff..8a49d98 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -31,49 +31,51 @@ jobs: set -e echo "--- INICIO DEL DESPLIEGUE OPTIMIZADO ---" - # --- SECCIÓN DE MONITOREO --- - if ! command -v curl &> /dev/null; then - echo "Instalando curl..." - sudo apt-get update -qq && sudo apt-get install -y curl + # --- SECCIÓN DE MONITOREO (VERSIÓN DEFINITIVA) --- + if ! command -v curl &> /dev/null || ! command -v jq &> /dev/null; then + echo "Instalando curl y jq..." + sudo apt-get update -qq && sudo apt-get install -y curl jq fi - # --- ¡FUNCIONES CORREGIDAS! --- - # Función para PAUSAR el monitoreo - pause_maintenance() { + # Función que obtiene la configuración, la modifica y la envía de vuelta + set_maintenance_status() { local id=$1 - echo "Pausando mantenimiento para la ventana ID:${id}" - local response=$(curl -s -w "%{http_code}" -X POST "${UPTIME_KUMA_URL}/api/maintenances/${id}/pause" \ + local active_state=$2 # 'true' o 'false' + + echo "Intentando establecer el estado de mantenimiento para ID:${id} a ${active_state}..." + + # 1. GET: Obtener la configuración actual del mantenimiento + local current_config=$(curl -s -X GET "${UPTIME_KUMA_URL}/api/maintenances/${id}" \ -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}") - local http_code=$(tail -n1 <<< "$response") - if [ "$http_code" -ne 200 ]; then - echo "Error al pausar el monitoreo. Código HTTP: $http_code" + # Verificar si la obtención fue exitosa + if [ -z "$current_config" ] || ! echo "$current_config" | jq -e . >/dev/null 2>&1; then + echo "Error: No se pudo obtener la configuración de mantenimiento actual para el ID ${id}." return 1 fi - echo "Monitoreo pausado con éxito." - } - - # Función para REANUDAR el monitoreo - resume_maintenance() { - local id=$1 - echo "Reanudando monitoreo para la ventana ID:${id}" - local response=$(curl -s -w "%{http_code}" -X POST "${UPTIME_KUMA_URL}/api/maintenances/${id}/resume" \ - -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}") + # 2. MODIFY: Usar jq para cambiar el valor de "active" + local modified_config=$(echo "$current_config" | jq --argjson state "${active_state}" '.active = $state') + + # 3. PUT: Enviar el objeto completo y modificado de vuelta + local response=$(curl -s -w "%{http_code}" -X PUT "${UPTIME_KUMA_URL}/api/maintenances/${id}" \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}" \ + --data-raw "$modified_config") + local http_code=$(tail -n1 <<< "$response") if [ "$http_code" -ne 200 ]; then - echo "Error al reanudar el monitoreo. Código HTTP: $http_code" + echo "Error al actualizar el estado de mantenimiento. Código HTTP: $http_code" return 1 fi - echo "Monitoreo reanudado con éxito." + + echo "Estado de mantenimiento actualizado con éxito." } - # 'trap' ahora llama a la función correcta 'resume_maintenance' - trap 'echo "--- Limpiando: Reanudando monitoreo ---"; resume_maintenance "$UPTIME_KUMA_MAINTENANCE_ID"' EXIT + trap 'echo "--- Limpiando: Reanudando monitoreo ---"; set_maintenance_status "$UPTIME_KUMA_MAINTENANCE_ID" false' EXIT - # Pausamos el mantenimiento echo "--- Pausando monitoreo en Uptime Kuma ---" - pause_maintenance "$UPTIME_KUMA_MAINTENANCE_ID" + set_maintenance_status "$UPTIME_KUMA_MAINTENANCE_ID" true # --- FIN SECCIÓN DE MONITOREO ---