# -*- mode: ruby -*-
# vi: set ft=ruby :
# =============================================================================
# Vagrantfile — VM de test ja4ebpf sur Rocky Linux 9
#
# Fournit un environnement kernel complet pour les tests eBPF :
#   - tracefs / debugfs montés
#   - perf_kprobe PMU disponible
#   - uprobes fonctionnels avec accept4 kprobe/tracepoint
#
# Prérequis (host Ubuntu) :
#   sudo apt-get install -y vagrant libvirt-daemon-system libvirt-clients \
#                           qemu-kvm ruby-libvirt
#   vagrant plugin install vagrant-libvirt
#   sudo usermod -aG libvirt,kvm $USER  # puis se reconnecter
#
# Utilisation :
#   vagrant up             # créer + provisionner la VM (première fois ~5 min)
#   vagrant ssh            # connexion SSH
#   make test-vm-nginx     # lancer les tests depuis le host
#   vagrant destroy -f     # détruire la VM
# =============================================================================

Vagrant.configure("2") do |config|

  # ── Box Rocky Linux 9 ──────────────────────────────────────────────────────
  config.vm.box = "generic/rocky9"

  # ── Réseau : IP privée pour accès depuis le host ───────────────────────────
  config.vm.network "private_network", ip: "192.168.56.10"

  # ── Ressources VM ─────────────────────────────────────────────────────────
  config.vm.provider :libvirt do |v|
    v.cpus   = 4
    v.memory = 4096
    v.nested = false  # pas besoin de virtualisation imbriquée
    # Pour VirtualBox (fallback)
  end

  config.vm.provider :virtualbox do |v|
    v.cpus   = 4
    v.memory = 4096
    v.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
  end

  # ── Montage du projet ─────────────────────────────────────────────────────
  # Le répertoire racine du projet est monté dans /ja4-platform
  config.vm.synced_folder "../..", "/ja4-platform",
    type: "rsync",
    rsync__exclude: [".git/", "old/", "*.rpm", "services/*/target/"]

  # ── Provisioning ─────────────────────────────────────────────────────────
  config.vm.provision "shell", path: "provision.sh"

  # ── Message post-démarrage ────────────────────────────────────────────────
  config.vm.post_up_message = <<~MSG
    VM ja4ebpf prête !
    
    Depuis le répertoire tests/vm/ :
      vagrant ssh                    # connexion interactive
      make -C ../.. test-vm-nginx    # lancer le test nginx
      make -C ../.. test-vm-matrix   # lancer tous les tests
    
    IP de la VM : 192.168.56.10
  MSG
end
