#!/bin/bash

KARAF_VERSION="3.0.8"
KARAF_TARFILE_NAME="apache-karaf-${KARAF_VERSION}.tar"
BOOT_FEATURES="standard,ssh,scr,war,webconsole"

# fetch the standard karaf bits
rm -f /tmp/${KARAF_TARFILE_NAME}
curl -o /tmp/${KARAF_TARFILE_NAME}.gz http://onlab.vicci.org/onos/third-party/${KARAF_TARFILE_NAME}.gz

# get a small cell
source ${ONOS_ROOT}/tools/dev/bash_profile
cell borrow 60 1+0
scp /tmp/${KARAF_TARFILE_NAME}.gz sdn@${OC1}:/tmp/${KARAF_TARFILE_NAME}.gz

ssh sdn@${OC1} "

    # unroll the base karaf
    rm -rf karaf
    mkdir karaf
    cd karaf
    tar xf /tmp/${KARAF_TARFILE_NAME}.gz

    # set the ONOS default boot features
    perl -pi.old -e 's|^(featuresBoot=).*|\1${BOOT_FEATURES}|' apache-karaf-${KARAF_VERSION}/etc/org.apache.karaf.features.cfg

    # run karaf to fill the maven repo with required artifacts
    apache-karaf-${KARAF_VERSION}/bin/karaf server 1>/tmp/onos.out 2>/tmp/onos.err &

    sleep 15

    # stop karaf and capture the artifacts that were downloaded into the maven repo
    apache-karaf-${KARAF_VERSION}/bin/karaf stop 1>/tmp/onos.out 2>/tmp/onos.err &
    cd ~/.m2/repository
    tar cvf ~/repo.tar *

    # start with a fresh karaf and overlay the downloaded artifacts
    cd
    rm -rf karaf-offline
    mkdir karaf-offline
    cd karaf-offline
    tar xf /tmp/${KARAF_TARFILE_NAME}.gz

    # load the downloaded artifacts into the karaf system directory
    cd apache-karaf-${KARAF_VERSION}/system
    tar xf ~/repo.tar

    # create a zipped tar ball of the updated karaf tree
    cd ~/karaf-offline
    tar czf ~/karaf-offline.tar.gz apache-karaf-${KARAF_VERSION}
"

# fetch the new offline karaf tar ball
BUILD_NUMBER="apache-karaf-${KARAF_VERSION}-offline-$(date +'%Y%m%d')"
scp sdn@${OC1}:karaf-offline.tar.gz /tmp/${BUILD_NUMBER}.tar.gz

cell return






