# -*- 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 tracepoints
#
# Prérequis (host Ubuntu) :
#   sudo apt-get install -y libvirt-daemon-system libvirt-clients qemu-kvm libvirt-dev ruby-dev
#   vagrant plugin install vagrant-libvirt
#   sudo usermod -aG libvirt,kvm $USER  # puis se reconnecter
#
# Utilisation :
#   vagrant up             # créer + provisionner (~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 avec provider libvirt (image qcow2) ─────────────────
  config.vm.box = "generic/rocky9"

  # ── Désactiver synced_folder par défaut (utiliser rsync explicitement) ─────
  config.vm.synced_folder ".", "/vagrant", disabled: true

  # ── Provider libvirt ───────────────────────────────────────────────────────
  config.vm.provider :libvirt do |v|
    v.cpus       = 4
    v.memory     = 4096
    v.nested     = false
    v.cpu_mode   = "host-passthrough"   # expose les capacités CPU hôte → KVM perf
    v.driver     = "kvm"
    v.disk_bus   = "virtio"
    v.nic_model_type = "virtio"
  end

  # ── Synchronisation du projet via rsync ────────────────────────────────────
  config.vm.synced_folder "../..", "/ja4-platform",
    type: "rsync",
    rsync__exclude: [".git/", "old/", "*.rpm", "dist/"]

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

  # ── Message post-démarrage ─────────────────────────────────────────────────
  config.vm.post_up_message = <<~MSG
    VM ja4ebpf prête !

    Depuis la racine du projet :
      make vm-ssh               # connexion interactive
      make test-vm-nginx        # test nginx complet (L3/L4 + TLS + L7)
      make test-vm-all          # tous les tests
      make vm-rebuild-ja4ebpf   # resynchroniser + recompiler après modif
  MSG
end
