blob: 6c9ad043380e6475a5fab99016d9f46c25d502f7 [file] [log] [blame]
tom5ca34372014-09-19 17:43:41 -07001#!/bin/bash
Pavlin Radoslavov91413792014-10-15 11:00:32 -07002# -----------------------------------------------------------------------------
tom5ca34372014-09-19 17:43:41 -07003# Remotely configures & starts ONOS for the first time.
Pavlin Radoslavov91413792014-10-15 11:00:32 -07004# -----------------------------------------------------------------------------
tom5ca34372014-09-19 17:43:41 -07005
Ayaka Koshibef17f34a2015-09-24 19:31:48 -07006function _usage () {
7cat << _EOF_
8usage:
9 $(basename $0) [node]
10
11options:
12- [node] : The node to configure
13
14summary:
15 Remotely configures and starts ONOS for the first time.
16
Marc De Leenheerf8e02832017-01-17 15:33:11 -080017 The procedure for configuring a node includes determining base features,
Ayaka Koshibef17f34a2015-09-24 19:31:48 -070018 applications to load at startup, and clustering and logical network view
19 configurations, among others.
20
Marc De Leenheerf8e02832017-01-17 15:33:11 -080021 If [node] isn't specified, the default target becomes \$OCI.
Ayaka Koshibef17f34a2015-09-24 19:31:48 -070022
23_EOF_
24}
25
26[ "$1" = "-h" ] && _usage && exit 0
27
tom5ca34372014-09-19 17:43:41 -070028[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
29. $ONOS_ROOT/tools/build/envDefaults
30
Thomas Vachuska12bf4452015-06-26 09:15:38 -070031node=${1:-$OCI}
32remote=$ONOS_USER@$node
DongRyeol Cha5c0a9f02018-05-17 14:32:55 +090033remote_scp=$ONOS_USER@[$node]
tom5ca34372014-09-19 17:43:41 -070034
Thomas Vachuska785f5812015-03-19 01:11:00 -070035# ONOS boot features
Thomas Vachuskaf7adc6e2015-05-20 18:49:57 -070036export ONOS_BOOT_FEATURES="${ONOS_BOOT_FEATURES:-webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui}"
Thomas Vachuska734b7492015-03-11 20:42:07 -070037
Thomas Vachuska785f5812015-03-19 01:11:00 -070038# ONOS builtin apps and providers ignited by default
Thomas Vachuskadb7467a2015-04-17 11:06:53 -070039export ONOS_APPS="${ONOS_APPS:-drivers,openflow}"
Thomas Vachuska734b7492015-03-11 20:42:07 -070040
Bob Lantz7c751b52016-04-15 15:42:28 -070041ssh -tt $remote "
Jonathan Hart54b4a372015-03-27 15:34:32 -070042 echo \"onos.ip = \$(sudo ifconfig | grep $ONOS_NIC | cut -d: -f2 | cut -d\\ -f1)\" \
tomdefed6f2014-09-29 11:37:02 -070043 >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/system.properties
Yuta HIGUCHI18fdb252014-11-28 23:48:30 -080044
45 # Drop copycat related log level for the console
Jordan Haltermana0c5dc12018-11-12 11:04:46 -080046 echo "log4j2.logger.atomix.name = io.atomix.protocols.raft" >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.ops4j.pax.logging.cfg
47 echo "log4j2.logger.atomix.level = INFO" >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.ops4j.pax.logging.cfg
Yuta HIGUCHI18fdb252014-11-28 23:48:30 -080048
Thomas Vachuska785f5812015-03-19 01:11:00 -070049 # Patch the Apache Karaf distribution file to load ONOS boot features
50 perl -pi.old -e \"s|^(featuresBoot=.*,management)(,webconsole,.*)|\1,$ONOS_BOOT_FEATURES|\" \
Thomas Vachuska734b7492015-03-11 20:42:07 -070051 $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.apache.karaf.features.cfg
Thomas Vachuska785f5812015-03-19 01:11:00 -070052
53 # Customize which builtin apps should be ignited
54 for app in $(echo $ONOS_APPS | tr ',' ' '); do
Marc De Leenheerf8e02832017-01-17 15:33:11 -080055 if [ -d \"$ONOS_INSTALL_DIR/apps/org.onosproject.\$app/\" ]; then
56 touch $ONOS_INSTALL_DIR/apps/org.onosproject.\$app/active
57 elif [ -d \"$ONOS_INSTALL_DIR/apps/\$app\" ]; then
58 touch $ONOS_INSTALL_DIR/apps/\$app/active
59 else
60 echo \"[WARN] Don\'t know how to activate \$app\"
61 fi
Thomas Vachuska785f5812015-03-19 01:11:00 -070062 done
tomdefed6f2014-09-29 11:37:02 -070063"
Yuta HIGUCHI60731cb2014-11-11 01:34:46 -080064
Madan Jampaniec1df022015-10-13 21:23:03 -070065# Generate a default cluster.json from the ON* environment variables
66CDEF_FILE=/tmp/${remote}.cluster.json
Jordan Haltermand326de12018-07-31 11:57:21 -070067onos-gen-config $node $CDEF_FILE
DongRyeol Cha5c0a9f02018-05-17 14:32:55 +090068scp -q $CDEF_FILE $remote_scp:$ONOS_INSTALL_DIR/config/cluster.json
Yuta HIGUCHI60731cb2014-11-11 01:34:46 -080069
Thomas Vachuskae6360222015-07-21 10:10:36 -070070# Copy tools/package/config/ to remote
DongRyeol Cha5c0a9f02018-05-17 14:32:55 +090071scp -qr ${ONOS_ROOT}/tools/package/config/ $remote_scp:$ONOS_INSTALL_DIR/
Thomas Vachuskae6360222015-07-21 10:10:36 -070072
73# Copy the desired initial network configuration to remote if needed
Thomas Vachuska8d033672015-07-21 16:15:04 -070074[ -n "$ONOS_CFG" -a -f "$ONOS_CFG" -a "${1:-$OCI}" = "$OC1" ] && \
DongRyeol Cha5c0a9f02018-05-17 14:32:55 +090075 scp $ONOS_CFG $remote_scp:$ONOS_INSTALL_DIR/config/network-cfg.json || true