blob: 5c972960324ee0a5e5c36e855ebbc94c2dda478c [file] [log] [blame]
# -*- mode: ruby -*-
# vi: set ft=ruby :
$tools = <<SCRIPT
apt-get update
apt-get upgrade
apt-get install -y pkg-config
apt-get install -y git cmake clang
apt-get install -y libpcre3-dev python3-dev swig
apt-get install -y libssl-dev
apt-get install -y protobuf-c-compiler libavl-dev libev-dev
apt-get install -y python3-pip virtualenv npm nodejs-legacy
# get the newer version, npm in 16.04 is too old
npm install -g n
n stable
ln -fs /usr/local/bin/node /usr/bin/node
ln -fs /usr/local/bin/npm /usr/bin/npm
ln -fs /usr/local/bin/npx /usr/bin/npx
ln -fs /bin/bash /bin/sh
SCRIPT
$libyang = <<SCRIPT
rm -rf libyang
git clone -b devel https://github.com/CESNET/libyang.git
cd libyang; mkdir build; cd build
cmake -DGEN_LANGUAGE_BINDINGS=ON .. && make && make install
cd ../..
ldconfig
SCRIPT
$libssh = <<SCRIPT
rm -rf libssh-0.7.5*
wget https://git.libssh.org/projects/libssh.git/snapshot/libssh-0.7.5.tar.gz
tar -xzf libssh-0.7.5.tar.gz
mkdir libssh-0.7.5/build && cd libssh-0.7.5/build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr .. && make -j2 && sudo make install
cd ../..
SCRIPT
$libnetconf2 = <<SCRIPT
rm -rf libnetconf2
git clone -b devel https://github.com/CESNET/libnetconf2.git
cd libnetconf2; mkdir build; cd build
cmake -DENABLE_PYTHON=ON .. && make && make install
cd ../..
ldconfig
SCRIPT
$sysrepo = <<SCRIPT
rm -rf sysrepo
git clone -b devel https://github.com/sysrepo/sysrepo.git
cd sysrepo; mkdir build; cd build
cmake -DGEN_LANGUAGE_BINDINGS=OFF .. && make && make install
cd ../..
ldconfig
SCRIPT
$netopeer = <<SCRIPT
rm -rf Netopeer2
git clone -b devel-server https://github.com/CESNET/Netopeer2.git
cd Netopeer2/keystored; mkdir build; cd build
cmake .. && make && make install
cd ../../server; mkdir build; cd build
cmake .. && make && make install
cd ../../..
chown -R vagrant:vagrant ./sysrepo/build/repository
SCRIPT
$liberoutergui = <<SCRIPT
rm -rf liberouter-gui
git clone https://github.com/CESNET/liberouter-gui.git
ln -s /home/vagrant/Netopeer2GUI liberouter-gui/modules/netopeer
cd liberouter-gui
cp -f modules/netopeer/app.config.json modules/
python3 ./bootstrap.py
virtualenv venv --system-site-packages -p python3
source venv/bin/activate
pip3 install --upgrade pip
pip3 install -r backend/requirements.txt
deactivate
cd frontend
npm install --unsafe-perm -g @angular/cli
npm install --unsafe-perm
cd ../..
SCRIPT
$backend = <<SCRIPT
cd liberouter-gui
source venv/bin/activate
python3 backend > backend.log 2>&1 &
deactivate
cd ..
SCRIPT
$frontend = <<SCRIPT
cd liberouter-gui/frontend
/usr/local/bin/ng serve --preserve-symlinks --host 0.0.0.0 --proxy proxy.json > ../frontend.log 2>&1 &
cd ../..
SCRIPT
$netconf = <<SCRIPT
/usr/local/bin/sysrepod -d > sysrepod.log 2>&1 &
/home/vagrant/sysrepo/build/examples/application_example turing-machine > turing_machine.log 2>&1 &
/usr/local/bin/netopeer2-server -d > netopeer2.log 2>&1 &
SCRIPT
# uncomment the following line for vagrant < 2.0.0
#Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com')
Vagrant.configure("2") do |config|
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "2048"]
vb.customize ["modifyvm", :id, "--cpus", "2"]
vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
vb.customize ["modifyvm", :id, "--audio", "none"]
vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
end
config.vm.define "Netopeer2GUI" do |gui|
gui.vm.synced_folder "../../", "/home/vagrant/Netopeer2GUI", create: true
gui.vm.box = "ubuntu/xenial64"
gui.vm.network "forwarded_port", host: "4200", guest: "4200", auto_correct: true
gui.vm.network "forwarded_port", host: "8830", host_ip: "127.0.0.1", guest: "830", auto_correct: true
gui.ssh.shell = "sh"
gui.vm.provision :shell, inline: $tools
gui.vm.provision :shell, inline: $libyang
gui.vm.provision :shell, inline: $libssh
gui.vm.provision :shell, inline: $libnetconf2
gui.vm.provision :shell, inline: $sysrepo
gui.vm.provision :shell, inline: $netopeer
gui.vm.provision :shell, inline: $liberoutergui
gui.vm.provision :shell, inline: $netconf, run: "always"
gui.vm.provision :shell, inline: $backend, run: "always"
gui.vm.provision :shell, inline: $frontend, run: "always"
end
end