aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/tools/test/bin/onos-config
blob: e37dc3b2d2bcaec3be1126eaa46bf16d63efbeed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/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