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

require 'yaml'

settings = YAML.load_file 'settings.vagrant.yaml'

Vagrant.configure(2) do |config|

  if /cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
    puts("Configuring for windows")
    config.vm.synced_folder "../..", "/cord", mount_options: ["dmode=700,fmode=600"]
    Box = "ubuntu/xenial64"
    Provider = "virtualbox"
  elsif RUBY_PLATFORM =~ /linux/
    puts("Configuring for linux")
    if settings['vProvider'] == "virtualbox"
      puts("Using the virtualbox configuration");
      config.vm.synced_folder "../..", "/cord"
      Box = "ubuntu/xenial64"
      Provider = "virtualbox"
    else
      puts("Using the QEMU/KVM configuration");
      Box = "ubuntu1604"
      Provider = "libvirt"
      if settings['testMode'] == "true" or settings['installMode'] == "true"
          config.vm.synced_folder ".", "/vagrant", disabled: true
          config.vm.synced_folder "../..", "/cord", type: "rsync", rsync__exclude: [".git", "venv-linux", "install/volthaInstaller", "install/volthaInstaller-2"], rsync__args: ["--verbose", "--archive", "--delete", "-z", "--links"]
      else
          config.vm.synced_folder "../..", "/cord", type: "nfs"
      end
    end
  else
    puts("Configuring for other")
    config.vm.synced_folder "../..", "/cord"
    Box = "ubuntu/xenial64"
    Provider = "virtualbox"
  end

  config.vm.define "#{settings['server_name']}" do |d|
    d.ssh.forward_agent = true
    d.vm.box = Box
    d.vm.hostname = "#{settings['server_name']}"
    d.vm.network "private_network", ip: "10.100.198.220"
    d.vm.provision :shell, path: "ansible/scripts/bootstrap_ansible.sh"
    d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/incubator/voltha/ansible/voltha.yml -c local"
    d.vm.provision :shell, inline: "cd /cord/incubator/voltha && source env.sh && make install-protoc && chmod 777 /tmp/fluentd"
    d.vm.provider Provider do |v|
      v.memory = 6144
      v.cpus = 4
    end
  end

  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
  end

end
