#!/bin/bash # ----------------------------------------------------------------------------- # Remotely configures & starts ONOS for the first time. # ----------------------------------------------------------------------------- function _usage () { cat << _EOF_ usage: $(basename $0) [node] options: - [node] : The node to configure summary: Remotely configures and starts ONOS for the first time. The procedure for configruing a node include determining base features, applications to load at startup, and clustering and logical network view configurations, among others. If [node] isn't specified, the defualt target becomes \$OCI. _EOF_ } [ "$1" = "-h" ] && _usage && exit 0 [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 . $ONOS_ROOT/tools/build/envDefaults node=${1:-$OCI} remote=$ONOS_USER@$node # ONOS boot features export ONOS_BOOT_FEATURES="${ONOS_BOOT_FEATURES:-webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui}" # ONOS builtin apps and providers ignited by default export ONOS_APPS="${ONOS_APPS:-drivers,openflow}" ssh $remote " echo \"onos.ip = \$(sudo ifconfig | grep $ONOS_NIC | cut -d: -f2 | cut -d\\ -f1)\" \ >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/system.properties # Drop copycat related log level for the console echo "log4j.logger.net.kuujo.copycat= INFO" \ >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.ops4j.pax.logging.cfg # Patch the Apache Karaf distribution file to load ONOS boot features perl -pi.old -e \"s|^(featuresBoot=.*,management)(,webconsole,.*)|\1,$ONOS_BOOT_FEATURES|\" \ $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.apache.karaf.features.cfg # Customize which builtin apps should be ignited for app in $(echo $ONOS_APPS | tr ',' ' '); do touch $ONOS_INSTALL_DIR/apps/org.onosproject.\$app/active done " # Generate a default cluster.json from the ON* environment variables CDEF_FILE=/tmp/${remote}.cluster.json onos-gen-partitions $CDEF_FILE scp -q $CDEF_FILE $remote:$ONOS_INSTALL_DIR/config/cluster.json # Copy tools/package/config/ to remote scp -qr ${ONOS_ROOT}/tools/package/config/ $remote:$ONOS_INSTALL_DIR/ # Copy the desired initial network configuration to remote if needed [ -n "$ONOS_CFG" -a -f "$ONOS_CFG" -a "${1:-$OCI}" = "$OC1" ] && \ scp $ONOS_CFG $remote:$ONOS_INSTALL_DIR/config/network-cfg.json