Honeycomb/VPPJAPI workflow

From fd.io
Jump to: navigation, search


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.


  • 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 "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 "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 "Copying VPP debug image dir: install-vpp_debug_native into ~"
 cp -a /fdio/vpp/build-root/install-vpp_debug-native/ /home/vagrant/
 echo "Running ...."
 echo "... starting VPP debug image"; echo
 sudo ./install-vpp_debug-native/vpp/bin/vpp unix { cli-listen}
 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:

  1. 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

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\"")