Honeycomb/VPPJAPI workflow
From fd.io
WORK IN PROGRESS
alagalah - I'm currently doing some VPP / Honeycomb V3PO integration work so found something I had messed up and thanks to Maros for unmessing me, wanted to share it.
Background
- you've made an API change in VPP that has means a new JVPP JAR has been produced.
- you want to see this in Honeycomb V3PO but Honeycomb uses VPP artifacts from nexus... oh the humanity.
Where I develop I run these scripts:
On my HOST where source is developed and debugged:
#!/usr/bin/env bash FDIO="/home/alagalah/git/work/fdio" # Replace with yours # VPP: cd $FDIO/vpp make build # | build-vat | pkg-deb | wipe wipe-release | rebuild ... whatever works for your usecase # Honeycomb: mkdir -p ~/.m2/repository/io/fd/vpp/jvpp/16.09-SNAPSHOT mvn install:install-file -Dfile=$FDIO/vpp/build-root/build-vpp-native/vpp-api/java/jvpp-16.09.jar -DgroupId=io.fd.vpp -DartifactId=jvpp -Dversion=16.09-SNAPSHOT -Dpackaging=jar cd $FDIO/honeycomb/v3po mvn clean install -nsu -DskipTests # -nsu is the main thing here, it will pull artifacts from the M2 repository locally first
In my VMs (also Ubuntu 14.04 as luck would have it so I can copy things) where I am testing VPP+HC instances:
#!/usr/bin/env bash echo echo echo "Stopping VPP - assuming you are running debug image too, and checks for prod image" sudo stop vpp sudo killall ./install-vpp_debug-native/vpp/bin/vpp echo echo "Installing honeycomb/v3po karaf into ./v3po-karaf-1.0.0-SNAPSHOT/bin" sudo rm -rf /home/vagrant/v3po-karaf-1.0.0-SNAPSHOT sudo cp -a /fdio/honeycomb/v3po/karaf/target/v3po-karaf-1.0.0-SNAPSHOT.tar.gz /home/vagrant/ tar -xf v3po-karaf-1.0.0-SNAPSHOT.tar.gz echo echo "Copying VPP debug image dir: install-vpp_debug_native into ~" cp -a /fdio/vpp/build-root/install-vpp_debug-native/ /home/vagrant/ echo "Running ...." cd echo "... starting VPP debug image"; echo sudo ./install-vpp_debug-native/vpp/bin/vpp unix { cli-listen 127.0.0.1:5002} echo "... starting honeycomb/v3po"; echo sudo ./v3po-karaf-1.0.0-SNAPSHOT/bin/karaf clean
I will post my Vagrantfile setup for doing all this that uses an env.sh file to set up where repos are etc as well as expose gdb-server, HC REST and Karaf debug ports per VM (uses "base" + VM#)
ie:
- General idea is to "source ./env.sh" so Vagrantfile env vars are set.
export FDS_ENV_SET=1 # Vagrant up fails if this env var is not set ... this forces folks to check this carefully then source ./env.sh export FDS_NUM_NODES=2 export FDS_ODL_SUBNET="192.168.70." export FDS_FDIO_REPO=/home/alagalah/git/work/fdio # should have vpp and honeycomb clonded to here export FDS_VAGRANT_NICS=2
Vagrantfile snippet that borks if env.sh hasn't been sourced:
# Check to make sure you have done "source ./env.sh" envcheck = ENV['FDS_ENV_SET'] if envcheck != '1' abort("Please edit env.sh for your environment and use \"source ./env.sh\"") end