diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 8a49d98..93d14fb 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -31,33 +31,35 @@ jobs: set -e echo "--- INICIO DEL DESPLIEGUE OPTIMIZADO ---" - # --- SECCIÓN DE MONITOREO (VERSIÓN DEFINITIVA) --- + # --- SECCIÓN DE MONITOREO (VERSIÓN CANÓNICA) --- 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 - # Función que obtiene la configuración, la modifica y la envía de vuelta + # Función que obtiene la LISTA, busca, modifica y envía el objeto de vuelta set_maintenance_status() { local id=$1 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}" \ + # 1. GET LIST: Obtener la lista COMPLETA de todas las ventanas de mantenimiento + local maintenance_list=$(curl -s -X GET "${UPTIME_KUMA_URL}/api/maintenances" \ -H "Authorization: Bearer ${UPTIME_KUMA_API_KEY}") - # 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}." + # 2. FIND: Usar jq para buscar en la lista nuestro objeto por ID + local current_config=$(echo "$maintenance_list" | jq --argjson id "$id" '.[] | select(.id == $id)') + + if [ -z "$current_config" ]; then + echo "Error: No se pudo encontrar una ventana de mantenimiento con ID ${id} en la lista." return 1 fi - # 2. MODIFY: Usar jq para cambiar el valor de "active" + # 3. MODIFY: Usar jq para cambiar el valor de "active" en el objeto encontrado local modified_config=$(echo "$current_config" | jq --argjson state "${active_state}" '.active = $state') - # 3. PUT: Enviar el objeto completo y modificado de vuelta + # 4. 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}" \ @@ -66,6 +68,7 @@ jobs: local http_code=$(tail -n1 <<< "$response") if [ "$http_code" -ne 200 ]; then echo "Error al actualizar el estado de mantenimiento. Código HTTP: $http_code" + echo "Cuerpo de la respuesta: $(head -n -1 <<< "$response")" return 1 fi