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

conf = {
# Generic parameters used across all ONAP components
  'public_net_id'       => '00000000-0000-0000-0000-000000000000',
  'key_name'            => 'ecomp_key',
  'pub_key'             => '',
  'nexus_repo'          => 'https://nexus.onap.org/content/sites/raw',
  'nexus_docker_repo'   => 'nexus3.onap.org:10001',
  'nexus_username'      => 'docker',
  'nexus_password'      => 'docker',
  'dmaap_topic'         => 'AUTO',
  'artifacts_version'   => '1.0.0',
  'docker_version'      => '1.0-STAGING-latest',
  'gerrit_branch'       => 'master',
# Parameters for DCAE instantiation
  'dcae_zone'           => 'iad4',
  'dcae_state'          => 'vi',
  'openstack_tenant_id' => '',
  'openstack_username'  => '',
  'openstack_api_key'   => '',
  'openstack_password'  => '',
  'nexus_repo_root'     => 'https://nexus.onap.org',
  'nexus_url_snapshot'  => 'https://nexus.onap.org/content/repositories/snapshots',
  'gitlab_branch'       => 'master',
  'build_image'         => 'True',
  'pull_docker_image'   => 'True',
  'odl_version'         => '0.5.3-Boron-SR3',
  'clone_repo'          => 'True',
  'compile_repo'        => 'False',
  'enable_oparent'      => 'True'
}

Vagrant.require_version ">= 1.8.6"

# Determine the OS for the host computer
module OS
    def OS.windows?
        (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
    end

    def OS.mac?
        (/darwin/ =~ RUBY_PLATFORM) != nil
    end

    def OS.unix?
        !OS.windows?
    end

    def OS.linux?
        OS.unix? and not OS.mac?
    end
end

if OS.windows?
    puts "Vagrant launched from windows. This configuration has not fully tested."
end

# Determine the provider used
provider = (ENV['VAGRANT_DEFAULT_PROVIDER'] || :virtualbox).to_sym
puts "Using #{provider} provider"

vd_conf = ENV.fetch('VD_CONF', 'etc/settings.yaml')
if File.exist?(vd_conf)
  require 'yaml'
  user_conf = YAML.load_file(vd_conf)
  conf.update(user_conf)
end

deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual')
sdc_volume='vol1-sdc-data.vdi'

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

  if ENV['http_proxy'] != nil and ENV['https_proxy'] != nil and ENV['no_proxy'] != nil
    if not Vagrant.has_plugin?('vagrant-proxyconf')
      system 'vagrant plugin install vagrant-proxyconf'
      raise 'vagrant-proxyconf was installed but it requires to execute again'
    end
    config.proxy.http     = ENV['http_proxy']
    config.proxy.https    = ENV['https_proxy']
    config.proxy.no_proxy = ENV['no_proxy']
  end

  if Vagrant.has_plugin?('vagrant-vbguest')
    puts 'vagrant-vbguest auto_update feature will be disable to avoid sharing conflicts'
    config.vbguest.auto_update = false
  end

  config.vm.box = 'ubuntu/trusty64'
  if provider == :libvirt
    config.vm.box = 'sputnik13/trusty64'
    if not Vagrant.has_plugin?('vagrant-libvirt')
      system 'vagrant plugin install vagrant-libvirt'
      raise 'vagrant-libvirt was installed but it requires to execute again'
    end
  end
  if provider == :openstack
    config.vm.box = nil
    config.ssh.username = 'ubuntu'
    if not Vagrant.has_plugin?('vagrant-openstack-provider')
      system 'vagrant plugin install vagrant-openstack-provider'
      raise 'vagrant-openstack-provider was installed but it requires to execute again'
    end
  end
  #config.vm.provision "docker"
  config.vm.synced_folder './opt', '/opt/', create: true
  config.vm.synced_folder './lib', '/var/onap/', create: true
  config.vm.synced_folder '~/.m2', '/root/.m2/', create: true

  config.vm.provider :virtualbox do |v|
    v.customize ["modifyvm", :id, "--memory", 4 * 1024]
  end
  config.vm.provider :libvirt do |v|
    v.memory = 4 * 1024
    v.nested = true
  end
  config.vm.provider :openstack do |v|

    v.openstack_auth_url               = ENV.fetch('OS_AUTH_URL', '')
    v.tenant_name                      = ENV.fetch('OS_TENANT_NAME', '')
    v.username                         = ENV.fetch('OS_USERNAME', '')
    v.password                         = ENV.fetch('OS_PASSWORD', '')
    v.region                           = ENV.fetch('OS_REGION_NAME', '')
    v.identity_api_version             = ENV.fetch('OS_IDENTITY_API_VERSION', '')
    v.domain_name                      = ENV.fetch('OS_PROJECT_DOMAIN_ID', '')
    v.project_name                     = ENV.fetch('OS_PROJECT_NAME', '')

    v.floating_ip_pool                 = ENV.fetch('OS_FLOATING_IP_POOL', '')
    v.floating_ip_pool_always_allocate = (ENV['OS_FLOATING_IP_ALWAYS_ALLOCATE'] == 'true')
    v.image                            = ENV.fetch('OS_IMAGE', '')
    v.security_groups                  = [ENV.fetch('OS_SEC_GROUP', '')]
    v.flavor                           = 'm1.medium'
    v.networks                         = ENV.fetch('OS_NETWORK', '')
  end

  case deploy_mode

  when 'all-in-one'

    config.vm.define :all_in_one do |all_in_one|
      all_in_one.vm.hostname = 'all-in-one'
      all_in_one.vm.network :private_network, ip: '192.168.50.3'
      all_in_one.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--memory", 12 * 1024]
        unless File.exist?(sdc_volume)
           v.customize ['createhd', '--filename', sdc_volume, '--size', 20 * 1024]
        end
        v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', sdc_volume]
      end
      all_in_one.vm.provider "libvirt" do |v|
        v.memory = 12 * 1024
        v.nested = true
        v.storage :file, path: sdc_volume, bus: 'sata', device: 'vdb', size: '2G'
      end
      all_in_one.vm.provider "openstack" do |v|
        v.server_name = 'all-in-one'
        v.flavor = 'm1.xlarge'
      end
      all_in_one.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['mr', 'asdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc']
        s.env = conf
      end
    end

  when 'individual'

    config.vm.define :dns do |dns|
      dns.vm.hostname = 'dns'
      dns.vm.network :private_network, ip: '192.168.50.3'
      dns.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--memory", 1 * 1024]
      end
      dns.vm.provider "libvirt" do |v|
        v.memory = 1 * 1024
        v.nested = true
      end
      dns.vm.provider "openstack" do |v|
        v.server_name = 'dns'
        v.flavor = 'm1.small'
      end
      dns.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.env = conf
      end 
    end

    config.vm.define :mr do |mr|
      mr.vm.hostname = 'message-router'
      mr.vm.network :private_network, ip: '192.168.50.4'
      mr.vm.provider "openstack" do |v|
        v.server_name = 'message-router'
      end
      mr.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['mr']
        s.env = conf
      end
    end

    config.vm.define :sdc do |sdc|
      sdc.vm.hostname = 'sdc'
      sdc.vm.network :private_network, ip: '192.168.50.5'
      sdc.vm.provider "virtualbox" do |v|
        unless File.exist?(sdc_volume)
           v.customize ['createhd', '--filename', sdc_volume, '--size', 20 * 1024]
        end
        v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', sdc_volume]
      end
      sdc.vm.provider "libvirt" do |v|
        v.storage :file, path: sdc_volume, bus: 'sata', device: 'vdb', size: '2G'
      end
      sdc.vm.provider "openstack" do |v|
        v.server_name = 'sdc'
      end
      sdc.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['asdc']
        s.env = conf
      end
    end

    config.vm.define :aai do |aai|
      aai.vm.hostname = 'aai'
      aai.vm.network :private_network, ip: '192.168.50.6'
      aai.vm.provider "openstack" do |v|
        v.server_name = 'aai'
      end
      aai.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['aai']
        s.env = conf
      end 
    end

    config.vm.define :mso do |mso|
      mso.vm.hostname = 'mso'
      mso.vm.network :private_network, ip: '192.168.50.7'
      mso.vm.provider "openstack" do |v|
        v.server_name = 'mso'
      end
      mso.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['mso']
        s.env = conf
      end 
    end
  
    config.vm.define :robot do |robot|
      robot.vm.hostname = 'robot'
      robot.vm.network :private_network, ip: '192.168.50.8'
      robot.vm.provider "openstack" do |v|
        v.server_name = 'robot'
      end
      robot.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['robot']
        s.env = conf
      end
    end

    config.vm.define :vid do |vid|
      vid.vm.hostname = 'vid'
      vid.vm.network :private_network, ip: '192.168.50.9'
      vid.vm.provider "openstack" do |v|
        v.server_name = 'vid'
      end
      vid.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['vid']
        s.env = conf
      end
    end

    config.vm.define :sdnc do |sdnc|
      sdnc.vm.hostname = 'sdnc'
      sdnc.vm.network :private_network, ip: '192.168.50.10'
      sdnc.vm.provider "openstack" do |v|
        v.server_name = 'sdnc'
      end
      sdnc.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['sdnc']
        s.env = conf
      end
    end

    config.vm.define :portal do |portal|
      portal.vm.hostname = 'portal'
      portal.vm.network :private_network, ip: '192.168.50.11'
      portal.vm.provider "openstack" do |v|
        v.server_name = 'portal'
      end
      portal.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['portal']
        s.env = conf
      end
    end

    config.vm.define :dcae do |dcae|
      dcae.vm.hostname = 'dcae'
      dcae.vm.network :private_network, ip: '192.168.50.12'
      dcae.vm.provider "openstack" do |v|
        v.server_name = 'dcae'
      end
      dcae.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['dcae']
        s.env = conf
      end
    end

    config.vm.define :policy do |policy|
      policy.vm.hostname = 'policy'
      policy.vm.network :private_network, ip: '192.168.50.13'
      policy.vm.provider "openstack" do |v|
        v.server_name = 'policy'
      end
      policy.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['policy']
        s.env = conf
      end
    end

    config.vm.define :appc do |appc|
      appc.vm.hostname = 'appc'
      appc.vm.network :private_network, ip: '192.168.50.14'
      appc.vm.provider "openstack" do |v|
        v.server_name = 'appc'
      end
      appc.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['appc']
        s.env = conf
      end
    end

    config.vm.define :vfc do |vfc|
      vfc.vm.hostname = 'vfc'
      vfc.vm.network :private_network, ip: '192.168.50.15'
      vfc.vm.provider "openstack" do |v|
        v.server_name = 'vfc'
      end
      vfc.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/postinstall.sh'
        s.args = ['vfc']
        s.env = conf
      end
    end

  when 'testing'

    config.vm.define :testing do |testing|
      test_suite = ENV.fetch('TEST_SUITE', '*')
      test_case = ENV.fetch('TEST_CASE', '*')

      testing.vm.hostname = 'testing'
      testing.vm.network :private_network, ip: '192.168.50.3'
      testing.vm.synced_folder './tests', '/var/onap_tests/', create: true
      testing.vm.provider "virtualbox" do |v|
        v.customize ["modifyvm", :id, "--memory", 4 * 1024]
      end
      testing.vm.provider "libvirt" do |v|
        v.memory = 4 * 1024
        v.nested = true
      end
      testing.vm.provider "openstack" do |v|
        v.server_name = 'testing'
        v.flavor      = 'm1.small'
      end
      testing.vm.provision 'shell' do |s|
        s.path = 'vagrant_utils/unit_testing.sh'
        s.args = [test_suite, test_case]
        s.env = conf
      end
    end

  end
end
