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

Vagrant.configure("2") do |config|

    # Base box definition, currently using
    #  Official Ubuntu 18.04 LTS (Bionic Beaver) Daily Build
    config.vm.box = "ubuntu/bionic64"
    config.vm.box_version = "20190724.1.0"

    # Disable automatic box update checking
    config.vm.box_check_update = false

    # Configure cached packages to be shared between instances of the same base box.
    if Vagrant.has_plugin?("vagrant-cachier")
        config.cache.scope = :box
    end

    # Configure proxy if needed
    if Vagrant.has_plugin?("vagrant-proxyconf")
        config.proxy.http     = "http://192.168.0.2:3128/"
        config.proxy.https    = "http://192.168.0.2:3128/"
        config.proxy.ftp      = "http://192.168.0.2:3128/"
        config.proxy.no_proxy = "localhost,127.0.0.1"
    end

    # Configure testing network interfaces (TG)
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545EM", mac: "0800270fe04d"
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545EM", mac: "08002761f7ad"
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545EM", mac: "080027dc5da4"

    # Configure testing network interfaces (SUT)
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545EM", mac: "080027385e58"
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545EM", mac: "080027e3f542"
    config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545EM", mac: "0800274f7c63"

    # Virtualbox machine configuration
    config.vm.provider "virtualbox" do |vb|
        vb.name = "vppdevice-bionic"
        # Run in headless mode
        vb.gui = false

        # Customize the amount of memory and CPUs assigned:
        #   - for VPP at least 3GB RAM and 2 cores is recommended
        vb.memory = "8192"
        vb.cpus = "4"

        # Configure network testing interfaces
        vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
        vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]
        vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"]
        vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"]
        vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"]
        vb.customize ["modifyvm", :id, "--nicpromisc7", "allow-all"]
    end

    # Provision the box using ansible local (no Ansible installation needed on host)
    config.vm.provision "ansible_local" do |ansible|
        ansible.version = "latest"
        ansible.compatibility_mode = "2.0"
        ansible.become = true
        ansible.verbose = false
        ansible.limit = "all"
        ansible.inventory_path = "ansible/vppdevice"
        ansible.playbook = "ansible/master.yml"
    end

    config.vm.post_up_message = <<-MESSAGE

    Your virtual machine is configured!

    Login to the box using command:
       vagrant ssh

    To run some tests use the VPP Device bootstrap script, eg:
        cd /home/vagrant/csit/resources/libraries/bash/entry
       ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox

    To run only selected tests based on TAGS, export environment variables
    before running the test suite:
       export GERRIT_EVENT_TYPE="comment-added"
       export GERRIT_EVENT_COMMENT_TEXT="devicetest memif"
       ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox

    For more information please visit:
       https://docs.fd.io/csit/rls1810/report/index.html
       https://docs.fd.io/csit/master/trending/

    MESSAGE

end