# -*- mode: ruby -*-
# vi: set ft=ruby :
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0

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

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.ssh.insert_key = false
  config.ssh.forward_x11 = true

   # A single_host multiple_hostnames example
   config.vm.define "arvados-sh-mn" do |arv|
     arv.vm.box = "bento/debian-11"
     arv.vm.hostname = "harpo"
     # CPU/RAM
     config.vm.provider :virtualbox do |v|
       v.memory = 2048
       v.cpus = 2
     end

     # Networking
     # WEBUI PORT
     arv.vm.network "forwarded_port", guest: 8443, host: 8443
     # KEEPPROXY
     arv.vm.network "forwarded_port", guest: 25101, host: 25101
     # KEEPWEB
     arv.vm.network "forwarded_port", guest: 9002, host: 9002
     # WEBSOCKET
     arv.vm.network "forwarded_port", guest: 8002, host: 8002
     arv.vm.provision "shell",
                      inline: "cp -vr /vagrant/config_examples/single_host/multiple_hostnames /home/vagrant/local_config_dir;
                               cp -vr /vagrant/tests /home/vagrant/tests;
                               sed 's#cluster_fixme_or_this_wont_work#harpo#g;
                                    s#domain_fixme_or_this_wont_work#local#g;
                                    s#CONTROLLER_EXT_SSL_PORT=443#CONTROLLER_EXT_SSL_PORT=8443#g;
                                    s#RELEASE=\"production\"#RELEASE=\"development\"#g;
                                    s/# VERSION=.*$/VERSION=\"latest\"/g;' \
                                    /vagrant/local.params.example.single_host_multiple_hostnames > /tmp/local.params.single_host_multiple_hostnames"
                                    # s/#\ BRANCH=\"main\"/\ BRANCH=\"main\"/g;' \

     arv.vm.provision "shell",
                      inline: "cp -vr /tmp/local.params.single_host_multiple_hostnames /tmp/local.params.single_host_multiple_hostnames.falla;
                               cp -vr /vagrant/centos7-local.params.single_host_single_hostname-f258b604f831bb3bd7fab506c670b975ae8e4118 /tmp/local.params.single_host_multiple_hostnames"
     arv.vm.provision "shell",
                      path: "provision.sh",
                      args: [
                        # "--debug",
                        "--config /tmp/local.params.single_host_multiple_hostnames",
                        "--development",
                        "--test",
                        "--vagrant"
                      ].join(" ")
   end

   # A single_host single_hostname example
   config.vm.define "arvados-sh-sn" do |arv|
     #arv.vm.box = "bento/centos-7"
     arv.vm.box = "bento/ubuntu-20.04"
     arv.vm.hostname = "zeppo"
     # CPU/RAM
     config.vm.provider :virtualbox do |v|
       v.memory = 2048
       v.cpus = 2
     end
 
     # Networking
     # WEBUI PORT
     arv.vm.network "forwarded_port", guest: 443, host: 9443
     # WORKBENCH1
     arv.vm.network "forwarded_port", guest: 8805, host: 9444
     # WORKBENCH2
     arv.vm.network "forwarded_port", guest: 443, host: 9445
     # KEEPPROXY
     arv.vm.network "forwarded_port", guest: 8801, host: 35101
     # KEEPWEB
     arv.vm.network "forwarded_port", guest: 8802, host: 11002
     # WEBSHELL
     arv.vm.network "forwarded_port", guest: 8803, host: 14202
     # WEBSOCKET
     arv.vm.network "forwarded_port", guest: 8804, host: 18002
     arv.vm.provision "shell",
                      inline: "cp -vr /vagrant/config_examples/single_host/single_hostname /home/vagrant/local_config_dir;
                               cp -vr /vagrant/tests /home/vagrant/tests;
                               sed 's#cluster_fixme_or_this_wont_work#cnts7#g;
                                    s#domain_fixme_or_this_wont_work#local#g;
                                    s#HOSTNAME_EXT=\"hostname_ext_fixme_or_this_wont_work\"#HOSTNAME_EXT=\"cnts7.local\"#g;
                                    s#IP_INT=\"ip_int_fixme_or_this_wont_work\"#IP_INT=\"127.0.0.1\"#g;
                                    s#RELEASE=\"production\"#RELEASE=\"development\"#g;
                                    s/# BRANCH=\"main\"/BRANCH=\"main\"/g;
                                    s/# VERSION=.*$/VERSION=\"latest\"/g' \
                                    /vagrant/local.params.example.single_host_single_hostname > /tmp/local.params.single_host_single_hostname"

     arv.vm.provision "shell",
                      path: "provision.sh",
                      args: [
                        "--debug",
                        "--config /tmp/local.params.single_host_single_hostname",
                        "--test",
                        "--vagrant"
                      ].join(" ")
   end
end