#!/bin/bash

# --- VARIABLES A ADAPTER SI BESOIN ---
INTERFACE="eth1"
VLAN_ID="1069"
IP_ADDRESS="192.168.244.22"
NETMASK="255.255.255.0"
# Gateway : Laisser vide "" si pas de passerelle sur ce réseau privé (cas fréquent en vRack/backend)
# Sinon mettre l'IP, ex: "192.168.244.254"
GATEWAY="" 

# 1. Récupération de l'UUID du serveur local et de l'interface physique
HOST_UUID=$(xe host-list name-label=$(hostname) --minimal)
PIF_ETH_UUID=$(xe pif-list device=$INTERFACE host-uuid=$HOST_UUID --minimal)

echo "Configuration sur $INTERFACE (UUID: $PIF_ETH_UUID)..."

# 2. Création du réseau pour le VLAN
# On crée un objet network pour accueillir le VLAN
NET_VLAN_UUID=$(xe network-create name-label="Management VLAN $VLAN_ID")

# 3. Création du VLAN sur l'interface physique (eth1)
# Cela crée une nouvelle interface logique (PIF) ex: eth1.1069
PIF_VLAN_UUID=$(xe pool-vlan-create network-uuid=$NET_VLAN_UUID pif-uuid=$PIF_ETH_UUID vlan=$VLAN_ID)
echo "VLAN $VLAN_ID créé. UUID PIF VLAN : $PIF_VLAN_UUID"

# 4. Configuration IP sur la nouvelle interface VLAN
# On applique l'IP avant de basculer le management pour éviter de se couper
if [ -z "$GATEWAY" ]; then
    xe pif-reconfigure-ip uuid=$PIF_VLAN_UUID mode=static IP=$IP_ADDRESS netmask=$NETMASK
else
    xe pif-reconfigure-ip uuid=$PIF_VLAN_UUID mode=static IP=$IP_ADDRESS netmask=$NETMASK gateway=$GATEWAY
fi
echo "IP $IP_ADDRESS configurée sur le VLAN."

# 5. Bascule du Management Interface
# C'est le moment de vérité : on dit à XCP-ng "Ton IP de gestion est maintenant sur ce VLAN"
echo "Bascule du management en cours..."
xe host-management-reconfigure pif-uuid=$PIF_VLAN_UUID

echo "Terminé ! Vérifiez avec 'xe pif-list management=true'"
