#!/bin/bash
set -e
PROXMOX_IP="192.168.50.200"
PROXMOX_PASS="QWer!@34"
TEST_VMID="101"
PROD_VMID="100"
INTEGRATION_NAME="${1:-solarman}"
echo "======================================"
echo "Wdrożenie integracji: ${INTEGRATION_NAME}"
echo "TEST VM: ${TEST_VMID} → PROD VM: ${PROD_VMID}"
echo "======================================"
# Połącz się z Proxmox i wykonaj operację
sshpass -p "${PROXMOX_PASS}" ssh -o StrictHostKeyChecking=no root@${PROXMOX_IP} bash -s << REMOTE_SCRIPT
set -e
echo -e "\n1. Instalacja wymaganych narzędzi..."
apt-get install -y kpartx jq >/dev/null 2>&1
echo -e "\n2. Mapowanie partycji..."
kpartx -av /dev/pve/vm-${TEST_VMID}-disk-0 >/dev/null 2>&1 || true
kpartx -av /dev/pve/vm-${PROD_VMID}-disk-0 >/dev/null 2>&1 || true
echo -e "\n3. Montowanie dysków..."
mkdir -p /mnt/haos-test /mnt/haos-prod
mount /dev/mapper/pve-vm--${TEST_VMID}--disk--0p8 /mnt/haos-test 2>/dev/null || true
mount /dev/mapper/pve-vm--${PROD_VMID}--disk--0p8 /mnt/haos-prod 2>/dev/null || true
echo -e "\n4. Kopiowanie integracji ${INTEGRATION_NAME}..."
if [ -d "/mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME}" ]; then
mkdir -p /mnt/haos-prod/supervisor/homeassistant/custom_components
cp -r /mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME} \\
/mnt/haos-prod/supervisor/homeassistant/custom_components/
echo "✅ ${INTEGRATION_NAME} skopiowany ($(du -sh /mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME} | cut -f1))"
else
echo "❌ Integracja ${INTEGRATION_NAME} nie znaleziona w TEST"
exit 1
fi
echo -e "\n5. Kopiowanie HACS (jeśli jeszcze nie ma)..."
if [ ! -d "/mnt/haos-prod/supervisor/homeassistant/custom_components/hacs" ]; then
if [ -d "/mnt/haos-test/supervisor/homeassistant/custom_components/hacs" ]; then
cp -r /mnt/haos-test/supervisor/homeassistant/custom_components/hacs \\
/mnt/haos-prod/supervisor/homeassistant/custom_components/
echo "✅ HACS skopiowany"
fi
else
echo "✅ HACS już istnieje na PROD"
fi
echo -e "\n6. Kopiowanie konfiguracji integracji..."
# Wyciągnij konfigurację z TEST
cat /mnt/haos-test/supervisor/homeassistant/.storage/core.config_entries | \\
jq ".data.entries[] | select(.domain == \\"${INTEGRATION_NAME}\\")" > /tmp/integration_config.json
if [ -s /tmp/integration_config.json ]; then
# Dodaj do PROD jeśli jeszcze nie ma
PROD_HAS=\$(cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | \\
jq ".data.entries[] | select(.domain == \\"${INTEGRATION_NAME}\\") | .domain" 2>/dev/null | wc -l)
if [ "\$PROD_HAS" -eq 0 ]; then
PROD_ENTRIES=\$(cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | jq '.data.entries')
CONFIG=\$(cat /tmp/integration_config.json)
UPDATED=\$(echo "\$PROD_ENTRIES" | jq ". + [\$CONFIG]")
cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | \\
jq ".data.entries = \$UPDATED" > /tmp/prod_config.json
cp /tmp/prod_config.json /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries
echo "✅ Konfiguracja ${INTEGRATION_NAME} dodana"
else
echo "✅ Konfiguracja ${INTEGRATION_NAME} już istnieje"
fi
else
echo "⚠️ Nie znaleziono konfiguracji ${INTEGRATION_NAME} w TEST"
fi
echo -e "\n7. Odmontowanie i czyszczenie..."
sync
umount /mnt/haos-test 2>/dev/null || true
umount /mnt/haos-prod 2>/dev/null || true
kpartx -d /dev/pve/vm-${TEST_VMID}-disk-0 >/dev/null 2>&1 || true
kpartx -d /dev/pve/vm-${PROD_VMID}-disk-0 >/dev/null 2>&1 || true
echo -e "\n8. Restartowanie PROD VM..."
qm reboot ${PROD_VMID} >/dev/null 2>&1
echo -e "\n======================================"
echo "✅ WDROŻENIE ZAKOŃCZONE!"
echo "======================================"
REMOTE_SCRIPT
echo ""
echo "✅ Integracja ${INTEGRATION_NAME} wdrożona na PROD"
echo "⏳ PROD VM restartuje się (poczekaj 2-3 minuty)"
echo "🌐 Otwórz: http://192.168.50.242:8123"
echo ""