# -*- mode: ruby -*-
# vi: set ft=ruby :

ENV['VAGRANT_NO_PARALLEL'] = 'yes'
ww_version = ENV.fetch('WW_VERSION', "4.6.3")

Vagrant.configure("2") do |config|
  config.vm.define :wwctl do |wwctl|
    wwctl.vm.box = "rockylinux/9"
    wwctl.vm.box_version = "6.0.0"
    wwctl.vm.network :private_network, :ip => "10.100.100.254", :libvirt__dhcp_enabled => false, :libvirt__network_name => 'netboot'
    wwctl.vm.synced_folder '.', '/vagrant', disabled: true

    wwctl.trigger.after :up, :reload do |trigger|
      trigger.run = {path: "export-libvirt-sock.sh"}
    end

    wwctl.vm.provider :libvirt do |domain|
      domain.memory = 1024
      domain.cpus = 2
      domain.machine_virtual_size = 12
    end

    wwctl.vm.provision "init-wwctl", type: "shell", path: "init-scripts/init-wwctl.sh", args: [ww_version]
    wwctl.vm.provision "file", source: "alpine-bootable.def", destination: "alpine-bootable.def"
    wwctl.vm.provision "file", source: "alpine-boot.sh", destination: "alpine-boot.sh"
    wwctl.vm.provision "provision-vbmc", type: "shell", run: "never", path: "init-scripts/start-vbmcd.sh"
    wwctl.vm.provision "add-ww-nodes", type: "shell", run: "never", path: "init-scripts/add-ww-nodes.sh"
  end

  config.vm.define :wwnode1 do |node1|
    node1.vm.network :private_network, :libvirt__network_name => 'netboot', :libvirt__mac => '006e6f646531'
    node1.vm.synced_folder '.', '/vagrant', disabled: true
    node1.vm.provider :libvirt do |domain|
      domain.memory = 768
      domain.cpus = 1
      domain.mgmt_attach = false
      boot_network = {'network' => 'netboot'}
      domain.boot boot_network
    end
  end

  config.vm.define :wwnode2 do |node2|
    node2.vm.network :private_network, :libvirt__network_name => 'netboot', :libvirt__mac => '006e6f646532'
    node2.vm.synced_folder '.', '/vagrant', disabled: true
    node2.vm.provider :libvirt do |domain|
      domain.memory = 768
      domain.cpus = 1
      domain.mgmt_attach = false
      boot_network = {'network' => 'netboot'}
      domain.boot boot_network
    end
  end

end
