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

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

$setup = <<SCRIPT
sudo apt-get update -qq
sudo apt-get install -y python
SCRIPT

$setup_integ = <<SCRIPT
cp -R /vagrant integration-tests
cd integration-tests && ./install_apps.py install_all 2>&1 | tee install.log
SCRIPT

$setup_ssh = <<SCRIPT
mkdir -p ~/.ssh
cp /vagrant/temp/sshkey ~/.ssh/id_rsa
cp /vagrant/temp/sshkey.pub ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chown -R vagrant:vagrant ~/.ssh
chmod -R 700 ~/.ssh
SCRIPT

$setup_a = <<SCRIPT
cat > ~/.ssh/config <<EOF
Host 192.168.*.*
    StrictHostKeyChecking no
EOF

sudo ip route add 192.168.3.0/24 via 192.168.2.3
sudo ip -6 addr add fd01::3/64 dev eth1
sudo ip -6 addr add fd02::2/64 dev eth2
sudo ip -6 route add fd03::/64 via fd02::3
SCRIPT

$setup_d = <<SCRIPT
ip route add 192.168.2.0/24 via 192.168.3.2
ip -6 addr add fd03::3/64 dev eth1
ip -6 route add fd02::/64 via fd03::2
SCRIPT

$setup_router = <<SCRIPT
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
ip -6 addr add fd02::3/64 dev eth1
ip -6 addr add fd03::2/64 dev eth2
SCRIPT

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
    vb.cpus = "4"
    vb.customize ["storagectl", :id, "--name", "SATAController", "--hostiocache", "off"]
  end

  config.vm.define "A" do |a|
    a.vm.network "private_network", ip: "192.168.1.3", virtualbox__intnet: "ABC-switch"
    a.vm.network "private_network", ip: "192.168.2.2", virtualbox__intnet: "AtoRouter"
    a.vm.provision "shell", inline: $setup, privileged: false
    a.vm.provision "shell", inline: $setup_a, privileged: false
    a.vm.provision "shell", inline: $setup_ssh, privileged: false
    a.vm.provision "shell", inline: $setup_integ, privileged: false
  end

  config.vm.define "B" do |b|
    b.vm.network "private_network", ip: "192.168.1.2", virtualbox__intnet: "ABC-switch"
    b.vm.provision "shell", inline: $setup, privileged: false
    b.vm.provision "shell", inline: "ip -6 addr add fd01::2/64 dev eth1"
    b.vm.provision "shell", inline: $setup_ssh, privileged: false
    b.vm.provision "shell", inline: $setup_integ, privileged: false
  end

  config.vm.define "C" do |c|
    c.vm.network "private_network", ip: "192.168.1.4", virtualbox__intnet: "ABC-switch"
    c.vm.provision "shell", inline: $setup, privileged: false
    c.vm.provision "shell", inline: "ip -6 addr add fd01::4/64 dev eth1"
    c.vm.provision "shell", inline: $setup_ssh, privileged: false
    c.vm.provision "shell", inline: $setup_integ, privileged: false
  end

  config.vm.define "D" do |d|
    d.vm.network "private_network", ip: "192.168.3.3", virtualbox__intnet: "DtoRouter"
    d.vm.provision "shell", inline: $setup, privileged: false
    d.vm.provision "shell", inline: $setup_d
    d.vm.provision "shell", inline: $setup_ssh, privileged: false
    d.vm.provision "shell", inline: $setup_integ, privileged: false
  end

  config.vm.define "router" do |router|
    router.vm.network "private_network", ip: "192.168.2.3", virtualbox__intnet: "AtoRouter"
    router.vm.network "private_network", ip: "192.168.3.2", virtualbox__intnet: "DtoRouter"
    router.vm.provision "shell", inline: $setup_router
    router.vm.provider "virtualbox" do |vb|
      vb.memory = "128"
      vb.cpus = "1"
    end
  end
end
