alshabib

Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next

1 +package org.onlab.onos.cluster;
2 +
3 +import org.onlab.onos.net.DeviceId;
4 +import org.onlab.onos.net.MastershipRole;
5 +
6 +/**
7 + * Service for administering the inventory of device masterships.
8 + */
9 +public interface MastershipAdminService {
10 +
11 + /**
12 + * Applies the current mastership role for the specified device.
13 + *
14 + * @param instance controller instance identifier
15 + * @param deviceId device identifier
16 + * @param role requested role
17 + */
18 + void setRole(InstanceId instance, DeviceId deviceId, MastershipRole role);
19 +
20 +}
...@@ -4,7 +4,7 @@ import org.onlab.onos.event.AbstractEvent; ...@@ -4,7 +4,7 @@ import org.onlab.onos.event.AbstractEvent;
4 import org.onlab.onos.net.DeviceId; 4 import org.onlab.onos.net.DeviceId;
5 5
6 /** 6 /**
7 - * Describes infrastructure device event. 7 + * Describes a device mastership event.
8 */ 8 */
9 public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceId> { 9 public class MastershipEvent extends AbstractEvent<MastershipEvent.Type, DeviceId> {
10 10
......
...@@ -49,6 +49,6 @@ public interface MastershipService { ...@@ -49,6 +49,6 @@ public interface MastershipService {
49 * 49 *
50 * @param listener the mastership listener 50 * @param listener the mastership listener
51 */ 51 */
52 - void removeListemer(MastershipListener listener); 52 + void removeListener(MastershipListener listener);
53 53
54 } 54 }
......
1 +package org.onlab.onos.cluster;
2 +
3 +import java.util.Set;
4 +
5 +import org.onlab.onos.net.DeviceId;
6 +import org.onlab.onos.net.MastershipRole;
7 +
8 +/**
9 + * Manages inventory of mastership roles for devices, across controller instances.
10 + */
11 +public interface MastershipStore {
12 +
13 + // three things to map: InstanceId, DeviceId, MastershipRole
14 +
15 + /**
16 + * Sets a device's role for a specified controller instance.
17 + *
18 + * @param instance controller instance identifier
19 + * @param deviceId device identifier
20 + * @param role new role
21 + * @return a mastership event
22 + */
23 + MastershipEvent setRole(
24 + InstanceId instance, DeviceId deviceId, MastershipRole role);
25 +
26 + /**
27 + * Adds or updates the mastership information for a device.
28 + *
29 + * @param instance controller instance identifier
30 + * @param deviceId device identifier
31 + * @param role new role
32 + * @return a mastership event
33 + */
34 + MastershipEvent addOrUpdateDevice(
35 + InstanceId instance, DeviceId deviceId, MastershipRole role);
36 +
37 + /**
38 + * Returns the master for a device.
39 + *
40 + * @param deviceId the device identifier
41 + * @return the instance identifier of the master
42 + */
43 + InstanceId getMaster(DeviceId deviceId);
44 +
45 + /**
46 + * Returns the devices that a controller instance is master of.
47 + *
48 + * @param instanceId the instance identifier
49 + * @return a set of device identifiers
50 + */
51 + Set<DeviceId> getDevices(InstanceId instanceId);
52 +
53 + /**
54 + * Returns the role of a device for a specific controller instance.
55 + *
56 + * @param instanceId the instance identifier
57 + * @param deviceId the device identifiers
58 + * @return the role
59 + */
60 + MastershipRole getRole(InstanceId instanceId, DeviceId deviceId);
61 +}
...@@ -13,7 +13,9 @@ public interface DeviceAdminService { ...@@ -13,7 +13,9 @@ public interface DeviceAdminService {
13 * 13 *
14 * @param deviceId device identifier 14 * @param deviceId device identifier
15 * @param role requested role 15 * @param role requested role
16 + * @deprecated Will be removed in favor of MastershipAdminService.setRole()
16 */ 17 */
18 + @Deprecated
17 void setRole(DeviceId deviceId, MastershipRole role); 19 void setRole(DeviceId deviceId, MastershipRole role);
18 20
19 /** 21 /**
......
1 package org.onlab.onos.net.device.impl; 1 package org.onlab.onos.net.device.impl;
2 2
3 +import com.hazelcast.core.HazelcastInstance;
3 import org.junit.After; 4 import org.junit.After;
4 import org.junit.Before; 5 import org.junit.Before;
5 import org.junit.Test; 6 import org.junit.Test;
...@@ -23,6 +24,7 @@ import org.onlab.onos.net.device.PortDescription; ...@@ -23,6 +24,7 @@ import org.onlab.onos.net.device.PortDescription;
23 import org.onlab.onos.net.provider.AbstractProvider; 24 import org.onlab.onos.net.provider.AbstractProvider;
24 import org.onlab.onos.net.provider.ProviderId; 25 import org.onlab.onos.net.provider.ProviderId;
25 import org.onlab.onos.event.impl.TestEventDispatcher; 26 import org.onlab.onos.event.impl.TestEventDispatcher;
27 +import org.onlab.onos.store.StoreService;
26 import org.onlab.onos.store.device.impl.DistributedDeviceStore; 28 import org.onlab.onos.store.device.impl.DistributedDeviceStore;
27 29
28 import com.google.common.collect.Iterables; 30 import com.google.common.collect.Iterables;
...@@ -76,7 +78,6 @@ public class DistributedDeviceManagerTest { ...@@ -76,7 +78,6 @@ public class DistributedDeviceManagerTest {
76 service = mgr; 78 service = mgr;
77 admin = mgr; 79 admin = mgr;
78 registry = mgr; 80 registry = mgr;
79 - dstore = new DistributedDeviceStore();
80 // FIXME should be reading the hazelcast.xml 81 // FIXME should be reading the hazelcast.xml
81 Config config = new Config(); 82 Config config = new Config();
82 // avoid accidentally joining other cluster 83 // avoid accidentally joining other cluster
...@@ -88,7 +89,7 @@ public class DistributedDeviceManagerTest { ...@@ -88,7 +89,7 @@ public class DistributedDeviceManagerTest {
88 config.getNetworkConfig().getJoin() 89 config.getNetworkConfig().getJoin()
89 .getMulticastConfig() 90 .getMulticastConfig()
90 .setEnabled(false); 91 .setEnabled(false);
91 - dstore.theInstance = Hazelcast.newHazelcastInstance(config); 92 + dstore = new TestDistributedDeviceStore(Hazelcast.newHazelcastInstance(config));
92 dstore.activate(); 93 dstore.activate();
93 mgr.store = dstore; 94 mgr.store = dstore;
94 mgr.eventDispatcher = new TestEventDispatcher(); 95 mgr.eventDispatcher = new TestEventDispatcher();
...@@ -280,4 +281,14 @@ public class DistributedDeviceManagerTest { ...@@ -280,4 +281,14 @@ public class DistributedDeviceManagerTest {
280 } 281 }
281 } 282 }
282 283
284 + private class TestDistributedDeviceStore extends DistributedDeviceStore {
285 + public TestDistributedDeviceStore(final HazelcastInstance hazelcastInstance) {
286 + storeService = new StoreService() {
287 + @Override
288 + public HazelcastInstance getHazelcastInstance() {
289 + return hazelcastInstance;
290 + }
291 + };
292 + }
293 + }
283 } 294 }
......
1 +package org.onlab.onos.store;
2 +
3 +import com.hazelcast.core.HazelcastInstance;
4 +
5 +/**
6 + * Bootstrap service to get a handle on a share Hazelcast instance.
7 + */
8 +public interface StoreService {
9 +
10 + /**
11 + * Returns the shared Hazelcast instance for use as a distributed store
12 + * backing.
13 + *
14 + * @return shared Hazelcast instance
15 + */
16 + HazelcastInstance getHazelcastInstance();
17 +
18 +}
...@@ -40,6 +40,7 @@ import org.onlab.onos.net.device.DeviceEvent; ...@@ -40,6 +40,7 @@ import org.onlab.onos.net.device.DeviceEvent;
40 import org.onlab.onos.net.device.DeviceStore; 40 import org.onlab.onos.net.device.DeviceStore;
41 import org.onlab.onos.net.device.PortDescription; 41 import org.onlab.onos.net.device.PortDescription;
42 import org.onlab.onos.net.provider.ProviderId; 42 import org.onlab.onos.net.provider.ProviderId;
43 +import org.onlab.onos.store.StoreService;
43 import org.onlab.util.KryoPool; 44 import org.onlab.util.KryoPool;
44 import org.slf4j.Logger; 45 import org.slf4j.Logger;
45 46
...@@ -187,12 +188,15 @@ public class DistributedDeviceStore implements DeviceStore { ...@@ -187,12 +188,15 @@ public class DistributedDeviceStore implements DeviceStore {
187 188
188 // FIXME change to protected once we remove DistributedDeviceManagerTest. 189 // FIXME change to protected once we remove DistributedDeviceManagerTest.
189 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 190 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
191 + protected StoreService storeService;
192 +
190 /*protected*/public HazelcastInstance theInstance; 193 /*protected*/public HazelcastInstance theInstance;
191 194
192 195
193 @Activate 196 @Activate
194 public void activate() { 197 public void activate() {
195 log.info("Started"); 198 log.info("Started");
199 + theInstance = storeService.getHazelcastInstance();
196 200
197 // IMap event handler needs value 201 // IMap event handler needs value
198 final boolean includeValue = true; 202 final boolean includeValue = true;
......
1 +package org.onlab.onos.store.impl;
2 +
3 +import com.hazelcast.core.Hazelcast;
4 +import com.hazelcast.core.HazelcastInstance;
5 +import org.apache.felix.scr.annotations.Activate;
6 +import org.apache.felix.scr.annotations.Component;
7 +import org.apache.felix.scr.annotations.Deactivate;
8 +import org.apache.felix.scr.annotations.Service;
9 +import org.onlab.onos.store.StoreService;
10 +import org.slf4j.Logger;
11 +import org.slf4j.LoggerFactory;
12 +
13 +/**
14 + * Auxiliary bootstrap of distributed store.
15 + */
16 +@Component(immediate = true)
17 +@Service
18 +public class StoreManager implements StoreService {
19 +
20 + private final Logger log = LoggerFactory.getLogger(getClass());
21 +
22 + protected HazelcastInstance instance;
23 +
24 + @Activate
25 + public void activate() {
26 + instance = Hazelcast.newHazelcastInstance();
27 + log.info("Started");
28 + }
29 +
30 + @Deactivate
31 + public void deactivate() {
32 + log.info("Stopped");
33 + }
34 +
35 + @Override
36 + public HazelcastInstance getHazelcastInstance() {
37 + return instance;
38 + }
39 +}
...@@ -10,9 +10,13 @@ ...@@ -10,9 +10,13 @@
10 <bundle>mvn:com.google.guava/guava/18.0</bundle> 10 <bundle>mvn:com.google.guava/guava/18.0</bundle>
11 <bundle>mvn:io.netty/netty/3.9.2.Final</bundle> 11 <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
12 12
13 + <bundle>mvn:com.hazelcast/hazelcast/3.3</bundle>
14 + <bundle>mvn:com.eclipsesource.minimal-json/minimal-json/0.9.1</bundle>
15 +
13 <bundle>mvn:com.esotericsoftware.kryo/kryo/2.24.0</bundle> 16 <bundle>mvn:com.esotericsoftware.kryo/kryo/2.24.0</bundle>
14 <bundle>mvn:com.esotericsoftware/minlog/1.3.0</bundle> 17 <bundle>mvn:com.esotericsoftware/minlog/1.3.0</bundle>
15 <bundle>mvn:org.objenesis/objenesis/2.1</bundle> 18 <bundle>mvn:org.objenesis/objenesis/2.1</bundle>
19 + <bundle>mvn:de.javakaffee/kryo-serializers/0.27</bundle>
16 </feature> 20 </feature>
17 21
18 <feature name="onos-thirdparty-web" version="1.0.0" 22 <feature name="onos-thirdparty-web" version="1.0.0"
...@@ -42,6 +46,13 @@ ...@@ -42,6 +46,13 @@
42 description="ONOS core components"> 46 description="ONOS core components">
43 <feature>onos-api</feature> 47 <feature>onos-api</feature>
44 <bundle>mvn:org.onlab.onos/onos-core-net/1.0.0-SNAPSHOT</bundle> 48 <bundle>mvn:org.onlab.onos/onos-core-net/1.0.0-SNAPSHOT</bundle>
49 + <bundle>mvn:org.onlab.onos/onos-core-store/1.0.0-SNAPSHOT</bundle>
50 + </feature>
51 +
52 + <feature name="onos-core-trivial" version="1.0.0"
53 + description="ONOS core components">
54 + <feature>onos-api</feature>
55 + <bundle>mvn:org.onlab.onos/onos-core-net/1.0.0-SNAPSHOT</bundle>
45 <bundle>mvn:org.onlab.onos/onos-core-trivial/1.0.0-SNAPSHOT</bundle> 56 <bundle>mvn:org.onlab.onos/onos-core-trivial/1.0.0-SNAPSHOT</bundle>
46 </feature> 57 </feature>
47 58
......
...@@ -139,6 +139,11 @@ ...@@ -139,6 +139,11 @@
139 <version>3.3</version> 139 <version>3.3</version>
140 </dependency> 140 </dependency>
141 <dependency> 141 <dependency>
142 + <groupId>com.eclipsesource.minimal-json</groupId>
143 + <artifactId>minimal-json</artifactId>
144 + <version>0.9.1</version>
145 + </dependency>
146 + <dependency>
142 <groupId>com.esotericsoftware.kryo</groupId> 147 <groupId>com.esotericsoftware.kryo</groupId>
143 <artifactId>kryo</artifactId> 148 <artifactId>kryo</artifactId>
144 <version>2.24.0</version> 149 <version>2.24.0</version>
......
...@@ -26,7 +26,7 @@ mkdir bin ...@@ -26,7 +26,7 @@ mkdir bin
26 26
27 # Stage the ONOS admin scripts and patch in Karaf service wrapper extras 27 # Stage the ONOS admin scripts and patch in Karaf service wrapper extras
28 cp -r $ONOS_ROOT/tools/package/bin . 28 cp -r $ONOS_ROOT/tools/package/bin .
29 -cp -r $ONOS_ROOT/tools/package/wrapper/* $KARAF_DIST 29 +cp -r $ONOS_ROOT/tools/package/debian $ONOS_STAGE/debian
30 cp -r $ONOS_ROOT/tools/package/etc/* $KARAF_DIST/etc 30 cp -r $ONOS_ROOT/tools/package/etc/* $KARAF_DIST/etc
31 31
32 # Stage the ONOS bundles 32 # Stage the ONOS bundles
...@@ -40,7 +40,7 @@ perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.apache.karaf.cellar/apa ...@@ -40,7 +40,7 @@ perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.apache.karaf.cellar/apa
40 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg 40 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
41 41
42 # Patch the Apache Karaf distribution file to load ONOS features 42 # Patch the Apache Karaf distribution file to load ONOS features
43 -perl -pi.old -e 's|^(featuresBoot=.*)|\1,wrapper,cellar|' \ 43 +perl -pi.old -e 's|^(featuresBoot=.*)|\1,cellar|' \
44 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg 44 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
45 45
46 # ONOS Patching ---------------------------------------------------------------- 46 # ONOS Patching ----------------------------------------------------------------
...@@ -49,15 +49,10 @@ perl -pi.old -e 's|^(featuresBoot=.*)|\1,wrapper,cellar|' \ ...@@ -49,15 +49,10 @@ perl -pi.old -e 's|^(featuresBoot=.*)|\1,wrapper,cellar|' \
49 perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.onlab.onos/onos-features/$ONOS_VERSION/xml/features|" \ 49 perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.onlab.onos/onos-features/$ONOS_VERSION/xml/features|" \
50 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg 50 $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
51 51
52 -# Patch the Apache Karaf distribution file to load ONOS features
53 -#perl -pi.old -e 's|^(featuresBoot=.*)|\1,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow,onos-app-tvue,onos-app-fwd|' \
54 -# $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg
55 -
56 # Patch the Apache Karaf distribution with ONOS branding bundle 52 # Patch the Apache Karaf distribution with ONOS branding bundle
57 cp $M2_REPO/org/onlab/onos/onos-branding/$ONOS_VERSION/onos-branding-*.jar \ 53 cp $M2_REPO/org/onlab/onos/onos-branding/$ONOS_VERSION/onos-branding-*.jar \
58 $ONOS_STAGE/$KARAF_DIST/lib 54 $ONOS_STAGE/$KARAF_DIST/lib
59 55
60 -
61 # Now package up the ONOS tar file 56 # Now package up the ONOS tar file
62 cd $ONOS_STAGE_ROOT 57 cd $ONOS_STAGE_ROOT
63 COPYFILE_DISABLE=1 tar zcf $ONOS_TAR $ONOS_BITS 58 COPYFILE_DISABLE=1 tar zcf $ONOS_TAR $ONOS_BITS
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
3 # ONOS command-line client 3 # ONOS command-line client
4 #------------------------------------------------------------------------------- 4 #-------------------------------------------------------------------------------
5 5
6 -export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 6 +export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk-amd64/}
7 7
8 cd $(dirname $0)/../apache-karaf-*/bin 8 cd $(dirname $0)/../apache-karaf-*/bin
9 ./client -h localhost "$@" 9 ./client -h localhost "$@"
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
3 # Starts ONOS Apache Karaf container 3 # Starts ONOS Apache Karaf container
4 #------------------------------------------------------------------------------- 4 #-------------------------------------------------------------------------------
5 5
6 -export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 6 +export JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-openjdk-amd64/}
7 7
8 -cd $(dirname $0)/../apache-karaf-*/bin 8 +cd /opt/onos
9 -./karaf "$@" 9 +/opt/onos/apache-karaf-3.0.1/bin/karaf "$@"
10 10
......
1 +description "Open Networking Operating System"
2 +author "ON.Lab"
3 +
4 +start on (net-device-up
5 + and local-filesystems
6 + and runlevel [2345])
7 +stop on runlevel [016]
8 +
9 +console output
10 +kill timeout 60
11 +respawn
12 +
13 +env LANG=en_US.UTF-8
14 +env JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
15 +
16 +script
17 + [ -f /opt/onos/options ] && . /opt/onos/options
18 + start-stop-daemon --signal INT --start --chuid sdn \
19 + --exec /opt/onos/bin/onos-ctl -- $ONOS_OPTS \
20 + >/opt/onos/var/stdout.log 2>/opt/onos/var/stderr.log
21 +end script
1 -#! /bin/sh
2 -
3 -# ------------------------------------------------------------------------
4 -# Licensed to the Apache Software Foundation (ASF) under one or more
5 -# contributor license agreements. See the NOTICE file distributed with
6 -# this work for additional information regarding copyright ownership.
7 -# The ASF licenses this file to You under the Apache License, Version 2.0
8 -# (the "License"); you may not use this file except in compliance with
9 -# the License. You may obtain a copy of the License at
10 -#
11 -# http://www.apache.org/licenses/LICENSE-2.0
12 -#
13 -# Unless required by applicable law or agreed to in writing, software
14 -# distributed under the License is distributed on an "AS IS" BASIS,
15 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 -# See the License for the specific language governing permissions and
17 -# limitations under the License.
18 -# ------------------------------------------------------------------------
19 -
20 -# If require, set the JAVA_HOME to launch the wrapper
21 -#
22 -#JAVA_HOME=
23 -#
24 -
25 -# Application
26 -APP_NAME="onos"
27 -APP_LONG_NAME="onos"
28 -
29 -# Wrapper
30 -WRAPPER_CMD="/opt/onos/apache-karaf-3.0.1/bin/${APP_NAME}-wrapper"
31 -WRAPPER_CONF="/opt/onos/apache-karaf-3.0.1/etc/${APP_NAME}-wrapper.conf"
32 -
33 -# Priority at which to run the wrapper. See "man nice" for valid priorities.
34 -# nice is only used if a priority is specified.
35 -PRIORITY=
36 -
37 -# Location of the data folder.
38 -DATADIR="/opt/onos/apache-karaf-3.0.1/data"
39 -
40 -# Location of the pid file.
41 -PIDDIR="/opt/onos/apache-karaf-3.0.1/data"
42 -
43 -# If uncommented, causes the Wrapper to be shutdown using an anchor file.
44 -# When launched with the 'start' command, it will also ignore all INT and
45 -# TERM signals.
46 -#IGNORE_SIGNALS=true
47 -
48 -# If specified, the Wrapper will be run as the specified user.
49 -# IMPORTANT - Make sure that the user has the required privileges to write
50 -# the PID file and wrapper.log files. Failure to be able to write the log
51 -# file will cause the Wrapper to exit without any way to write out an error
52 -# message.
53 -# NOTE - This will set the user which is used to run the Wrapper as well as
54 -# the JVM and is not useful in situations where a privileged resource or
55 -# port needs to be allocated prior to the user being changed.
56 -#RUN_AS_USER=
57 -
58 -# The following two lines are used by the chkconfig command. Change as is
59 -# appropriate for your application. They should remain commented.
60 -# chkconfig: 2345 20 80
61 -# description: onos
62 -
63 -# Do not modify anything beyond this point
64 -#-----------------------------------------------------------------------------
65 -
66 -# Get the fully qualified path to the script
67 -case $0 in
68 - /*)
69 - SCRIPT="$0"
70 - ;;
71 - *)
72 - PWD=`pwd`
73 - SCRIPT="$PWD/$0"
74 - ;;
75 -esac
76 -
77 -# Resolve the true real path without any sym links.
78 -CHANGED=true
79 -while [ "X$CHANGED" != "X" ]
80 -do
81 - # Change spaces to ":" so the tokens can be parsed.
82 - SCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
83 - # Get the real path to this script, resolving any symbolic links
84 - TOKENS=`echo $SCRIPT | sed -e 's;/; ;g'`
85 - REALPATH=
86 - for C in $TOKENS; do
87 - REALPATH="$REALPATH/$C"
88 - while [ -h "$REALPATH" ] ; do
89 - LS="`ls -ld "$REALPATH"`"
90 - LINK="`expr "$LS" : '.*-> \(.*\)$'`"
91 - if expr "$LINK" : '/.*' > /dev/null; then
92 - REALPATH="$LINK"
93 - else
94 - REALPATH="`dirname "$REALPATH"`""/$LINK"
95 - fi
96 - done
97 - done
98 - # Change ":" chars back to spaces.
99 - REALPATH=`echo $REALPATH | sed -e 's;:; ;g'`
100 -
101 - if [ "$REALPATH" = "$SCRIPT" ]
102 - then
103 - CHANGED=""
104 - else
105 - SCRIPT="$REALPATH"
106 - fi
107 -done
108 -
109 -# Change the current directory to the location of the script
110 -cd "`dirname "$REALPATH"`"
111 -REALDIR=`pwd`
112 -
113 -# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if
114 -# the working directory is later changed.
115 -FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
116 -if [ "$FIRST_CHAR" != "/" ]
117 -then
118 - PIDDIR=$REALDIR/$PIDDIR
119 -fi
120 -# Same test for WRAPPER_CMD
121 -FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1`
122 -if [ "$FIRST_CHAR" != "/" ]
123 -then
124 - WRAPPER_CMD=$REALDIR/$WRAPPER_CMD
125 -fi
126 -# Same test for WRAPPER_CONF
127 -FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1`
128 -if [ "$FIRST_CHAR" != "/" ]
129 -then
130 - WRAPPER_CONF=$REALDIR/$WRAPPER_CONF
131 -fi
132 -
133 -# Process ID
134 -ANCHORFILE="$PIDDIR/$APP_NAME.anchor"
135 -PIDFILE="$PIDDIR/$APP_NAME.pid"
136 -LOCKDIR="/var/lock/subsys"
137 -LOCKFILE="$LOCKDIR/$APP_NAME"
138 -pid=""
139 -
140 -# Resolve the location of the 'ps' command
141 -PSEXE="/usr/bin/ps"
142 -if [ ! -x $PSEXE ]
143 -then
144 - PSEXE="/bin/ps"
145 - if [ ! -x $PSEXE ]
146 - then
147 - echo "Unable to locate 'ps'."
148 - echo "Please report this message along with the location of the command on your system."
149 - exit 1
150 - fi
151 -fi
152 -
153 -# Resolve the os
154 -DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
155 -case "$DIST_OS" in
156 - 'sunos')
157 - DIST_OS="solaris"
158 - ;;
159 - 'hp-ux' | 'hp-ux64')
160 - DIST_OS="hpux"
161 - ;;
162 - 'darwin')
163 - DIST_OS="macosx"
164 - ;;
165 - 'unix_sv')
166 - DIST_OS="unixware"
167 - ;;
168 -esac
169 -
170 -# Resolve the architecture
171 -DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]`
172 -if [ "$DIST_ARCH" = "unknown" ]
173 -then
174 - DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]`
175 -fi
176 -case "$DIST_ARCH" in
177 - 'amd64' | 'ia32' | 'ia64' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64')
178 - DIST_ARCH="x86"
179 - ;;
180 - 'ip27')
181 - DIST_ARCH="mips"
182 - ;;
183 - 'power' | 'powerpc' | 'power_pc' | 'ppc64')
184 - DIST_ARCH="ppc"
185 - ;;
186 - 'pa_risc' | 'pa-risc')
187 - DIST_ARCH="parisc"
188 - ;;
189 - 'sun4u' | 'sparcv9')
190 - DIST_ARCH="sparc"
191 - ;;
192 - '9000/800')
193 - DIST_ARCH="parisc"
194 - ;;
195 -esac
196 -
197 -# Decide on the wrapper binary to use.
198 -# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit
199 -# platforms, if the 64-bit binary exists then the distribution most
200 -# likely wants to use long names. Otherwise, look for the default.
201 -# For macosx, we also want to look for universal binaries.
202 -WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
203 -if [ -x $WRAPPER_TEST_CMD ]
204 -then
205 - WRAPPER_CMD="$WRAPPER_TEST_CMD"
206 -else
207 - if [ "$DIST_OS" = "macosx" ]
208 - then
209 - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-32"
210 - if [ -x $WRAPPER_TEST_CMD ]
211 - then
212 - WRAPPER_CMD="$WRAPPER_TEST_CMD"
213 - else
214 - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
215 - if [ -x $WRAPPER_TEST_CMD ]
216 - then
217 - WRAPPER_CMD="$WRAPPER_TEST_CMD"
218 - else
219 - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-64"
220 - if [ -x $WRAPPER_TEST_CMD ]
221 - then
222 - WRAPPER_CMD="$WRAPPER_TEST_CMD"
223 - else
224 - if [ ! -x $WRAPPER_CMD ]
225 - then
226 - echo "Unable to locate any of the following binaries:"
227 - echo " $WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
228 - echo " $WRAPPER_CMD-$DIST_OS-universal-32"
229 - echo " $WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
230 - echo " $WRAPPER_CMD-$DIST_OS-universal-64"
231 - echo " $WRAPPER_CMD"
232 - exit 1
233 - fi
234 - fi
235 - fi
236 - fi
237 - else
238 - WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
239 - if [ -x $WRAPPER_TEST_CMD ]
240 - then
241 - WRAPPER_CMD="$WRAPPER_TEST_CMD"
242 - else
243 - if [ ! -x $WRAPPER_CMD ]
244 - then
245 - echo "Unable to locate any of the following binaries:"
246 - echo " $WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
247 - echo " $WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
248 - echo " $WRAPPER_CMD"
249 - exit 1
250 - fi
251 - fi
252 - fi
253 -fi
254 -
255 -# Build the nice clause
256 -if [ "X$PRIORITY" = "X" ]
257 -then
258 - CMDNICE=""
259 -else
260 - CMDNICE="nice -$PRIORITY"
261 -fi
262 -
263 -# Build the anchor file clause.
264 -if [ "X$IGNORE_SIGNALS" = "X" ]
265 -then
266 - ANCHORPROP=
267 - IGNOREPROP=
268 -else
269 - ANCHORPROP=wrapper.anchorfile=$ANCHORFILE
270 - IGNOREPROP=wrapper.ignore_signals=TRUE
271 -fi
272 -
273 -# Build the lock file clause. Only create a lock file if the lock directory exists on this platform.
274 -if [ -d $LOCKDIR ]
275 -then
276 - LOCKPROP=wrapper.lockfile=$LOCKFILE
277 -else
278 - LOCKPROP=
279 -fi
280 -
281 -checkUser() {
282 - # Check the configured user. If necessary rerun this script as the desired user.
283 - if [ "X$RUN_AS_USER" != "X" ]
284 - then
285 - # Resolve the location of the 'id' command
286 - IDEXE="/usr/xpg4/bin/id"
287 - if [ ! -x $IDEXE ]
288 - then
289 - IDEXE="/usr/bin/id"
290 - if [ ! -x $IDEXE ]
291 - then
292 - echo "Unable to locate 'id'."
293 - echo "Please report this message along with the location of the command on your system."
294 - exit 1
295 - fi
296 - fi
297 -
298 - if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
299 - then
300 - # Already running as the configured user. Avoid password prompts by not calling su.
301 - RUN_AS_USER=""
302 - fi
303 - fi
304 - if [ "X$RUN_AS_USER" != "X" ]
305 - then
306 - # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
307 - # able to create the lock file. The Wrapper will be able to update this file once it
308 - # is created but will not be able to delete it on shutdown. If $2 is defined then
309 - # the lock file should be created for the current command
310 - if [ "X$LOCKPROP" != "X" ]
311 - then
312 - if [ "X$2" != "X" ]
313 - then
314 - # Resolve the primary group
315 - RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
316 - if [ "X$RUN_AS_GROUP" = "X" ]
317 - then
318 - RUN_AS_GROUP=$RUN_AS_USER
319 - fi
320 - touch $LOCKFILE
321 - chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
322 - fi
323 - fi
324 -
325 - # Still want to change users, recurse. This means that the user will only be
326 - # prompted for a password once.
327 - su -m $RUN_AS_USER -s /bin/sh -c "$REALPATH $1"
328 - RETVAL=$?
329 -
330 - # Now that we are the original user again, we may need to clean up the lock file.
331 - if [ "X$LOCKPROP" != "X" ]
332 - then
333 - getpid
334 - if [ "X$pid" = "X" ]
335 - then
336 - # Wrapper is not running so make sure the lock file is deleted.
337 - if [ -f $LOCKFILE ]
338 - then
339 - rm $LOCKFILE
340 - fi
341 - fi
342 - fi
343 -
344 - exit $RETVAL
345 - fi
346 -}
347 -
348 -getpid() {
349 - if [ -f $PIDFILE ]
350 - then
351 - if [ -r $PIDFILE ]
352 - then
353 - pid=`cat $PIDFILE`
354 - if [ "X$pid" != "X" ]
355 - then
356 - # It is possible that 'a' process with the pid exists but that it is not the
357 - # correct process. This can happen in a number of cases, but the most
358 - # common is during system startup after an unclean shutdown.
359 - # The ps statement below looks for the specific wrapper command running as
360 - # the pid. If it is not found then the pid file is considered to be stale.
361 - if [ "$DIST_OS" = "solaris" ]
362 - then
363 - pidtest=`$PSEXE -p $pid -o comm | grep $WRAPPER_CMD | tail -1`
364 - else
365 - pidtest=`$PSEXE -p $pid -o command | grep $WRAPPER_CMD | tail -1`
366 - fi
367 - if [ "X$pidtest" = "X" ]
368 - then
369 - # This is a stale pid file.
370 - rm -f $PIDFILE
371 - echo "Removed stale pid file: $PIDFILE"
372 - pid=""
373 - fi
374 - fi
375 - else
376 - echo "Cannot read $PIDFILE."
377 - exit 1
378 - fi
379 - fi
380 -}
381 -
382 -testpid() {
383 - pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
384 - if [ "X$pid" = "X" ]
385 - then
386 - # Process is gone so remove the pid file.
387 - rm -f $PIDFILE
388 - pid=""
389 - fi
390 -}
391 -
392 -console() {
393 - echo "Running $APP_LONG_NAME..."
394 - getpid
395 - if [ "X$pid" = "X" ]
396 - then
397 - COMMAND_LINE="$CMDNICE $WRAPPER_CMD $WRAPPER_CONF wrapper.syslog.ident=$APP_NAME wrapper.pidfile=$PIDFILE $ANCHORPROP $LOCKPROP"
398 - exec $COMMAND_LINE
399 - else
400 - echo "$APP_LONG_NAME is already running."
401 - exit 1
402 - fi
403 -}
404 -
405 -start() {
406 - echo "Starting $APP_LONG_NAME..."
407 - getpid
408 - if [ "X$pid" = "X" ]
409 - then
410 - if [ ! -d $DATADIR ]; then
411 - mkdir $DATADIR
412 - fi
413 - if [ ! -d $DATADIR/log ]; then
414 - mkdir $DATADIR/log
415 - fi
416 - COMMAND_LINE="$CMDNICE $WRAPPER_CMD $WRAPPER_CONF wrapper.syslog.ident=$APP_NAME wrapper.pidfile=$PIDFILE wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP"
417 - exec $COMMAND_LINE
418 - else
419 - echo "$APP_LONG_NAME is already running."
420 - exit 1
421 - fi
422 -}
423 -
424 -stopit() {
425 - echo "Stopping $APP_LONG_NAME..."
426 - getpid
427 - if [ "X$pid" = "X" ]
428 - then
429 - echo "$APP_LONG_NAME was not running."
430 - else
431 - if [ "X$IGNORE_SIGNALS" = "X" ]
432 - then
433 - # Running so try to stop it.
434 - kill $pid
435 - if [ $? -ne 0 ]
436 - then
437 - # An explanation for the failure should have been given
438 - echo "Unable to stop $APP_LONG_NAME."
439 - exit 1
440 - fi
441 - else
442 - rm -f $ANCHORFILE
443 - if [ -f $ANCHORFILE ]
444 - then
445 - # An explanation for the failure should have been given
446 - echo "Unable to stop $APP_LONG_NAME."
447 - exit 1
448 - fi
449 - fi
450 -
451 - # We can not predict how long it will take for the wrapper to
452 - # actually stop as it depends on settings in wrapper.conf.
453 - # Loop until it does.
454 - savepid=$pid
455 - CNT=0
456 - TOTCNT=0
457 - while [ "X$pid" != "X" ]
458 - do
459 - # Show a waiting message every 5 seconds.
460 - if [ "$CNT" -lt "5" ]
461 - then
462 - CNT=`expr $CNT + 1`
463 - else
464 - echo "Waiting for $APP_LONG_NAME to exit..."
465 - CNT=0
466 - fi
467 - TOTCNT=`expr $TOTCNT + 1`
468 -
469 - sleep 1
470 -
471 - testpid
472 - done
473 -
474 - pid=$savepid
475 - testpid
476 - if [ "X$pid" != "X" ]
477 - then
478 - echo "Failed to stop $APP_LONG_NAME."
479 - exit 1
480 - else
481 - echo "Stopped $APP_LONG_NAME."
482 - fi
483 - fi
484 -}
485 -
486 -status() {
487 - getpid
488 - if [ "X$pid" = "X" ]
489 - then
490 - echo "$APP_LONG_NAME is not running."
491 - exit 1
492 - else
493 - echo "$APP_LONG_NAME is running ($pid)."
494 - exit 0
495 - fi
496 -}
497 -
498 -dump() {
499 - echo "Dumping $APP_LONG_NAME..."
500 - getpid
501 - if [ "X$pid" = "X" ]
502 - then
503 - echo "$APP_LONG_NAME was not running."
504 -
505 - else
506 - kill -3 $pid
507 -
508 - if [ $? -ne 0 ]
509 - then
510 - echo "Failed to dump $APP_LONG_NAME."
511 - exit 1
512 - else
513 - echo "Dumped $APP_LONG_NAME."
514 - fi
515 - fi
516 -}
517 -
518 -case "$1" in
519 -
520 - 'console')
521 - checkUser $1 touchlock
522 - console
523 - ;;
524 -
525 - 'start')
526 - checkUser $1 touchlock
527 - start
528 - ;;
529 -
530 - 'stop')
531 - checkUser $1
532 - stopit
533 - ;;
534 -
535 - 'restart')
536 - checkUser $1 touchlock
537 - stopit
538 - start
539 - ;;
540 -
541 - 'status')
542 - checkUser $1
543 - status
544 - ;;
545 -
546 - 'dump')
547 - checkUser $1
548 - dump
549 - ;;
550 -
551 - *)
552 - echo "Usage: $0 { console | start | stop | restart | status | dump }"
553 - exit 1
554 - ;;
555 -esac
556 -
557 -exit 0
No preview for this file type
1 -# ------------------------------------------------------------------------
2 -# Licensed to the Apache Software Foundation (ASF) under one or more
3 -# contributor license agreements. See the NOTICE file distributed with
4 -# this work for additional information regarding copyright ownership.
5 -# The ASF licenses this file to You under the Apache License, Version 2.0
6 -# (the "License"); you may not use this file except in compliance with
7 -# the License. You may obtain a copy of the License at
8 -#
9 -# http://www.apache.org/licenses/LICENSE-2.0
10 -#
11 -# Unless required by applicable law or agreed to in writing, software
12 -# distributed under the License is distributed on an "AS IS" BASIS,
13 -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 -# See the License for the specific language governing permissions and
15 -# limitations under the License.
16 -# ------------------------------------------------------------------------
17 -
18 -#********************************************************************
19 -# Wrapper Properties
20 -#********************************************************************
21 -set.default.JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
22 -set.default.KARAF_HOME=/opt/onos/apache-karaf-3.0.1
23 -set.default.KARAF_BASE=/opt/onos/apache-karaf-3.0.1
24 -set.default.KARAF_DATA=/opt/onos/apache-karaf-3.0.1/data
25 -set.default.KARAF_ETC=/opt/onos/apache-karaf-3.0.1/etc
26 -
27 -# Java Application
28 -wrapper.working.dir=%KARAF_BASE%
29 -wrapper.java.command=%JAVA_HOME%/bin/java
30 -wrapper.java.mainclass=org.apache.karaf.wrapper.internal.Main
31 -wrapper.java.classpath.1=%KARAF_HOME%/lib/karaf-wrapper.jar
32 -wrapper.java.classpath.2=%KARAF_HOME%/lib/karaf.jar
33 -wrapper.java.classpath.3=%KARAF_HOME%/lib/karaf-jmx-boot.jar
34 -wrapper.java.classpath.4=%KARAF_HOME%/lib/karaf-jaas-boot.jar
35 -wrapper.java.classpath.5=%KARAF_HOME%/lib/karaf-wrapper-main.jar
36 -wrapper.java.classpath.6=%KARAF_HOME%/lib/karaf-org.osgi.core.jar
37 -wrapper.java.library.path.1=%KARAF_HOME%/lib/
38 -
39 -# Application Parameters. Add parameters as needed starting from 1
40 -#wrapper.app.parameter.1=
41 -
42 -# JVM Parameters
43 -# note that n is the parameter number starting from 1.
44 -wrapper.java.additional.1=-Dkaraf.home=%KARAF_HOME%
45 -wrapper.java.additional.2=-Dkaraf.base=%KARAF_BASE%
46 -wrapper.java.additional.3=-Dkaraf.data=%KARAF_DATA%
47 -wrapper.java.additional.4=-Dkaraf.etc=%KARAF_ETC%
48 -wrapper.java.additional.5=-Dcom.sun.management.jmxremote
49 -wrapper.java.additional.6=-Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder
50 -wrapper.java.additional.7=-Dkaraf.startLocalConsole=false
51 -wrapper.java.additional.8=-Dkaraf.startRemoteShell=true
52 -wrapper.java.additional.9=-Djava.endorsed.dirs=%JAVA_HOME%/jre/lib/endorsed:%JAVA_HOME%/lib/endorsed:%KARAF_HOME%/lib/endorsed
53 -wrapper.java.additional.10=-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext:%JAVA_HOME%/lib/ext:%KARAF_HOME%/lib/ext
54 -
55 -# Uncomment to enable jmx
56 -#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1616
57 -#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false
58 -#wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
59 -
60 -# Uncomment to enable YourKit profiling
61 -#wrapper.java.additional.n=-Xrunyjpagent
62 -
63 -# Uncomment to enable remote debugging
64 -#wrapper.java.additional.n=-Xdebug -Xnoagent -Djava.compiler=NONE
65 -#wrapper.java.additional.n=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
66 -
67 -# Initial Java Heap Size (in MB)
68 -#wrapper.java.initmemory=3
69 -
70 -# Maximum Java Heap Size (in MB)
71 -wrapper.java.maxmemory=512
72 -
73 -
74 -#********************************************************************
75 -# Wrapper Logging Properties
76 -#********************************************************************
77 -# Format of output for the console. (See docs for formats)
78 -wrapper.console.format=PM
79 -
80 -# Log Level for console output. (See docs for log levels)
81 -wrapper.console.loglevel=INFO
82 -
83 -# Log file to use for wrapper output logging.
84 -wrapper.logfile=%KARAF_DATA%/log/wrapper.log
85 -
86 -# Format of output for the log file. (See docs for formats)
87 -wrapper.logfile.format=LPTM
88 -
89 -# Log Level for log file output. (See docs for log levels)
90 -wrapper.logfile.loglevel=INFO
91 -
92 -# Maximum size that the log file will be allowed to grow to before
93 -# the log is rolled. Size is specified in bytes. The default value
94 -# of 0, disables log rolling. May abbreviate with the 'k' (kb) or
95 -# 'm' (mb) suffix. For example: 10m = 10 megabytes.
96 -wrapper.logfile.maxsize=10m
97 -
98 -# Maximum number of rolled log files which will be allowed before old
99 -# files are deleted. The default value of 0 implies no limit.
100 -wrapper.logfile.maxfiles=5
101 -
102 -# Log Level for sys/event log output. (See docs for log levels)
103 -wrapper.syslog.loglevel=NONE
104 -
105 -#********************************************************************
106 -# Wrapper Windows Properties
107 -#********************************************************************
108 -# Title to use when running as a console
109 -wrapper.console.title=onos
110 -
111 -#********************************************************************
112 -# Wrapper Windows NT/2000/XP Service Properties
113 -#********************************************************************
114 -# WARNING - Do not modify any of these properties when an application
115 -# using this configuration file has been installed as a service.
116 -# Please uninstall the service before modifying this section. The
117 -# service can then be reinstalled.
118 -
119 -# Name of the service
120 -wrapper.ntservice.name=onos
121 -
122 -# Display name of the service
123 -wrapper.ntservice.displayname=onos
124 -
125 -# Description of the service
126 -wrapper.ntservice.description=ONOS
127 -
128 -# Service dependencies. Add dependencies as needed starting from 1
129 -wrapper.ntservice.dependency.1=
130 -
131 -# Mode in which the service is installed. AUTO_START or DEMAND_START
132 -wrapper.ntservice.starttype=AUTO_START
133 -
134 -# Allow the service to interact with the desktop.
135 -wrapper.ntservice.interactive=false
...@@ -12,9 +12,6 @@ LOG=$ONOS_INSTALL_DIR/config.log ...@@ -12,9 +12,6 @@ LOG=$ONOS_INSTALL_DIR/config.log
12 onos=$ONOS_INSTALL_DIR/bin/onos 12 onos=$ONOS_INSTALL_DIR/bin/onos
13 13
14 ssh $remote " 14 ssh $remote "
15 - echo 'Starting...'
16 - nohup $ONOS_INSTALL_DIR/bin/onos-ctl server </dev/null | 1>/opt/onos/svc.log 2>&1 &
17 -
18 # Wait until we reach the run-level 100 15 # Wait until we reach the run-level 100
19 echo 'Waiting for cluster bootstrap...' 16 echo 'Waiting for cluster bootstrap...'
20 running="" 17 running=""
...@@ -22,29 +19,13 @@ ssh $remote " ...@@ -22,29 +19,13 @@ ssh $remote "
22 $onos bundle:list 2>>$LOG | grep -q 'START LEVEL 100' && running=1 || sleep 2 19 $onos bundle:list 2>>$LOG | grep -q 'START LEVEL 100' && running=1 || sleep 2
23 done 20 done
24 21
25 - # Now create group onos and join it, while quitting the default one
26 - if ! $onos cluster:group-list 2>>$LOG | cut -d \\ -f3 | grep -q onos; then
27 - echo 'Creating ONOS group...'
28 - installRole=primary
29 - $onos cluster:group-create onos 1>>$LOG 2>&1
30 - fi
31 -
32 - echo 'Configuring group membership...'
33 - node=\$($onos cluster:node-list 2>>$LOG | grep '^x' | cut -d \\ -f3)
34 - $onos cluster:group-join onos \$node 1>>$LOG 2>&1
35 - $onos cluster:group-quit default \$node 1>>$LOG 2>&1
36 -
37 - if [ X\$installRole = Xprimary ]; then
38 echo 'Installing ONOS bundles...' 22 echo 'Installing ONOS bundles...'
39 - $onos cluster:feature-install onos onos-api 1>>$LOG 2>&1 23 + $onos cluster:feature-install default onos-api 1>>$LOG 2>&1
40 - $onos cluster:feature-install onos onos-core 1>>$LOG 2>&1 24 + $onos cluster:feature-install default onos-core 1>>$LOG 2>&1
41 - $onos cluster:feature-install onos onos-openflow 1>>$LOG 2>&1 25 + $onos cluster:feature-install default onos-openflow 1>>$LOG 2>&1
42 - $onos cluster:feature-install onos onos-cli 1>>$LOG 2>&1 26 + $onos cluster:feature-install default onos-cli 1>>$LOG 2>&1
43 - # $onos cluster:feature-install onos onos-gui 1>>$LOG 2>&1 27 + # $onos cluster:feature-install default onos-gui 1>>$LOG 2>&1
44 - # $onos cluster:feature-install onos onos-rest 1>>$LOG 2>&1 28 + # $onos cluster:feature-install default onos-rest 1>>$LOG 2>&1
45 - $onos cluster:feature-install onos onos-app-tvue 1>>$LOG 2>&1 29 + $onos cluster:feature-install default onos-app-tvue 1>>$LOG 2>&1
46 - $onos cluster:feature-install onos onos-app-fwd 1>>$LOG 2>&1 30 + $onos cluster:feature-install default onos-app-fwd 1>>$LOG 2>&1
47 - fi
48 -
49 - echo 'Started...'
50 " 31 "
......
...@@ -20,6 +20,13 @@ ssh $remote " ...@@ -20,6 +20,13 @@ ssh $remote "
20 sudo mkdir -p $ONOS_INSTALL_DIR && sudo chown sdn:sdn $ONOS_INSTALL_DIR 20 sudo mkdir -p $ONOS_INSTALL_DIR && sudo chown sdn:sdn $ONOS_INSTALL_DIR
21 tar zxmf /tmp/$ONOS_BITS.tar.gz -C $ONOS_INSTALL_DIR --strip-components=1 21 tar zxmf /tmp/$ONOS_BITS.tar.gz -C $ONOS_INSTALL_DIR --strip-components=1
22 22
23 - # Make a link to the log file directory. 23 + # Make a link to the log file directory and make a home for auxiliaries
24 ln -s $ONOS_INSTALL_DIR/$KARAF_DIST/data/log /opt/onos/log 24 ln -s $ONOS_INSTALL_DIR/$KARAF_DIST/data/log /opt/onos/log
25 + mkdir $ONOS_INSTALL_DIR/var
26 +
27 + # Install the upstart configuration file.
28 + sudo cp $ONOS_INSTALL_DIR/debian/onos.conf /etc/init/onos.conf
29 +
30 + # Ignite the ONOS service.
31 + sudo service onos start
25 " 32 "
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
9 remote=$ONOS_USER@${1:-$OCI} 9 remote=$ONOS_USER@${1:-$OCI}
10 10
11 ssh $remote " 11 ssh $remote "
12 + sudo service onos stop 1>/dev/null 2>/dev/null
12 [ -f $ONOS_INSTALL_DIR/bin/onos ] && \ 13 [ -f $ONOS_INSTALL_DIR/bin/onos ] && \
13 $ONOS_INSTALL_DIR/bin/onos halt 2>/dev/null 14 $ONOS_INSTALL_DIR/bin/onos halt 2>/dev/null
14 sudo rm -fr $ONOS_INSTALL_DIR 15 sudo rm -fr $ONOS_INSTALL_DIR
......
...@@ -35,6 +35,11 @@ ...@@ -35,6 +35,11 @@
35 <artifactId>commons-lang3</artifactId> 35 <artifactId>commons-lang3</artifactId>
36 </dependency> 36 </dependency>
37 37
38 + <!-- TODO: do we still need this here? -->
39 + <dependency>
40 + <groupId>com.eclipsesource.minimal-json</groupId>
41 + <artifactId>minimal-json</artifactId>
42 + </dependency>
38 <dependency> 43 <dependency>
39 <groupId>com.esotericsoftware.kryo</groupId> 44 <groupId>com.esotericsoftware.kryo</groupId>
40 <artifactId>kryo</artifactId> 45 <artifactId>kryo</artifactId>
......