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

require 'yaml'
settings = YAML.load_file('genconfig/config.yml')

Vagrant.configure(2) do |config|

  config.vm.box = settings["vagrant_box"]

  config.vm.define "head1" do |h|
    h.vm.hostname = "head1"
    h.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: '0.0.0.0'
    h.vm.provider :libvirt do |v|
      v.memory = settings['head_vm_mem']
      v.cpus = settings['head_vm_cpu']
      v.machine_virtual_size = 100
    end
    h.vm.network "private_network", # management network, eth1
      adapter: 1,
      ip: "0.1.0.0", # not used, ignore
      auto_config: false,
      virtualbox__intnet: settings['vm_management_network_name'],
      libvirt__network_name: settings['vm_management_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
    h.vm.network "private_network", # public network, eth2
      adapter: 2,
      ip: "0.2.0.0", # not used, ignore
      auto_config: false,
      virtualbox__intnet: settings['vm_public_network_name'],
      libvirt__network_name: settings['vm_public_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
  end

  config.vm.define "compute1" do |c|
    c.vm.hostname = "compute1"
    c.vm.provider :libvirt do |v|
      v.memory = settings['compute_vm_mem']
      v.cpus = settings['compute_vm_cpu']
      v.machine_virtual_size = 50
      v.nested = true
    end
    c.vm.network "private_network", # management network, eth1
      adapter: 1,
      ip: "0.1.0.0",
      auto_config: false,
      virtualbox__intnet: settings['vm_management_network_name'],
      libvirt__network_name: settings['vm_management_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
    c.vm.network "private_network", # public network, eth2
      adapter: 2,
      ip: "0.2.0.0", # not used, ignore
      auto_config: false,
      virtualbox__intnet: settings['vm_public_network_name'],
      libvirt__network_name: settings['vm_public_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
  end

  config.vm.define "compute2" do |c|
    c.vm.hostname = "compute2"
    c.vm.provider :libvirt do |v|
      v.memory = settings['compute_vm_mem']
      v.cpus = settings['compute_vm_cpu']
      v.machine_virtual_size = 50
      v.nested = true
    end
    c.vm.network "private_network", # management network, eth1
      adapter: 1,
      ip: "0.1.0.0",
      auto_config: false,
      virtualbox__intnet: settings['vm_management_network_name'],
      libvirt__network_name: settings['vm_management_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
    c.vm.network "private_network", # public network, eth2
      adapter: 2,
      ip: "0.2.0.0", # not used, ignore
      auto_config: false,
      virtualbox__intnet: settings['vm_public_network_name'],
      libvirt__network_name: settings['vm_public_network_name'],
      libvirt__forward_mode: "none",
      libvirt__dhcp_enabled: false
  end

end

