#!/usr/bin/env bash # Ridimensiona capacità Garage (layout assign + apply). Uso: garage_set_capacity.sh 85G set -euo pipefail CAPACITY="${1:-}" RESERVE_GB="${GARAGE_RESERVE_GB:-20}" ROOT="$(cd "$(dirname "$0")/.." && pwd)" COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.prod.yml}" ENV_FILE="${ENV_FILE:-${ROOT}/.env}" GARAGE_CONTAINER="${GARAGE_CONTAINER:-}" if [ -z "$CAPACITY" ]; then avail="$(df -BG "${ROOT}" 2>/dev/null | awk 'NR==2 {print $4}' | tr -d 'G' || echo 0)" if [ "$avail" -lt 1 ]; then avail="$(df -BG / 2>/dev/null | awk 'NR==2 {print $4}' | tr -d 'G')" fi cap_gb=$((avail - RESERVE_GB)) [ "$cap_gb" -lt 10 ] && cap_gb=10 CAPACITY="${cap_gb}G" echo "Spazio disponibile ~${avail}G, riservo ${RESERVE_GB}G → capacità Garage ${CAPACITY}" fi cd "$ROOT" if [ -z "$GARAGE_CONTAINER" ]; then GARAGE_CONTAINER="$(docker ps --format '{{.Names}}' | grep -E 'garage-1$' | head -1)" fi [ -n "$GARAGE_CONTAINER" ] || { echo "Container garage non trovato"; exit 1; } node_id="$(docker exec "$GARAGE_CONTAINER" /garage status 2>/dev/null | awk '/^[0-9a-f]{16,}/{print $1; exit}')" [ -n "$node_id" ] || { echo "Node id non trovato"; exit 1; } echo "Node: $node_id → capacità $CAPACITY" docker exec "$GARAGE_CONTAINER" /garage layout assign -z dc1 -c "$CAPACITY" "$node_id" ver="$(docker exec "$GARAGE_CONTAINER" /garage layout show 2>/dev/null | awk '/layout version:/{print $NF; exit}')" next=$((ver + 1)) docker exec "$GARAGE_CONTAINER" /garage layout apply --version "$next" docker exec "$GARAGE_CONTAINER" /garage layout show