aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAshlee Young <ashlee@wildernessvoice.com>2015-12-08 11:32:02 -0800
committerAshlee Young <ashlee@wildernessvoice.com>2015-12-08 11:32:02 -0800
commitf9da5db0ff14879e47a6d83244ba63d45b4d432d (patch)
tree30ae7124d2650f556252245ffd3c68ae1b7d845f
parent76dc892491948adae5e5e62cf94448967e8d865b (diff)
onos-1.4.0-rc1 tag
Change-Id: I7f6b85bbf2574b9e174ad919ff36acde28ca50a1 Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
-rwxr-xr-xbuild.sh11
-rw-r--r--framework/src/onos/apps/aaa/pom.xml2
-rw-r--r--framework/src/onos/apps/acl/pom.xml4
-rw-r--r--framework/src/onos/apps/bgprouter/pom.xml2
-rw-r--r--framework/src/onos/apps/cip/pom.xml2
-rw-r--r--framework/src/onos/apps/cordfabric/pom.xml2
-rw-r--r--framework/src/onos/apps/cordvtn/pom.xml2
-rw-r--r--framework/src/onos/apps/cpman/pom.xml4
-rw-r--r--framework/src/onos/apps/demo/cord-gui/pom.xml2
-rw-r--r--framework/src/onos/apps/demo/cord-gui/src/scripts/pullwar.sh2
-rw-r--r--framework/src/onos/apps/demo/cord-gui/src/scripts/run.me2
-rw-r--r--framework/src/onos/apps/dhcp/api/pom.xml2
-rw-r--r--framework/src/onos/apps/dhcp/app/pom.xml2
-rw-r--r--framework/src/onos/apps/dhcp/pom.xml2
-rw-r--r--framework/src/onos/apps/faultmanagement/app/pom.xml2
-rw-r--r--framework/src/onos/apps/faultmanagement/fmmgr/pom.xml2
-rw-r--r--framework/src/onos/apps/faultmanagement/fmweb/pom.xml2
-rw-r--r--framework/src/onos/apps/faultmanagement/pom.xml2
-rw-r--r--framework/src/onos/apps/flowanalyzer/pom.xml2
-rw-r--r--framework/src/onos/apps/fwd/pom.xml2
-rw-r--r--framework/src/onos/apps/igmp/pom.xml2
-rw-r--r--framework/src/onos/apps/iptopology-api/pom.xml2
-rw-r--r--framework/src/onos/apps/metrics/pom.xml2
-rw-r--r--framework/src/onos/apps/mfwd/pom.xml2
-rw-r--r--framework/src/onos/apps/mlb/pom.xml2
-rw-r--r--framework/src/onos/apps/mobility/pom.xml2
-rw-r--r--framework/src/onos/apps/olt/pom.xml2
-rw-r--r--framework/src/onos/apps/openstackswitching/api/pom.xml2
-rw-r--r--framework/src/onos/apps/openstackswitching/app/pom.xml2
-rw-r--r--framework/src/onos/apps/openstackswitching/pom.xml2
-rw-r--r--framework/src/onos/apps/optical/pom.xml2
-rw-r--r--framework/src/onos/apps/pathpainter/pom.xml2
-rw-r--r--framework/src/onos/apps/pcep-api/pom.xml2
-rw-r--r--framework/src/onos/apps/pim/pom.xml2
-rw-r--r--framework/src/onos/apps/pom.xml2
-rw-r--r--framework/src/onos/apps/proxyarp/pom.xml2
-rw-r--r--framework/src/onos/apps/reactive-routing/pom.xml2
-rw-r--r--framework/src/onos/apps/routing-api/pom.xml2
-rw-r--r--framework/src/onos/apps/routing/pom.xml2
-rw-r--r--framework/src/onos/apps/sdnip/pom.xml2
-rw-r--r--framework/src/onos/apps/segmentrouting/pom.xml2
-rw-r--r--framework/src/onos/apps/test/demo/pom.xml2
-rw-r--r--framework/src/onos/apps/test/distributed-primitives/pom.xml4
-rw-r--r--framework/src/onos/apps/test/election/pom.xml2
-rw-r--r--framework/src/onos/apps/test/intent-perf/pom.xml2
-rw-r--r--framework/src/onos/apps/test/messaging-perf/pom.xml2
-rw-r--r--framework/src/onos/apps/test/pom.xml2
-rw-r--r--framework/src/onos/apps/virtualbng/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/app/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/sfcmgr/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/vtnmgr/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/pom.xml2
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java17
-rw-r--r--framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java23
-rw-r--r--framework/src/onos/apps/vtn/vtnweb/pom.xml2
-rw-r--r--framework/src/onos/apps/xos-integration/pom.xml2
-rw-r--r--framework/src/onos/cli/pom.xml2
-rw-r--r--framework/src/onos/core/api/pom.xml2
-rw-r--r--framework/src/onos/core/common/pom.xml2
-rw-r--r--framework/src/onos/core/net/pom.xml2
-rw-r--r--framework/src/onos/core/net/src/main/java/org/onosproject/core/impl/CoreManager.java2
-rw-r--r--framework/src/onos/core/pom.xml2
-rw-r--r--framework/src/onos/core/security/pom.xml2
-rw-r--r--framework/src/onos/core/store/dist/pom.xml2
-rw-r--r--framework/src/onos/core/store/persistence/pom.xml2
-rw-r--r--framework/src/onos/core/store/pom.xml2
-rw-r--r--framework/src/onos/core/store/serializers/pom.xml2
-rw-r--r--framework/src/onos/docs/external.xml4
-rw-r--r--framework/src/onos/docs/internal.xml4
-rw-r--r--framework/src/onos/drivers/pom.xml2
-rw-r--r--framework/src/onos/features/pom.xml2
-rw-r--r--framework/src/onos/incubator/api/pom.xml2
-rw-r--r--framework/src/onos/incubator/net/pom.xml2
-rw-r--r--framework/src/onos/incubator/pom.xml2
-rw-r--r--framework/src/onos/incubator/rpc-grpc/pom.xml2
-rw-r--r--framework/src/onos/incubator/rpc/pom.xml2
-rw-r--r--framework/src/onos/incubator/store/pom.xml2
-rw-r--r--framework/src/onos/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/bgp/api/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/bgp/bgpio/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/bgp/ctl/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/bgp/pom.xml2
-rw-r--r--framework/src/onos/protocols/netconf/api/pom.xml2
-rw-r--r--framework/src/onos/protocols/netconf/ctl/pom.xml2
-rw-r--r--framework/src/onos/protocols/netconf/pom.xml2
-rw-r--r--framework/src/onos/protocols/netconf/rfc/pom.xml2
-rw-r--r--framework/src/onos/protocols/openflow/api/pom.xml2
-rw-r--r--framework/src/onos/protocols/openflow/ctl/pom.xml2
-rw-r--r--framework/src/onos/protocols/openflow/pom.xml2
-rw-r--r--framework/src/onos/protocols/ovsdb/api/pom.xml2
-rw-r--r--framework/src/onos/protocols/ovsdb/ctl/pom.xml2
-rw-r--r--framework/src/onos/protocols/ovsdb/pom.xml2
-rw-r--r--framework/src/onos/protocols/ovsdb/rfc/pom.xml2
-rw-r--r--framework/src/onos/protocols/pcep/api/pom.xml2
-rw-r--r--framework/src/onos/protocols/pcep/ctl/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/pcep/pcepio/pom.xml2
-rwxr-xr-xframework/src/onos/protocols/pcep/pom.xml2
-rw-r--r--framework/src/onos/protocols/pom.xml2
-rwxr-xr-xframework/src/onos/providers/bgp/app/pom.xml2
-rwxr-xr-xframework/src/onos/providers/bgp/pom.xml2
-rwxr-xr-xframework/src/onos/providers/bgp/topology/pom.xml2
-rw-r--r--framework/src/onos/providers/host/pom.xml2
-rw-r--r--framework/src/onos/providers/lldp/pom.xml2
-rw-r--r--framework/src/onos/providers/netcfghost/pom.xml2
-rw-r--r--framework/src/onos/providers/netconf/app/pom.xml2
-rw-r--r--framework/src/onos/providers/netconf/device/pom.xml2
-rw-r--r--framework/src/onos/providers/netconf/pom.xml2
-rw-r--r--framework/src/onos/providers/null/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/app/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/base/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/device/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/flow/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java1764
-rw-r--r--framework/src/onos/providers/openflow/group/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/meter/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/packet/pom.xml2
-rw-r--r--framework/src/onos/providers/openflow/pom.xml2
-rw-r--r--framework/src/onos/providers/ovsdb/app/pom.xml2
-rw-r--r--framework/src/onos/providers/ovsdb/device/pom.xml2
-rw-r--r--framework/src/onos/providers/ovsdb/host/pom.xml2
-rw-r--r--framework/src/onos/providers/ovsdb/pom.xml2
-rw-r--r--framework/src/onos/providers/ovsdb/tunnel/pom.xml2
-rw-r--r--framework/src/onos/providers/pcep/app/pom.xml2
-rw-r--r--framework/src/onos/providers/pcep/pom.xml2
-rw-r--r--framework/src/onos/providers/pcep/topology/pom.xml2
-rw-r--r--framework/src/onos/providers/pcep/tunnel/pom.xml2
-rw-r--r--framework/src/onos/providers/pom.xml2
-rw-r--r--framework/src/onos/providers/snmp/alarm/pom.xml2
-rw-r--r--framework/src/onos/providers/snmp/pom.xml2
-rw-r--r--framework/src/onos/tools/build/envDefaults4
-rw-r--r--framework/src/onos/tools/package/archetypes/api/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/api/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/bundle/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/bundle/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/cli/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/cli/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/ui/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/ui/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/uitab/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/uitab/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/uitopo/pom.xml2
-rw-r--r--framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/pom.xml2
-rw-r--r--framework/src/onos/tools/package/branding/pom.xml2
-rwxr-xr-xframework/src/onos/tools/test/bin/onos-archetypes-test2
-rwxr-xr-xframework/src/onos/tools/test/bin/stc2
-rwxr-xr-xframework/src/onos/tools/test/topos/onos.py2
-rw-r--r--framework/src/onos/utils/catalyst/pom.xml2
-rwxr-xr-xframework/src/onos/utils/jdvue/bin/jdvue2
-rw-r--r--framework/src/onos/utils/jdvue/pom.xml2
-rw-r--r--framework/src/onos/utils/jnc/pom.xml2
-rw-r--r--framework/src/onos/utils/junit/pom.xml2
-rw-r--r--framework/src/onos/utils/misc/pom.xml2
-rw-r--r--framework/src/onos/utils/netty/pom.xml2
-rw-r--r--framework/src/onos/utils/nio/pom.xml2
-rw-r--r--framework/src/onos/utils/osgi/pom.xml2
-rw-r--r--framework/src/onos/utils/pom.xml2
-rw-r--r--framework/src/onos/utils/rest/pom.xml2
-rwxr-xr-xframework/src/onos/utils/stc/bin/stc2
-rw-r--r--framework/src/onos/utils/stc/pom.xml2
-rw-r--r--framework/src/onos/utils/thirdparty/pom.xml2
-rw-r--r--framework/src/onos/web/api/pom.xml2
-rw-r--r--framework/src/onos/web/gui/pom.xml2
-rw-r--r--framework/src/onos/web/pom.xml2
165 files changed, 1090 insertions, 1059 deletions
diff --git a/build.sh b/build.sh
index f6dd0b16..1dfca199 100755
--- a/build.sh
+++ b/build.sh
@@ -18,9 +18,9 @@
# limitations under the License.
##### Settings #####
-VERSION=1.0.8
+VERSION=1.0.9
AUTHOR="Ashlee Young"
-MODIFIED="December 6, 2015"
+MODIFIED="December 8, 2015"
GERRITURL="git clone ssh://im2bz2pee@gerrit.opnfv.org:29418/onosfw"
ONOSURL="https://github.com/opennetworkinglab/onos"
SURICATAURL="https://github.com/inliniac/suricata"
@@ -77,6 +77,7 @@ export RPMBUILDPATH=~/rpmbuild
export PATCHES=$GERRITROOT/framework/patches
export SURICATAROOT=$BUILDROOT/suricata
export SURICATASRC=$GERRITROOT/framework/src/suricata
+export ONOSTAG=b209dc68e239009a9c1fdfe6fddeca0cf94fe9bf # 1.4.0-rc1 tag
##### End Set build environment #####
##### Ask Function #####
@@ -135,11 +136,14 @@ updateONOS()
printf "\n"
cd $BUILDROOT
git clone $ONOSURL onosproject
+ cd onosproject
+ git checkout $ONOSTAG
+ cd ../
rsync -arvP --delete --exclude=.git --exclude=.gitignore --exclude=.gitreview onosproject/ ../src/onos/
cd onosproject
git log > ../onos_update.$(date +%s)
cd ../
- rm -rf onosproject
+ #rm -rf onosproject
cd $GERRITROOT
# End applying patches
fi
@@ -572,3 +576,4 @@ main()
##### End Execution order #####
main # Launches the build process
+
diff --git a/framework/src/onos/apps/aaa/pom.xml b/framework/src/onos/apps/aaa/pom.xml
index b03930a9..78c18ed7 100644
--- a/framework/src/onos/apps/aaa/pom.xml
+++ b/framework/src/onos/apps/aaa/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/acl/pom.xml b/framework/src/onos/apps/acl/pom.xml
index 454ac7e6..c029cef7 100644
--- a/framework/src/onos/apps/acl/pom.xml
+++ b/framework/src/onos/apps/acl/pom.xml
@@ -26,12 +26,12 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-app-acl</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<packaging>bundle</packaging>
<description>ONOS ACL application</description>
diff --git a/framework/src/onos/apps/bgprouter/pom.xml b/framework/src/onos/apps/bgprouter/pom.xml
index 6503ee79..72fa806a 100644
--- a/framework/src/onos/apps/bgprouter/pom.xml
+++ b/framework/src/onos/apps/bgprouter/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>onos-apps</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/apps/cip/pom.xml b/framework/src/onos/apps/cip/pom.xml
index 77cfe150..1befe45a 100644
--- a/framework/src/onos/apps/cip/pom.xml
+++ b/framework/src/onos/apps/cip/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/cordfabric/pom.xml b/framework/src/onos/apps/cordfabric/pom.xml
index a10db440..be28c210 100644
--- a/framework/src/onos/apps/cordfabric/pom.xml
+++ b/framework/src/onos/apps/cordfabric/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>onos-apps</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/apps/cordvtn/pom.xml b/framework/src/onos/apps/cordvtn/pom.xml
index 3f3ec23b..2d530be2 100644
--- a/framework/src/onos/apps/cordvtn/pom.xml
+++ b/framework/src/onos/apps/cordvtn/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/cpman/pom.xml b/framework/src/onos/apps/cpman/pom.xml
index c01af6d8..e40cace6 100644
--- a/framework/src/onos/apps/cpman/pom.xml
+++ b/framework/src/onos/apps/cpman/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -33,7 +33,7 @@
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-api</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</dependency>
</dependencies>
</project>
diff --git a/framework/src/onos/apps/demo/cord-gui/pom.xml b/framework/src/onos/apps/demo/cord-gui/pom.xml
index 16ed5d95..8ac0ad06 100644
--- a/framework/src/onos/apps/demo/cord-gui/pom.xml
+++ b/framework/src/onos/apps/demo/cord-gui/pom.xml
@@ -27,7 +27,7 @@
</parent>
<artifactId>cord-gui</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<packaging>war</packaging>
<description>Demo CORD Subscriber Web GUI</description>
diff --git a/framework/src/onos/apps/demo/cord-gui/src/scripts/pullwar.sh b/framework/src/onos/apps/demo/cord-gui/src/scripts/pullwar.sh
index d5a75289..3e764314 100644
--- a/framework/src/onos/apps/demo/cord-gui/src/scripts/pullwar.sh
+++ b/framework/src/onos/apps/demo/cord-gui/src/scripts/pullwar.sh
@@ -1 +1 @@
-cp $ONOS_ROOT/apps/demo/cord-gui/target/cord-gui-1.4.0-SNAPSHOT.war .
+cp $ONOS_ROOT/apps/demo/cord-gui/target/cord-gui-1.4.0-rc1.war .
diff --git a/framework/src/onos/apps/demo/cord-gui/src/scripts/run.me b/framework/src/onos/apps/demo/cord-gui/src/scripts/run.me
index 496b18e4..ef18d13c 100644
--- a/framework/src/onos/apps/demo/cord-gui/src/scripts/run.me
+++ b/framework/src/onos/apps/demo/cord-gui/src/scripts/run.me
@@ -4,7 +4,7 @@
export LISTENPORT=8080
export JETTY="-jar jetty-runner.jar"
-export CORD=./cord-gui-1.4.0-SNAPSHOT.war
+export CORD=./cord-gui-1.4.0-rc1.war
export LOGDBG=-Dorg.onosproject.cord.gui.LEVEL=DEBUG
export DEBUG="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n"
export LOG=cord.log
diff --git a/framework/src/onos/apps/dhcp/api/pom.xml b/framework/src/onos/apps/dhcp/api/pom.xml
index fb5246f7..e9899071 100644
--- a/framework/src/onos/apps/dhcp/api/pom.xml
+++ b/framework/src/onos/apps/dhcp/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>onos-dhcp</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/dhcp/app/pom.xml b/framework/src/onos/apps/dhcp/app/pom.xml
index 6589402a..d29dc0f2 100644
--- a/framework/src/onos/apps/dhcp/app/pom.xml
+++ b/framework/src/onos/apps/dhcp/app/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>onos-dhcp</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/dhcp/pom.xml b/framework/src/onos/apps/dhcp/pom.xml
index 473caea6..45f7f302 100644
--- a/framework/src/onos/apps/dhcp/pom.xml
+++ b/framework/src/onos/apps/dhcp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/faultmanagement/app/pom.xml b/framework/src/onos/apps/faultmanagement/app/pom.xml
index ef41cdde..c446c0ae 100644
--- a/framework/src/onos/apps/faultmanagement/app/pom.xml
+++ b/framework/src/onos/apps/faultmanagement/app/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-fm</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/faultmanagement/fmmgr/pom.xml b/framework/src/onos/apps/faultmanagement/fmmgr/pom.xml
index 86b7cb67..a6bb3103 100644
--- a/framework/src/onos/apps/faultmanagement/fmmgr/pom.xml
+++ b/framework/src/onos/apps/faultmanagement/fmmgr/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-fm</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/faultmanagement/fmweb/pom.xml b/framework/src/onos/apps/faultmanagement/fmweb/pom.xml
index 8d759710..edaa9d3c 100644
--- a/framework/src/onos/apps/faultmanagement/fmweb/pom.xml
+++ b/framework/src/onos/apps/faultmanagement/fmweb/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-fm</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/faultmanagement/pom.xml b/framework/src/onos/apps/faultmanagement/pom.xml
index e7bb6a1b..3ea3bc81 100644
--- a/framework/src/onos/apps/faultmanagement/pom.xml
+++ b/framework/src/onos/apps/faultmanagement/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/flowanalyzer/pom.xml b/framework/src/onos/apps/flowanalyzer/pom.xml
index b0920412..1981bff9 100644
--- a/framework/src/onos/apps/flowanalyzer/pom.xml
+++ b/framework/src/onos/apps/flowanalyzer/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/fwd/pom.xml b/framework/src/onos/apps/fwd/pom.xml
index 977a75a4..78601300 100644
--- a/framework/src/onos/apps/fwd/pom.xml
+++ b/framework/src/onos/apps/fwd/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/igmp/pom.xml b/framework/src/onos/apps/igmp/pom.xml
index 7980d2c0..aac02439 100644
--- a/framework/src/onos/apps/igmp/pom.xml
+++ b/framework/src/onos/apps/igmp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/iptopology-api/pom.xml b/framework/src/onos/apps/iptopology-api/pom.xml
index 50cb4adc..0250bb05 100644
--- a/framework/src/onos/apps/iptopology-api/pom.xml
+++ b/framework/src/onos/apps/iptopology-api/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-app-iptopology-api</artifactId>
<packaging>bundle</packaging>
diff --git a/framework/src/onos/apps/metrics/pom.xml b/framework/src/onos/apps/metrics/pom.xml
index 8a39990a..e9e0fc45 100644
--- a/framework/src/onos/apps/metrics/pom.xml
+++ b/framework/src/onos/apps/metrics/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/mfwd/pom.xml b/framework/src/onos/apps/mfwd/pom.xml
index 835de836..5256b85b 100644
--- a/framework/src/onos/apps/mfwd/pom.xml
+++ b/framework/src/onos/apps/mfwd/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/mlb/pom.xml b/framework/src/onos/apps/mlb/pom.xml
index 21692374..a6548209 100644
--- a/framework/src/onos/apps/mlb/pom.xml
+++ b/framework/src/onos/apps/mlb/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/mobility/pom.xml b/framework/src/onos/apps/mobility/pom.xml
index 59fd6668..d5a54c5c 100644
--- a/framework/src/onos/apps/mobility/pom.xml
+++ b/framework/src/onos/apps/mobility/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/olt/pom.xml b/framework/src/onos/apps/olt/pom.xml
index f803a61a..855a80f8 100644
--- a/framework/src/onos/apps/olt/pom.xml
+++ b/framework/src/onos/apps/olt/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/openstackswitching/api/pom.xml b/framework/src/onos/apps/openstackswitching/api/pom.xml
index f5e6f94f..7bb09465 100644
--- a/framework/src/onos/apps/openstackswitching/api/pom.xml
+++ b/framework/src/onos/apps/openstackswitching/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-openstackswitching</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/openstackswitching/app/pom.xml b/framework/src/onos/apps/openstackswitching/app/pom.xml
index 7d26f8f2..edd43e02 100644
--- a/framework/src/onos/apps/openstackswitching/app/pom.xml
+++ b/framework/src/onos/apps/openstackswitching/app/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-openstackswitching</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/openstackswitching/pom.xml b/framework/src/onos/apps/openstackswitching/pom.xml
index 9dbdcf5f..cfeaa5b3 100644
--- a/framework/src/onos/apps/openstackswitching/pom.xml
+++ b/framework/src/onos/apps/openstackswitching/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/optical/pom.xml b/framework/src/onos/apps/optical/pom.xml
index 9ae6f85e..0ec42e68 100644
--- a/framework/src/onos/apps/optical/pom.xml
+++ b/framework/src/onos/apps/optical/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/pathpainter/pom.xml b/framework/src/onos/apps/pathpainter/pom.xml
index c14294c8..b46f7d10 100644
--- a/framework/src/onos/apps/pathpainter/pom.xml
+++ b/framework/src/onos/apps/pathpainter/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/pcep-api/pom.xml b/framework/src/onos/apps/pcep-api/pom.xml
index 5e871678..2e5be63b 100644
--- a/framework/src/onos/apps/pcep-api/pom.xml
+++ b/framework/src/onos/apps/pcep-api/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-app-pcep-api</artifactId>
<packaging>bundle</packaging>
diff --git a/framework/src/onos/apps/pim/pom.xml b/framework/src/onos/apps/pim/pom.xml
index 83a366b6..6d3785e9 100644
--- a/framework/src/onos/apps/pim/pom.xml
+++ b/framework/src/onos/apps/pim/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/pom.xml b/framework/src/onos/apps/pom.xml
index 1a279c53..3708e6b9 100644
--- a/framework/src/onos/apps/pom.xml
+++ b/framework/src/onos/apps/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/proxyarp/pom.xml b/framework/src/onos/apps/proxyarp/pom.xml
index 69f64ddb..28adaf8a 100644
--- a/framework/src/onos/apps/proxyarp/pom.xml
+++ b/framework/src/onos/apps/proxyarp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/reactive-routing/pom.xml b/framework/src/onos/apps/reactive-routing/pom.xml
index 58fb91ee..3272f599 100644
--- a/framework/src/onos/apps/reactive-routing/pom.xml
+++ b/framework/src/onos/apps/reactive-routing/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/routing-api/pom.xml b/framework/src/onos/apps/routing-api/pom.xml
index 4c2d7d37..6a10092c 100644
--- a/framework/src/onos/apps/routing-api/pom.xml
+++ b/framework/src/onos/apps/routing-api/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>onos-apps</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/apps/routing/pom.xml b/framework/src/onos/apps/routing/pom.xml
index 2882f52e..c4562106 100644
--- a/framework/src/onos/apps/routing/pom.xml
+++ b/framework/src/onos/apps/routing/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>onos-apps</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/apps/sdnip/pom.xml b/framework/src/onos/apps/sdnip/pom.xml
index 99314aa8..8ff8cbcf 100644
--- a/framework/src/onos/apps/sdnip/pom.xml
+++ b/framework/src/onos/apps/sdnip/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/segmentrouting/pom.xml b/framework/src/onos/apps/segmentrouting/pom.xml
index d170a7ab..76d90490 100644
--- a/framework/src/onos/apps/segmentrouting/pom.xml
+++ b/framework/src/onos/apps/segmentrouting/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>onos-apps</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/test/demo/pom.xml b/framework/src/onos/apps/test/demo/pom.xml
index 4b08430d..d82139d0 100644
--- a/framework/src/onos/apps/test/demo/pom.xml
+++ b/framework/src/onos/apps/test/demo/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps-test</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/test/distributed-primitives/pom.xml b/framework/src/onos/apps/test/distributed-primitives/pom.xml
index f77fd57f..0c303d66 100644
--- a/framework/src/onos/apps/test/distributed-primitives/pom.xml
+++ b/framework/src/onos/apps/test/distributed-primitives/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps-test</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -54,7 +54,7 @@
<dependency>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-dist</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
diff --git a/framework/src/onos/apps/test/election/pom.xml b/framework/src/onos/apps/test/election/pom.xml
index 3ceadb4d..7ffb0b57 100644
--- a/framework/src/onos/apps/test/election/pom.xml
+++ b/framework/src/onos/apps/test/election/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps-test</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/test/intent-perf/pom.xml b/framework/src/onos/apps/test/intent-perf/pom.xml
index b837d114..e0596cc3 100644
--- a/framework/src/onos/apps/test/intent-perf/pom.xml
+++ b/framework/src/onos/apps/test/intent-perf/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps-test</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/test/messaging-perf/pom.xml b/framework/src/onos/apps/test/messaging-perf/pom.xml
index 28de5b7c..ea78791b 100644
--- a/framework/src/onos/apps/test/messaging-perf/pom.xml
+++ b/framework/src/onos/apps/test/messaging-perf/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps-test</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/test/pom.xml b/framework/src/onos/apps/test/pom.xml
index ead2252e..89167713 100644
--- a/framework/src/onos/apps/test/pom.xml
+++ b/framework/src/onos/apps/test/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/virtualbng/pom.xml b/framework/src/onos/apps/virtualbng/pom.xml
index 01caa66c..f2d7ea8f 100644
--- a/framework/src/onos/apps/virtualbng/pom.xml
+++ b/framework/src/onos/apps/virtualbng/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/app/pom.xml b/framework/src/onos/apps/vtn/app/pom.xml
index 5a877363..93d2d95c 100644
--- a/framework/src/onos/apps/vtn/app/pom.xml
+++ b/framework/src/onos/apps/vtn/app/pom.xml
@@ -14,7 +14,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/pom.xml b/framework/src/onos/apps/vtn/pom.xml
index e4528517..8bbd2657 100644
--- a/framework/src/onos/apps/vtn/pom.xml
+++ b/framework/src/onos/apps/vtn/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/sfcmgr/pom.xml b/framework/src/onos/apps/vtn/sfcmgr/pom.xml
index 8b5f1983..bac0cc36 100644
--- a/framework/src/onos/apps/vtn/sfcmgr/pom.xml
+++ b/framework/src/onos/apps/vtn/sfcmgr/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/vtnmgr/pom.xml b/framework/src/onos/apps/vtn/vtnmgr/pom.xml
index 03e66708..890b2168 100644
--- a/framework/src/onos/apps/vtn/vtnmgr/pom.xml
+++ b/framework/src/onos/apps/vtn/vtnmgr/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/vtnrsc/pom.xml b/framework/src/onos/apps/vtn/vtnrsc/pom.xml
index 816624cb..a2905909 100644
--- a/framework/src/onos/apps/vtn/vtnrsc/pom.xml
+++ b/framework/src/onos/apps/vtn/vtnrsc/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
index 48438846..e3cbf9ac 100644
--- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
+++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/FlowClassifierService.java
@@ -15,14 +15,13 @@
*/
package org.onosproject.vtnrsc.flowclassifier;
-import org.onosproject.event.ListenerService;
import org.onosproject.vtnrsc.FlowClassifier;
import org.onosproject.vtnrsc.FlowClassifierId;
/**
* Provides Services for Flow Classifier.
*/
-public interface FlowClassifierService extends ListenerService<FlowClassifierEvent, FlowClassifierListener> {
+public interface FlowClassifierService {
/**
* Check whether Flow Classifier is present based on given Flow Classifier
@@ -80,4 +79,18 @@ public interface FlowClassifierService extends ListenerService<FlowClassifierEve
* false
*/
boolean removeFlowClassifier(FlowClassifierId id);
+
+ /**
+ * Adds the specified listener to Flow-Classifier manager.
+ *
+ * @param listener Flow-Classifier listener
+ */
+ void addListener(FlowClassifierListener listener);
+
+ /**
+ * Removes the specified listener to Flow-Classifier manager.
+ *
+ * @param listener Flow-Classifier listener
+ */
+ void removeListener(FlowClassifierListener listener);
}
diff --git a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
index 18f63b30..b29dc7a3 100644
--- a/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
+++ b/framework/src/onos/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/flowclassifier/impl/FlowClassifierManager.java
@@ -25,7 +25,6 @@ import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onlab.util.KryoNamespace;
-import org.onosproject.event.AbstractListenerManager;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.MultiValuedTimestamp;
@@ -33,27 +32,28 @@ import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.vtnrsc.FlowClassifierId;
import org.onosproject.vtnrsc.FlowClassifier;
-import org.onosproject.vtnrsc.flowclassifier.FlowClassifierEvent;
import org.onosproject.vtnrsc.flowclassifier.FlowClassifierListener;
import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService;
import org.slf4j.Logger;
+import java.util.Set;
+
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Sets;
/**
* Provides implementation of the Flow Classifier Service.
*/
@Component(immediate = true)
@Service
-public class FlowClassifierManager extends AbstractListenerManager<FlowClassifierEvent, FlowClassifierListener>
- implements FlowClassifierService {
+public class FlowClassifierManager implements FlowClassifierService {
private static final String FLOW_CLASSIFIER_NOT_NULL = "Flow Classifier cannot be null";
private static final String FLOW_CLASSIFIER_ID_NOT_NULL = "Flow Classifier Id cannot be null";
private static final String LISTENER_NOT_NULL = "Listener cannot be null";
private final Logger log = getLogger(FlowClassifierManager.class);
-
+ private final Set<FlowClassifierListener> listeners = Sets.newCopyOnWriteArraySet();
private EventuallyConsistentMap<FlowClassifierId, FlowClassifier> flowClassifierStore;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -75,6 +75,7 @@ public class FlowClassifierManager extends AbstractListenerManager<FlowClassifie
@Deactivate
protected void deactivate() {
flowClassifierStore.destroy();
+ listeners.clear();
log.info("Flow Classifier service deactivated");
}
@@ -144,4 +145,16 @@ public class FlowClassifierManager extends AbstractListenerManager<FlowClassifie
}
return true;
}
+
+ @Override
+ public void addListener(FlowClassifierListener listener) {
+ checkNotNull(listener, LISTENER_NOT_NULL);
+ listeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(FlowClassifierListener listener) {
+ checkNotNull(listener, LISTENER_NOT_NULL);
+ listeners.remove(listener);
+ }
}
diff --git a/framework/src/onos/apps/vtn/vtnweb/pom.xml b/framework/src/onos/apps/vtn/vtnweb/pom.xml
index bcb71d9f..0aa1f616 100644
--- a/framework/src/onos/apps/vtn/vtnweb/pom.xml
+++ b/framework/src/onos/apps/vtn/vtnweb/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-app-vtn</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/apps/xos-integration/pom.xml b/framework/src/onos/apps/xos-integration/pom.xml
index 68eafd16..9f0cb918 100644
--- a/framework/src/onos/apps/xos-integration/pom.xml
+++ b/framework/src/onos/apps/xos-integration/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-apps</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/cli/pom.xml b/framework/src/onos/cli/pom.xml
index 3d29a26e..de8cd9e8 100644
--- a/framework/src/onos/cli/pom.xml
+++ b/framework/src/onos/cli/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/api/pom.xml b/framework/src/onos/core/api/pom.xml
index 23a051c4..5469c28c 100644
--- a/framework/src/onos/core/api/pom.xml
+++ b/framework/src/onos/core/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/common/pom.xml b/framework/src/onos/core/common/pom.xml
index e4d25eed..a371a3fa 100644
--- a/framework/src/onos/core/common/pom.xml
+++ b/framework/src/onos/core/common/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/net/pom.xml b/framework/src/onos/core/net/pom.xml
index c5d31263..d5eb9576 100644
--- a/framework/src/onos/core/net/pom.xml
+++ b/framework/src/onos/core/net/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/core/impl/CoreManager.java b/framework/src/onos/core/net/src/main/java/org/onosproject/core/impl/CoreManager.java
index ec99c18b..4a702ef0 100644
--- a/framework/src/onos/core/net/src/main/java/org/onosproject/core/impl/CoreManager.java
+++ b/framework/src/onos/core/net/src/main/java/org/onosproject/core/impl/CoreManager.java
@@ -63,7 +63,7 @@ public class CoreManager implements CoreService {
private final Logger log = LoggerFactory.getLogger(getClass());
private static final File VERSION_FILE = new File("../VERSION");
- private static Version version = Version.version("1.4.0-SNAPSHOT");
+ private static Version version = Version.version("1.4.0-rc1");
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected ApplicationIdStore applicationIdStore;
diff --git a/framework/src/onos/core/pom.xml b/framework/src/onos/core/pom.xml
index c4f25545..d8b80b6f 100644
--- a/framework/src/onos/core/pom.xml
+++ b/framework/src/onos/core/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/security/pom.xml b/framework/src/onos/core/security/pom.xml
index 8dbc6c0d..4635c686 100644
--- a/framework/src/onos/core/security/pom.xml
+++ b/framework/src/onos/core/security/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>onos-core</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/store/dist/pom.xml b/framework/src/onos/core/store/dist/pom.xml
index 0b8b72bc..d61fc1b6 100644
--- a/framework/src/onos/core/store/dist/pom.xml
+++ b/framework/src/onos/core/store/dist/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-store</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/store/persistence/pom.xml b/framework/src/onos/core/store/persistence/pom.xml
index 5692c531..bb3cd8e1 100644
--- a/framework/src/onos/core/store/persistence/pom.xml
+++ b/framework/src/onos/core/store/persistence/pom.xml
@@ -34,7 +34,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-store</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/store/pom.xml b/framework/src/onos/core/store/pom.xml
index 94c077a4..24326575 100644
--- a/framework/src/onos/core/store/pom.xml
+++ b/framework/src/onos/core/store/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/core/store/serializers/pom.xml b/framework/src/onos/core/store/serializers/pom.xml
index 867ce0f0..6fe4c160 100644
--- a/framework/src/onos/core/store/serializers/pom.xml
+++ b/framework/src/onos/core/store/serializers/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-core-store</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/docs/external.xml b/framework/src/onos/docs/external.xml
index aac47eb5..04c18d2d 100644
--- a/framework/src/onos/docs/external.xml
+++ b/framework/src/onos/docs/external.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -53,7 +53,7 @@
<sourceFileExclude>**/generated-sources/**</sourceFileExclude>
</sourceFileExcludes>
<docfilessubdirs>true</docfilessubdirs>
- <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle>
+ <doctitle>ONOS Java API (1.4.0-rc1)</doctitle>
<groups>
<group>
<title>Network Model &amp; Services</title>
diff --git a/framework/src/onos/docs/internal.xml b/framework/src/onos/docs/internal.xml
index 569da1b8..42cb80f4 100644
--- a/framework/src/onos/docs/internal.xml
+++ b/framework/src/onos/docs/internal.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -49,7 +49,7 @@
<configuration>
<show>package</show>
<docfilessubdirs>true</docfilessubdirs>
- <doctitle>ONOS Java API (1.4.0-SNAPSHOT)</doctitle>
+ <doctitle>ONOS Java API (1.4.0-rc1)</doctitle>
<excludePackageNames>@internal-excludes</excludePackageNames>
<sourceFileExcludes>
<sourceFileExclude>**/generated-sources/**</sourceFileExclude>
diff --git a/framework/src/onos/drivers/pom.xml b/framework/src/onos/drivers/pom.xml
index db0a3985..1aab60af 100644
--- a/framework/src/onos/drivers/pom.xml
+++ b/framework/src/onos/drivers/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/features/pom.xml b/framework/src/onos/features/pom.xml
index 7b362791..caeb8ea0 100644
--- a/framework/src/onos/features/pom.xml
+++ b/framework/src/onos/features/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/incubator/api/pom.xml b/framework/src/onos/incubator/api/pom.xml
index 9d7c7a6b..cbb69dc0 100644
--- a/framework/src/onos/incubator/api/pom.xml
+++ b/framework/src/onos/incubator/api/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-incubator</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/incubator/net/pom.xml b/framework/src/onos/incubator/net/pom.xml
index e60a2710..2ffebe6b 100644
--- a/framework/src/onos/incubator/net/pom.xml
+++ b/framework/src/onos/incubator/net/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-incubator</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/incubator/pom.xml b/framework/src/onos/incubator/pom.xml
index 8122a680..a6b0fb19 100644
--- a/framework/src/onos/incubator/pom.xml
+++ b/framework/src/onos/incubator/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/incubator/rpc-grpc/pom.xml b/framework/src/onos/incubator/rpc-grpc/pom.xml
index 367b50a2..e2d16aec 100644
--- a/framework/src/onos/incubator/rpc-grpc/pom.xml
+++ b/framework/src/onos/incubator/rpc-grpc/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>onos-incubator</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-incubator-rpc-grpc</artifactId>
diff --git a/framework/src/onos/incubator/rpc/pom.xml b/framework/src/onos/incubator/rpc/pom.xml
index 8619f92e..d48ce19e 100644
--- a/framework/src/onos/incubator/rpc/pom.xml
+++ b/framework/src/onos/incubator/rpc/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>onos-incubator</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-incubator-rpc</artifactId>
diff --git a/framework/src/onos/incubator/store/pom.xml b/framework/src/onos/incubator/store/pom.xml
index 797ccc0b..43e51727 100644
--- a/framework/src/onos/incubator/store/pom.xml
+++ b/framework/src/onos/incubator/store/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-incubator</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/pom.xml b/framework/src/onos/pom.xml
index c72a4594..898dd2af 100644
--- a/framework/src/onos/pom.xml
+++ b/framework/src/onos/pom.xml
@@ -33,7 +33,7 @@
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
<packaging>pom</packaging>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<name>${project.artifactId}</name>
<description>Open Network Operating System root project</description>
diff --git a/framework/src/onos/protocols/bgp/api/pom.xml b/framework/src/onos/protocols/bgp/api/pom.xml
index 2390e5f6..d233c48e 100755
--- a/framework/src/onos/protocols/bgp/api/pom.xml
+++ b/framework/src/onos/protocols/bgp/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-bgp</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/bgp/bgpio/pom.xml b/framework/src/onos/protocols/bgp/bgpio/pom.xml
index 5d67f18c..06206e8f 100755
--- a/framework/src/onos/protocols/bgp/bgpio/pom.xml
+++ b/framework/src/onos/protocols/bgp/bgpio/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-bgp</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/bgp/ctl/pom.xml b/framework/src/onos/protocols/bgp/ctl/pom.xml
index 629e9ee7..fd5f2b54 100755
--- a/framework/src/onos/protocols/bgp/ctl/pom.xml
+++ b/framework/src/onos/protocols/bgp/ctl/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-bgp</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/bgp/pom.xml b/framework/src/onos/protocols/bgp/pom.xml
index 3b28181e..64062a66 100755
--- a/framework/src/onos/protocols/bgp/pom.xml
+++ b/framework/src/onos/protocols/bgp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-protocols</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/netconf/api/pom.xml b/framework/src/onos/protocols/netconf/api/pom.xml
index 062ec932..74a37838 100644
--- a/framework/src/onos/protocols/netconf/api/pom.xml
+++ b/framework/src/onos/protocols/netconf/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-netconf</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/netconf/ctl/pom.xml b/framework/src/onos/protocols/netconf/ctl/pom.xml
index bae59f07..ce6f9f73 100644
--- a/framework/src/onos/protocols/netconf/ctl/pom.xml
+++ b/framework/src/onos/protocols/netconf/ctl/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-netconf</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/netconf/pom.xml b/framework/src/onos/protocols/netconf/pom.xml
index f0d6ca70..37b78e78 100644
--- a/framework/src/onos/protocols/netconf/pom.xml
+++ b/framework/src/onos/protocols/netconf/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-protocols</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/netconf/rfc/pom.xml b/framework/src/onos/protocols/netconf/rfc/pom.xml
index fa1e06e2..c9a24f17 100644
--- a/framework/src/onos/protocols/netconf/rfc/pom.xml
+++ b/framework/src/onos/protocols/netconf/rfc/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-netconf</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/openflow/api/pom.xml b/framework/src/onos/protocols/openflow/api/pom.xml
index e535ac64..6a47e2ee 100644
--- a/framework/src/onos/protocols/openflow/api/pom.xml
+++ b/framework/src/onos/protocols/openflow/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/openflow/ctl/pom.xml b/framework/src/onos/protocols/openflow/ctl/pom.xml
index 56d48550..947e12f8 100644
--- a/framework/src/onos/protocols/openflow/ctl/pom.xml
+++ b/framework/src/onos/protocols/openflow/ctl/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/openflow/pom.xml b/framework/src/onos/protocols/openflow/pom.xml
index 3bf976b5..07074660 100644
--- a/framework/src/onos/protocols/openflow/pom.xml
+++ b/framework/src/onos/protocols/openflow/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-protocols</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/ovsdb/api/pom.xml b/framework/src/onos/protocols/ovsdb/api/pom.xml
index c264ae97..d4bee9a0 100644
--- a/framework/src/onos/protocols/ovsdb/api/pom.xml
+++ b/framework/src/onos/protocols/ovsdb/api/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ovsdb-api</artifactId>
<packaging>bundle</packaging>
diff --git a/framework/src/onos/protocols/ovsdb/ctl/pom.xml b/framework/src/onos/protocols/ovsdb/ctl/pom.xml
index b8366296..c9cfb9dc 100644
--- a/framework/src/onos/protocols/ovsdb/ctl/pom.xml
+++ b/framework/src/onos/protocols/ovsdb/ctl/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/ovsdb/pom.xml b/framework/src/onos/protocols/ovsdb/pom.xml
index 03e9d98c..7a56d7fb 100644
--- a/framework/src/onos/protocols/ovsdb/pom.xml
+++ b/framework/src/onos/protocols/ovsdb/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-protocols</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/ovsdb/rfc/pom.xml b/framework/src/onos/protocols/ovsdb/rfc/pom.xml
index d4d37587..c8b72d6f 100644
--- a/framework/src/onos/protocols/ovsdb/rfc/pom.xml
+++ b/framework/src/onos/protocols/ovsdb/rfc/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-ovsdb-rfc</artifactId>
diff --git a/framework/src/onos/protocols/pcep/api/pom.xml b/framework/src/onos/protocols/pcep/api/pom.xml
index 4588ad6f..b5b209c2 100644
--- a/framework/src/onos/protocols/pcep/api/pom.xml
+++ b/framework/src/onos/protocols/pcep/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/pcep/ctl/pom.xml b/framework/src/onos/protocols/pcep/ctl/pom.xml
index f0ed5c2f..0427c237 100644
--- a/framework/src/onos/protocols/pcep/ctl/pom.xml
+++ b/framework/src/onos/protocols/pcep/ctl/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/pcep/pcepio/pom.xml b/framework/src/onos/protocols/pcep/pcepio/pom.xml
index d121a83e..8b2e25b4 100755
--- a/framework/src/onos/protocols/pcep/pcepio/pom.xml
+++ b/framework/src/onos/protocols/pcep/pcepio/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-controller</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/pcep/pom.xml b/framework/src/onos/protocols/pcep/pom.xml
index 466b0c3c..5a0426e0 100755
--- a/framework/src/onos/protocols/pcep/pom.xml
+++ b/framework/src/onos/protocols/pcep/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-protocols</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/protocols/pom.xml b/framework/src/onos/protocols/pom.xml
index 25219fa0..472251d2 100644
--- a/framework/src/onos/protocols/pom.xml
+++ b/framework/src/onos/protocols/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/bgp/app/pom.xml b/framework/src/onos/providers/bgp/app/pom.xml
index 4ac3acdc..aa20a5a9 100755
--- a/framework/src/onos/providers/bgp/app/pom.xml
+++ b/framework/src/onos/providers/bgp/app/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-bgp-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/bgp/pom.xml b/framework/src/onos/providers/bgp/pom.xml
index b2e3a51d..d7d4ac05 100755
--- a/framework/src/onos/providers/bgp/pom.xml
+++ b/framework/src/onos/providers/bgp/pom.xml
@@ -18,7 +18,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-bgp-providers</artifactId>
diff --git a/framework/src/onos/providers/bgp/topology/pom.xml b/framework/src/onos/providers/bgp/topology/pom.xml
index b033742d..f7a111b0 100755
--- a/framework/src/onos/providers/bgp/topology/pom.xml
+++ b/framework/src/onos/providers/bgp/topology/pom.xml
@@ -18,7 +18,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-bgp-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-bgp-provider-topology</artifactId>
diff --git a/framework/src/onos/providers/host/pom.xml b/framework/src/onos/providers/host/pom.xml
index ddbdbfc5..ac1e4273 100644
--- a/framework/src/onos/providers/host/pom.xml
+++ b/framework/src/onos/providers/host/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/lldp/pom.xml b/framework/src/onos/providers/lldp/pom.xml
index f9052760..adf0d0dc 100644
--- a/framework/src/onos/providers/lldp/pom.xml
+++ b/framework/src/onos/providers/lldp/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/netcfghost/pom.xml b/framework/src/onos/providers/netcfghost/pom.xml
index 15363c8d..9d106921 100644
--- a/framework/src/onos/providers/netcfghost/pom.xml
+++ b/framework/src/onos/providers/netcfghost/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>onos-providers</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/providers/netconf/app/pom.xml b/framework/src/onos/providers/netconf/app/pom.xml
index 0aa55ff5..41fbd1f5 100644
--- a/framework/src/onos/providers/netconf/app/pom.xml
+++ b/framework/src/onos/providers/netconf/app/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-netconf-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/netconf/device/pom.xml b/framework/src/onos/providers/netconf/device/pom.xml
index 15ad475a..9319a509 100644
--- a/framework/src/onos/providers/netconf/device/pom.xml
+++ b/framework/src/onos/providers/netconf/device/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-netconf-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/netconf/pom.xml b/framework/src/onos/providers/netconf/pom.xml
index 8c4681df..ca044a2d 100644
--- a/framework/src/onos/providers/netconf/pom.xml
+++ b/framework/src/onos/providers/netconf/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/null/pom.xml b/framework/src/onos/providers/null/pom.xml
index 1db0753f..ef2e3347 100644
--- a/framework/src/onos/providers/null/pom.xml
+++ b/framework/src/onos/providers/null/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/app/pom.xml b/framework/src/onos/providers/openflow/app/pom.xml
index ac5f6eee..37564272 100644
--- a/framework/src/onos/providers/openflow/app/pom.xml
+++ b/framework/src/onos/providers/openflow/app/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/base/pom.xml b/framework/src/onos/providers/openflow/base/pom.xml
index 9eb170c3..231a17a4 100644
--- a/framework/src/onos/providers/openflow/base/pom.xml
+++ b/framework/src/onos/providers/openflow/base/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/device/pom.xml b/framework/src/onos/providers/openflow/device/pom.xml
index 0408f73e..e1c42a5d 100644
--- a/framework/src/onos/providers/openflow/device/pom.xml
+++ b/framework/src/onos/providers/openflow/device/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/flow/pom.xml b/framework/src/onos/providers/openflow/flow/pom.xml
index 1f65656e..16d7d32d 100644
--- a/framework/src/onos/providers/openflow/flow/pom.xml
+++ b/framework/src/onos/providers/openflow/flow/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
index aa8df947..d5186fa9 100644
--- a/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
+++ b/framework/src/onos/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/NewAdaptiveFlowStatsCollector.java
@@ -1,882 +1,882 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.provider.of.flow.impl;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import org.onosproject.net.flow.DefaultTypedFlowEntry;
-import org.onosproject.net.flow.FlowEntry;
-import org.onosproject.net.flow.FlowId;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.StoredFlowEntry;
-import org.onosproject.net.flow.TypedStoredFlowEntry;
-import org.onosproject.net.flow.instructions.Instruction;
-import org.onosproject.net.flow.instructions.Instructions;
-import org.onosproject.openflow.controller.OpenFlowSwitch;
-import org.onosproject.openflow.controller.RoleState;
-import org.projectfloodlight.openflow.protocol.OFFlowStatsRequest;
-import org.projectfloodlight.openflow.protocol.match.Match;
-import org.projectfloodlight.openflow.types.OFPort;
-import org.projectfloodlight.openflow.types.TableId;
-import org.slf4j.Logger;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.net.flow.TypedStoredFlowEntry.FlowLiveType;
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Efficiently and adaptively collects flow statistics for the specified switch.
- */
-public class NewAdaptiveFlowStatsCollector {
-
- private final Logger log = getLogger(getClass());
-
- private final OpenFlowSwitch sw;
-
- private ScheduledExecutorService adaptiveFlowStatsScheduler =
- Executors.newScheduledThreadPool(4, groupedThreads("onos/flow", "device-stats-collector-%d"));
- private ScheduledFuture<?> calAndShortFlowsThread;
- private ScheduledFuture<?> midFlowsThread;
- private ScheduledFuture<?> longFlowsThread;
-
- // Task that calculates all flowEntries' FlowLiveType and collects stats IMMEDIATE flows every calAndPollInterval
- private CalAndShortFlowsTask calAndShortFlowsTask;
- // Task that collects stats MID flows every 2*calAndPollInterval
- private MidFlowsTask midFlowsTask;
- // Task that collects stats LONG flows every 3*calAndPollInterval
- private LongFlowsTask longFlowsTask;
-
- private static final int CAL_AND_POLL_TIMES = 1; // must be always 0
- private static final int MID_POLL_TIMES = 2; // variable greater or equal than 1
- private static final int LONG_POLL_TIMES = 3; // variable greater or equal than MID_POLL_TIMES
- //TODO: make ENTIRE_POLL_TIMES configurable with enable or disable
- // must be variable greater or equal than common multiple of MID_POLL_TIMES and LONG_POLL_TIMES
- private static final int ENTIRE_POLL_TIMES = 6;
-
- private static final int DEFAULT_CAL_AND_POLL_FREQUENCY = 5;
- private static final int MIN_CAL_AND_POLL_FREQUENCY = 2;
- private static final int MAX_CAL_AND_POLL_FREQUENCY = 60;
-
- private int calAndPollInterval; // CAL_AND_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
- private int midPollInterval; // MID_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
- private int longPollInterval; // LONG_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
- // only used for checking condition at each task if it collects entire flows from a given switch or not
- private int entirePollInterval; // ENTIRE_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
-
- // Number of call count of each Task,
- // for undoing collection except only entire flows collecting task in CalAndShortFlowsTask
- private int callCountCalAndShortFlowsTask = 0; // increased CAL_AND_POLL_TIMES whenever Task is called
- private int callCountMidFlowsTask = 0; // increased MID_POLL_TIMES whenever Task is called
- private int callCountLongFlowsTask = 0; // increased LONG_POLL_TIMES whenever Task is called
-
- private InternalDeviceFlowTable deviceFlowTable = new InternalDeviceFlowTable();
-
- private boolean isFirstTimeStart = true;
-
- public static final long NO_FLOW_MISSING_XID = (-1);
- private long flowMissingXid = NO_FLOW_MISSING_XID;
-
- /**
- * Creates a new adaptive collector for the given switch and default cal_and_poll frequency.
- *
- * @param sw switch to pull
- * @param pollInterval cal and immediate poll frequency in seconds
- */
- NewAdaptiveFlowStatsCollector(OpenFlowSwitch sw, int pollInterval) {
- this.sw = sw;
-
- initMemberVars(pollInterval);
- }
-
- // check calAndPollInterval validity and set all pollInterval values and finally initialize each task call count
- private void initMemberVars(int pollInterval) {
- if (pollInterval < MIN_CAL_AND_POLL_FREQUENCY) {
- this.calAndPollInterval = MIN_CAL_AND_POLL_FREQUENCY;
- } else if (pollInterval >= MAX_CAL_AND_POLL_FREQUENCY) {
- this.calAndPollInterval = MAX_CAL_AND_POLL_FREQUENCY;
- } else {
- this.calAndPollInterval = pollInterval;
- }
-
- calAndPollInterval = CAL_AND_POLL_TIMES * calAndPollInterval;
- midPollInterval = MID_POLL_TIMES * calAndPollInterval;
- longPollInterval = LONG_POLL_TIMES * calAndPollInterval;
- entirePollInterval = ENTIRE_POLL_TIMES * calAndPollInterval;
-
- callCountCalAndShortFlowsTask = 0;
- callCountMidFlowsTask = 0;
- callCountLongFlowsTask = 0;
-
- flowMissingXid = NO_FLOW_MISSING_XID;
- }
-
- /**
- * Adjusts adaptive poll frequency.
- *
- * @param pollInterval poll frequency in seconds
- */
- synchronized void adjustCalAndPollInterval(int pollInterval) {
- initMemberVars(pollInterval);
-
- if (calAndShortFlowsThread != null) {
- calAndShortFlowsThread.cancel(false);
- }
- if (midFlowsThread != null) {
- midFlowsThread.cancel(false);
- }
- if (longFlowsThread != null) {
- longFlowsThread.cancel(false);
- }
-
- calAndShortFlowsTask = new CalAndShortFlowsTask();
- calAndShortFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- calAndShortFlowsTask,
- 0,
- calAndPollInterval,
- TimeUnit.SECONDS);
-
- midFlowsTask = new MidFlowsTask();
- midFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- midFlowsTask,
- 0,
- midPollInterval,
- TimeUnit.SECONDS);
-
- longFlowsTask = new LongFlowsTask();
- longFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- longFlowsTask,
- 0,
- longPollInterval,
- TimeUnit.SECONDS);
-
- log.debug("calAndPollInterval=" + calAndPollInterval + "is adjusted");
- }
-
- private class CalAndShortFlowsTask implements Runnable {
- @Override
- public void run() {
- if (sw.getRole() == RoleState.MASTER) {
- log.trace("CalAndShortFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
-
- if (isFirstTimeStart) {
- // isFirstTimeStart, get entire flow stats from a given switch sw
- log.trace("CalAndShortFlowsTask Collecting Entire AdaptiveStats at first time start for {}",
- sw.getStringId());
- ofFlowStatsRequestAllSend();
-
- callCountCalAndShortFlowsTask += CAL_AND_POLL_TIMES;
- isFirstTimeStart = false;
- } else if (callCountCalAndShortFlowsTask == ENTIRE_POLL_TIMES) {
- // entire_poll_times, get entire flow stats from a given switch sw
- log.trace("CalAndShortFlowsTask Collecting Entire AdaptiveStats for {}", sw.getStringId());
- ofFlowStatsRequestAllSend();
-
- callCountCalAndShortFlowsTask = CAL_AND_POLL_TIMES;
- //TODO: check flows deleted in switch, but exist in controller flow table, then remove them
- //
- } else {
- calAndShortFlowsTaskInternal();
- callCountCalAndShortFlowsTask += CAL_AND_POLL_TIMES;
- }
- }
- }
- }
-
- // send openflow flow stats request message with getting all flow entries to a given switch sw
- private void ofFlowStatsRequestAllSend() {
- OFFlowStatsRequest request = sw.factory().buildFlowStatsRequest()
- .setMatch(sw.factory().matchWildcardAll())
- .setTableId(TableId.ALL)
- .setOutPort(OFPort.NO_MASK)
- .build();
-
- synchronized (this) {
- // set the request xid to check the reply in OpenFlowRuleProvider
- // After processing the reply of this request message,
- // this must be set to NO_FLOW_MISSING_XID(-1) by provider
- setFlowMissingXid(request.getXid());
- log.debug("ofFlowStatsRequestAllSend,Request={},for {}", request.toString(), sw.getStringId());
-
- sw.sendMsg(request);
- }
- }
-
- // send openflow flow stats request message with getting the specific flow entry(fe) to a given switch sw
- private void ofFlowStatsRequestFlowSend(FlowEntry fe) {
- // set find match
- Match match = FlowModBuilder.builder(fe, sw.factory(), Optional.empty(),
- Optional.empty()).buildMatch();
- // set find tableId
- TableId tableId = TableId.of(fe.tableId());
- // set output port
- Instruction ins = fe.treatment().allInstructions().stream()
- .filter(i -> (i.type() == Instruction.Type.OUTPUT))
- .findFirst()
- .orElse(null);
- OFPort ofPort = OFPort.NO_MASK;
- if (ins != null) {
- Instructions.OutputInstruction out = (Instructions.OutputInstruction) ins;
- ofPort = OFPort.of((int) ((out.port().toLong())));
- }
-
- OFFlowStatsRequest request = sw.factory().buildFlowStatsRequest()
- .setMatch(match)
- .setTableId(tableId)
- .setOutPort(ofPort)
- .build();
-
- synchronized (this) {
- if (getFlowMissingXid() != NO_FLOW_MISSING_XID) {
- log.debug("ofFlowStatsRequestFlowSend: previous FlowStatsRequestAll does not be processed yet,"
- + " set no flow missing xid anyway, for {}",
- sw.getStringId());
- setFlowMissingXid(NO_FLOW_MISSING_XID);
- }
-
- sw.sendMsg(request);
- }
- }
-
- private void calAndShortFlowsTaskInternal() {
- deviceFlowTable.checkAndMoveLiveFlowAll();
-
- deviceFlowTable.getShortFlows().forEach(fe -> {
- ofFlowStatsRequestFlowSend(fe);
- });
- }
-
- private class MidFlowsTask implements Runnable {
- @Override
- public void run() {
- if (sw.getRole() == RoleState.MASTER) {
- log.trace("MidFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
-
- // skip collecting because CalAndShortFlowsTask collects entire flow stats from a given switch sw
- if (callCountMidFlowsTask == ENTIRE_POLL_TIMES) {
- callCountMidFlowsTask = MID_POLL_TIMES;
- } else {
- midFlowsTaskInternal();
- callCountMidFlowsTask += MID_POLL_TIMES;
- }
- }
- }
- }
-
- private void midFlowsTaskInternal() {
- deviceFlowTable.getMidFlows().forEach(fe -> {
- ofFlowStatsRequestFlowSend(fe);
- });
- }
-
- private class LongFlowsTask implements Runnable {
- @Override
- public void run() {
- if (sw.getRole() == RoleState.MASTER) {
- log.trace("LongFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
-
- // skip collecting because CalAndShortFlowsTask collects entire flow stats from a given switch sw
- if (callCountLongFlowsTask == ENTIRE_POLL_TIMES) {
- callCountLongFlowsTask = LONG_POLL_TIMES;
- } else {
- longFlowsTaskInternal();
- callCountLongFlowsTask += LONG_POLL_TIMES;
- }
- }
- }
- }
-
- private void longFlowsTaskInternal() {
- deviceFlowTable.getLongFlows().forEach(fe -> {
- ofFlowStatsRequestFlowSend(fe);
- });
- }
-
- /**
- * start adaptive flow statistic collection.
- *
- */
- public synchronized void start() {
- log.debug("Starting AdaptiveStats collection thread for {}", sw.getStringId());
- callCountCalAndShortFlowsTask = 0;
- callCountMidFlowsTask = 0;
- callCountLongFlowsTask = 0;
-
- isFirstTimeStart = true;
-
- // Initially start polling quickly. Then drop down to configured value
- calAndShortFlowsTask = new CalAndShortFlowsTask();
- calAndShortFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- calAndShortFlowsTask,
- 1,
- calAndPollInterval,
- TimeUnit.SECONDS);
-
- midFlowsTask = new MidFlowsTask();
- midFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- midFlowsTask,
- 1,
- midPollInterval,
- TimeUnit.SECONDS);
-
- longFlowsTask = new LongFlowsTask();
- longFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
- longFlowsTask,
- 1,
- longPollInterval,
- TimeUnit.SECONDS);
-
- log.info("Started");
- }
-
- /**
- * stop adaptive flow statistic collection.
- *
- */
- public synchronized void stop() {
- log.debug("Stopping AdaptiveStats collection thread for {}", sw.getStringId());
- if (calAndShortFlowsThread != null) {
- calAndShortFlowsThread.cancel(true);
- }
- if (midFlowsThread != null) {
- midFlowsThread.cancel(true);
- }
- if (longFlowsThread != null) {
- longFlowsThread.cancel(true);
- }
-
- adaptiveFlowStatsScheduler.shutdownNow();
-
- isFirstTimeStart = false;
-
- log.info("Stopped");
- }
-
- /**
- * add typed flow entry from flow rule into the internal flow table.
- *
- * @param flowRules the flow rules
- *
- */
- public synchronized void addWithFlowRule(FlowRule... flowRules) {
- for (FlowRule fr : flowRules) {
- // First remove old entry unconditionally, if exist
- deviceFlowTable.remove(fr);
-
- // add new flow entry, we suppose IMMEDIATE_FLOW
- TypedStoredFlowEntry newFlowEntry = new DefaultTypedFlowEntry(fr,
- FlowLiveType.IMMEDIATE_FLOW);
- deviceFlowTable.addWithCalAndSetFlowLiveType(newFlowEntry);
- }
- }
-
- /**
- * add or update typed flow entry from flow entry into the internal flow table.
- *
- * @param flowEntries the flow entries
- *
- */
- public synchronized void addOrUpdateFlows(FlowEntry... flowEntries) {
- for (FlowEntry fe : flowEntries) {
- // check if this new rule is an update to an existing entry
- TypedStoredFlowEntry stored = deviceFlowTable.getFlowEntry(fe);
-
- if (stored != null) {
- // duplicated flow entry is collected!, just skip
- if (fe.bytes() == stored.bytes() && fe.packets() == stored.packets()
- && fe.life() == stored.life()) {
- log.debug("addOrUpdateFlows:, FlowId=" + Long.toHexString(fe.id().value())
- + ",is DUPLICATED stats collection, just skip."
- + " AdaptiveStats collection thread for {}",
- sw.getStringId());
-
- stored.setLastSeen();
- continue;
- } else if (fe.life() < stored.life()) {
- // Invalid updates the stats values, i.e., bytes, packets, durations ...
- log.debug("addOrUpdateFlows():" +
- " Invalid Flow Update! The new life is SMALLER than the previous one, jus skip." +
- " new flowId=" + Long.toHexString(fe.id().value()) +
- ", old flowId=" + Long.toHexString(stored.id().value()) +
- ", new bytes=" + fe.bytes() + ", old bytes=" + stored.bytes() +
- ", new life=" + fe.life() + ", old life=" + stored.life() +
- ", new lastSeen=" + fe.lastSeen() + ", old lastSeen=" + stored.lastSeen());
- // go next
- stored.setLastSeen();
- continue;
- }
-
- // update now
- stored.setLife(fe.life());
- stored.setPackets(fe.packets());
- stored.setBytes(fe.bytes());
- stored.setLastSeen();
- if (stored.state() == FlowEntry.FlowEntryState.PENDING_ADD) {
- // flow is really RULE_ADDED
- stored.setState(FlowEntry.FlowEntryState.ADDED);
- }
- // flow is RULE_UPDATED, skip adding and just updating flow live table
- //deviceFlowTable.calAndSetFlowLiveType(stored);
- continue;
- }
-
- // add new flow entry, we suppose IMMEDIATE_FLOW
- TypedStoredFlowEntry newFlowEntry = new DefaultTypedFlowEntry(fe,
- FlowLiveType.IMMEDIATE_FLOW);
- deviceFlowTable.addWithCalAndSetFlowLiveType(newFlowEntry);
- }
- }
-
- /**
- * remove typed flow entry from the internal flow table.
- *
- * @param flowRules the flow entries
- *
- */
- public synchronized void removeFlows(FlowRule... flowRules) {
- for (FlowRule rule : flowRules) {
- deviceFlowTable.remove(rule);
- }
- }
-
- // same as removeFlows() function
- /**
- * remove typed flow entry from the internal flow table.
- *
- * @param flowRules the flow entries
- *
- */
- public void flowRemoved(FlowRule... flowRules) {
- removeFlows(flowRules);
- }
-
- // same as addOrUpdateFlows() function
- /**
- * add or update typed flow entry from flow entry into the internal flow table.
- *
- * @param flowEntries the flow entry list
- *
- */
- public void pushFlowMetrics(List<FlowEntry> flowEntries) {
- flowEntries.forEach(fe -> {
- addOrUpdateFlows(fe);
- });
- }
-
- /**
- * returns flowMissingXid that indicates the execution of flowMissing process or not(NO_FLOW_MISSING_XID(-1)).
- *
- * @return xid of missing flow
- */
- public long getFlowMissingXid() {
- return flowMissingXid;
- }
-
- /**
- * set flowMissingXid, namely OFFlowStatsRequest match any ALL message Id.
- *
- * @param flowMissingXid the OFFlowStatsRequest message Id
- *
- */
- public void setFlowMissingXid(long flowMissingXid) {
- this.flowMissingXid = flowMissingXid;
- }
-
- private class InternalDeviceFlowTable {
-
- private final Map<FlowId, Set<TypedStoredFlowEntry>>
- flowEntries = Maps.newConcurrentMap();
-
- private final Set<StoredFlowEntry> shortFlows = new HashSet<>();
- private final Set<StoredFlowEntry> midFlows = new HashSet<>();
- private final Set<StoredFlowEntry> longFlows = new HashSet<>();
-
- // Assumed latency adjustment(default=500 millisecond) between FlowStatsRequest and Reply
- private final long latencyFlowStatsRequestAndReplyMillis = 500;
-
-
- // Statistics for table operation
- private long addCount = 0, addWithSetFlowLiveTypeCount = 0;
- private long removeCount = 0;
-
- /**
- * Resets all count values with zero.
- *
- */
- public void resetAllCount() {
- addCount = 0;
- addWithSetFlowLiveTypeCount = 0;
- removeCount = 0;
- }
-
- // get set of flow entries for the given flowId
- private Set<TypedStoredFlowEntry> getFlowEntriesInternal(FlowId flowId) {
- return flowEntries.computeIfAbsent(flowId, id -> Sets.newCopyOnWriteArraySet());
- }
-
- // get flow entry for the given flow rule
- private TypedStoredFlowEntry getFlowEntryInternal(FlowRule rule) {
- Set<TypedStoredFlowEntry> flowEntries = getFlowEntriesInternal(rule.id());
- return flowEntries.stream()
- .filter(entry -> Objects.equal(entry, rule))
- .findAny()
- .orElse(null);
- }
-
- // get the flow entries for all flows in flow table
- private Set<TypedStoredFlowEntry> getFlowEntriesInternal() {
- Set<TypedStoredFlowEntry> result = Sets.newHashSet();
-
- flowEntries.values().forEach(result::addAll);
- return result;
- }
-
- /**
- * Gets the number of flow entry in flow table.
- *
- * @return the number of flow entry.
- *
- */
- public long getFlowCount() {
- return flowEntries.values().stream().mapToLong(Set::size).sum();
- }
-
- /**
- * Gets the number of flow entry in flow table.
- *
- * @param rule the flow rule
- * @return the typed flow entry.
- *
- */
- public TypedStoredFlowEntry getFlowEntry(FlowRule rule) {
- checkNotNull(rule);
-
- return getFlowEntryInternal(rule);
- }
-
- /**
- * Gets the all typed flow entries in flow table.
- *
- * @return the set of typed flow entry.
- *
- */
- public Set<TypedStoredFlowEntry> getFlowEntries() {
- return getFlowEntriesInternal();
- }
-
- /**
- * Gets the short typed flow entries in flow table.
- *
- * @return the set of typed flow entry.
- *
- */
- public Set<StoredFlowEntry> getShortFlows() {
- return ImmutableSet.copyOf(shortFlows); //Sets.newHashSet(shortFlows);
- }
-
- /**
- * Gets the mid typed flow entries in flow table.
- *
- * @return the set of typed flow entry.
- *
- */
- public Set<StoredFlowEntry> getMidFlows() {
- return ImmutableSet.copyOf(midFlows); //Sets.newHashSet(midFlows);
- }
-
- /**
- * Gets the long typed flow entries in flow table.
- *
- * @return the set of typed flow entry.
- *
- */
- public Set<StoredFlowEntry> getLongFlows() {
- return ImmutableSet.copyOf(longFlows); //Sets.newHashSet(longFlows);
- }
-
- /**
- * Add typed flow entry into table only.
- *
- * @param rule the flow rule
- *
- */
- public synchronized void add(TypedStoredFlowEntry rule) {
- checkNotNull(rule);
-
- //rule have to be new DefaultTypedFlowEntry
- boolean result = getFlowEntriesInternal(rule.id()).add(rule);
-
- if (result) {
- addCount++;
- }
- }
-
- /**
- * Calculates and set the flow live type at the first time,
- * and then add it into a corresponding typed flow table.
- *
- * @param rule the flow rule
- *
- */
- public void calAndSetFlowLiveType(TypedStoredFlowEntry rule) {
- checkNotNull(rule);
-
- calAndSetFlowLiveTypeInternal(rule);
- }
-
- /**
- * Add the typed flow entry into table, and calculates and set the flow live type,
- * and then add it into a corresponding typed flow table.
- *
- * @param rule the flow rule
- *
- */
- public synchronized void addWithCalAndSetFlowLiveType(TypedStoredFlowEntry rule) {
- checkNotNull(rule);
-
- //rule have to be new DefaultTypedFlowEntry
- boolean result = getFlowEntriesInternal(rule.id()).add(rule);
- if (result) {
- calAndSetFlowLiveTypeInternal(rule);
- addWithSetFlowLiveTypeCount++;
- } else {
- log.debug("addWithCalAndSetFlowLiveType, FlowId=" + Long.toHexString(rule.id().value())
- + " ADD Failed, cause it may already exists in table !!!,"
- + " AdaptiveStats collection thread for {}",
- sw.getStringId());
- }
- }
-
- // In real, calculates and set the flow live type at the first time,
- // and then add it into a corresponding typed flow table
- private void calAndSetFlowLiveTypeInternal(TypedStoredFlowEntry rule) {
- long life = rule.life();
- FlowLiveType prevFlowLiveType = rule.flowLiveType();
-
- if (life >= longPollInterval) {
- rule.setFlowLiveType(FlowLiveType.LONG_FLOW);
- longFlows.add(rule);
- } else if (life >= midPollInterval) {
- rule.setFlowLiveType(FlowLiveType.MID_FLOW);
- midFlows.add(rule);
- } else if (life >= calAndPollInterval) {
- rule.setFlowLiveType(FlowLiveType.SHORT_FLOW);
- shortFlows.add(rule);
- } else if (life >= 0) {
- rule.setFlowLiveType(FlowLiveType.IMMEDIATE_FLOW);
- } else { // life < 0
- rule.setFlowLiveType(FlowLiveType.UNKNOWN_FLOW);
- }
-
- if (rule.flowLiveType() != prevFlowLiveType) {
- switch (prevFlowLiveType) {
- // delete it from previous flow table
- case SHORT_FLOW:
- shortFlows.remove(rule);
- break;
- case MID_FLOW:
- midFlows.remove(rule);
- break;
- case LONG_FLOW:
- longFlows.remove(rule);
- break;
- default:
- break;
- }
- }
- }
-
-
- // check the flow live type based on current time, then set and add it into corresponding table
- private boolean checkAndMoveLiveFlowInternal(TypedStoredFlowEntry fe, long cTime) {
- long curTime = (cTime > 0 ? cTime : System.currentTimeMillis());
- // For latency adjustment(default=500 millisecond) between FlowStatsRequest and Reply
- long fromLastSeen = ((curTime - fe.lastSeen() + latencyFlowStatsRequestAndReplyMillis) / 1000);
- // fe.life() unit is SECOND!
- long liveTime = fe.life() + fromLastSeen;
-
-
- switch (fe.flowLiveType()) {
- case IMMEDIATE_FLOW:
- if (liveTime >= longPollInterval) {
- fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
- longFlows.add(fe);
- } else if (liveTime >= midPollInterval) {
- fe.setFlowLiveType(FlowLiveType.MID_FLOW);
- midFlows.add(fe);
- } else if (liveTime >= calAndPollInterval) {
- fe.setFlowLiveType(FlowLiveType.SHORT_FLOW);
- shortFlows.add(fe);
- }
- break;
- case SHORT_FLOW:
- if (liveTime >= longPollInterval) {
- fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
- shortFlows.remove(fe);
- longFlows.add(fe);
- } else if (liveTime >= midPollInterval) {
- fe.setFlowLiveType(FlowLiveType.MID_FLOW);
- shortFlows.remove(fe);
- midFlows.add(fe);
- }
- break;
- case MID_FLOW:
- if (liveTime >= longPollInterval) {
- fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
- midFlows.remove(fe);
- longFlows.add(fe);
- }
- break;
- case LONG_FLOW:
- if (fromLastSeen > entirePollInterval) {
- log.trace("checkAndMoveLiveFlowInternal, flow is already removed at switch.");
- return false;
- }
- break;
- case UNKNOWN_FLOW: // Unknown flow is an internal error flow type, just fall through
- default :
- // Error Unknown Live Type
- log.error("checkAndMoveLiveFlowInternal, Unknown Live Type error!"
- + "AdaptiveStats collection thread for {}",
- sw.getStringId());
- return false;
- }
-
- log.debug("checkAndMoveLiveFlowInternal, FlowId=" + Long.toHexString(fe.id().value())
- + ", state=" + fe.state()
- + ", After liveType=" + fe.flowLiveType()
- + ", liveTime=" + liveTime
- + ", life=" + fe.life()
- + ", bytes=" + fe.bytes()
- + ", packets=" + fe.packets()
- + ", fromLastSeen=" + fromLastSeen
- + ", priority=" + fe.priority()
- + ", selector=" + fe.selector().criteria()
- + ", treatment=" + fe.treatment()
- + " AdaptiveStats collection thread for {}",
- sw.getStringId());
-
- return true;
- }
-
- /**
- * Check and move live type for all type flow entries in table at every calAndPollInterval time.
- *
- */
- public void checkAndMoveLiveFlowAll() {
- Set<TypedStoredFlowEntry> typedFlowEntries = getFlowEntriesInternal();
-
- long calCurTime = System.currentTimeMillis();
- typedFlowEntries.forEach(fe -> {
- if (!checkAndMoveLiveFlowInternal(fe, calCurTime)) {
- remove(fe);
- }
- });
-
- // print table counts for debug
- if (log.isDebugEnabled()) {
- synchronized (this) {
- long totalFlowCount = getFlowCount();
- long shortFlowCount = shortFlows.size();
- long midFlowCount = midFlows.size();
- long longFlowCount = longFlows.size();
- long immediateFlowCount = totalFlowCount - shortFlowCount - midFlowCount - longFlowCount;
- long calTotalCount = addCount + addWithSetFlowLiveTypeCount - removeCount;
-
- log.debug("--------------------------------------------------------------------------- for {}",
- sw.getStringId());
- log.debug("checkAndMoveLiveFlowAll, Total Flow_Count=" + totalFlowCount
- + ", add - remove_Count=" + calTotalCount
- + ", IMMEDIATE_FLOW_Count=" + immediateFlowCount
- + ", SHORT_FLOW_Count=" + shortFlowCount
- + ", MID_FLOW_Count=" + midFlowCount
- + ", LONG_FLOW_Count=" + longFlowCount
- + ", add_Count=" + addCount
- + ", addWithSetFlowLiveType_Count=" + addWithSetFlowLiveTypeCount
- + ", remove_Count=" + removeCount
- + " AdaptiveStats collection thread for {}", sw.getStringId());
- log.debug("--------------------------------------------------------------------------- for {}",
- sw.getStringId());
- if (totalFlowCount != calTotalCount) {
- log.error("checkAndMoveLiveFlowAll, Real total flow count and "
- + "calculated total flow count do NOT match, something is wrong internally "
- + "or check counter value bound is over!");
- }
- if (immediateFlowCount < 0) {
- log.error("checkAndMoveLiveFlowAll, IMMEDIATE_FLOW count is negative, "
- + "something is wrong internally "
- + "or check counter value bound is over!");
- }
- }
- }
- log.trace("checkAndMoveLiveFlowAll, AdaptiveStats for {}", sw.getStringId());
- }
-
- /**
- * Remove the typed flow entry from table.
- *
- * @param rule the flow rule
- *
- */
- public synchronized void remove(FlowRule rule) {
- checkNotNull(rule);
-
- TypedStoredFlowEntry removeStore = getFlowEntryInternal(rule);
- if (removeStore != null) {
- removeLiveFlowsInternal((TypedStoredFlowEntry) removeStore);
- boolean result = getFlowEntriesInternal(rule.id()).remove(removeStore);
-
- if (result) {
- removeCount++;
- }
- }
- }
-
- // Remove the typed flow entry from corresponding table
- private void removeLiveFlowsInternal(TypedStoredFlowEntry fe) {
- switch (fe.flowLiveType()) {
- case IMMEDIATE_FLOW:
- // do nothing
- break;
- case SHORT_FLOW:
- shortFlows.remove(fe);
- break;
- case MID_FLOW:
- midFlows.remove(fe);
- break;
- case LONG_FLOW:
- longFlows.remove(fe);
- break;
- default: // error in Flow Live Type
- log.error("removeLiveFlowsInternal, Unknown Live Type error!");
- break;
- }
- }
- }
-}
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.provider.of.flow.impl;
+
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import org.onosproject.net.flow.DefaultTypedFlowEntry;
+import org.onosproject.net.flow.FlowEntry;
+import org.onosproject.net.flow.FlowId;
+import org.onosproject.net.flow.FlowRule;
+import org.onosproject.net.flow.StoredFlowEntry;
+import org.onosproject.net.flow.TypedStoredFlowEntry;
+import org.onosproject.net.flow.instructions.Instruction;
+import org.onosproject.net.flow.instructions.Instructions;
+import org.onosproject.openflow.controller.OpenFlowSwitch;
+import org.onosproject.openflow.controller.RoleState;
+import org.projectfloodlight.openflow.protocol.OFFlowStatsRequest;
+import org.projectfloodlight.openflow.protocol.match.Match;
+import org.projectfloodlight.openflow.types.OFPort;
+import org.projectfloodlight.openflow.types.TableId;
+import org.slf4j.Logger;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onlab.util.Tools.groupedThreads;
+import static org.onosproject.net.flow.TypedStoredFlowEntry.FlowLiveType;
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * Efficiently and adaptively collects flow statistics for the specified switch.
+ */
+public class NewAdaptiveFlowStatsCollector {
+
+ private final Logger log = getLogger(getClass());
+
+ private final OpenFlowSwitch sw;
+
+ private ScheduledExecutorService adaptiveFlowStatsScheduler =
+ Executors.newScheduledThreadPool(4, groupedThreads("onos/flow", "device-stats-collector-%d"));
+ private ScheduledFuture<?> calAndShortFlowsThread;
+ private ScheduledFuture<?> midFlowsThread;
+ private ScheduledFuture<?> longFlowsThread;
+
+ // Task that calculates all flowEntries' FlowLiveType and collects stats IMMEDIATE flows every calAndPollInterval
+ private CalAndShortFlowsTask calAndShortFlowsTask;
+ // Task that collects stats MID flows every 2*calAndPollInterval
+ private MidFlowsTask midFlowsTask;
+ // Task that collects stats LONG flows every 3*calAndPollInterval
+ private LongFlowsTask longFlowsTask;
+
+ private static final int CAL_AND_POLL_TIMES = 1; // must be always 0
+ private static final int MID_POLL_TIMES = 2; // variable greater or equal than 1
+ private static final int LONG_POLL_TIMES = 3; // variable greater or equal than MID_POLL_TIMES
+ //TODO: make ENTIRE_POLL_TIMES configurable with enable or disable
+ // must be variable greater or equal than common multiple of MID_POLL_TIMES and LONG_POLL_TIMES
+ private static final int ENTIRE_POLL_TIMES = 6;
+
+ private static final int DEFAULT_CAL_AND_POLL_FREQUENCY = 5;
+ private static final int MIN_CAL_AND_POLL_FREQUENCY = 2;
+ private static final int MAX_CAL_AND_POLL_FREQUENCY = 60;
+
+ private int calAndPollInterval; // CAL_AND_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
+ private int midPollInterval; // MID_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
+ private int longPollInterval; // LONG_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
+ // only used for checking condition at each task if it collects entire flows from a given switch or not
+ private int entirePollInterval; // ENTIRE_POLL_TIMES * DEFAULT_CAL_AND_POLL_FREQUENCY;
+
+ // Number of call count of each Task,
+ // for undoing collection except only entire flows collecting task in CalAndShortFlowsTask
+ private int callCountCalAndShortFlowsTask = 0; // increased CAL_AND_POLL_TIMES whenever Task is called
+ private int callCountMidFlowsTask = 0; // increased MID_POLL_TIMES whenever Task is called
+ private int callCountLongFlowsTask = 0; // increased LONG_POLL_TIMES whenever Task is called
+
+ private InternalDeviceFlowTable deviceFlowTable = new InternalDeviceFlowTable();
+
+ private boolean isFirstTimeStart = true;
+
+ public static final long NO_FLOW_MISSING_XID = (-1);
+ private long flowMissingXid = NO_FLOW_MISSING_XID;
+
+ /**
+ * Creates a new adaptive collector for the given switch and default cal_and_poll frequency.
+ *
+ * @param sw switch to pull
+ * @param pollInterval cal and immediate poll frequency in seconds
+ */
+ NewAdaptiveFlowStatsCollector(OpenFlowSwitch sw, int pollInterval) {
+ this.sw = sw;
+
+ initMemberVars(pollInterval);
+ }
+
+ // check calAndPollInterval validity and set all pollInterval values and finally initialize each task call count
+ private void initMemberVars(int pollInterval) {
+ if (pollInterval < MIN_CAL_AND_POLL_FREQUENCY) {
+ this.calAndPollInterval = MIN_CAL_AND_POLL_FREQUENCY;
+ } else if (pollInterval >= MAX_CAL_AND_POLL_FREQUENCY) {
+ this.calAndPollInterval = MAX_CAL_AND_POLL_FREQUENCY;
+ } else {
+ this.calAndPollInterval = pollInterval;
+ }
+
+ calAndPollInterval = CAL_AND_POLL_TIMES * calAndPollInterval;
+ midPollInterval = MID_POLL_TIMES * calAndPollInterval;
+ longPollInterval = LONG_POLL_TIMES * calAndPollInterval;
+ entirePollInterval = ENTIRE_POLL_TIMES * calAndPollInterval;
+
+ callCountCalAndShortFlowsTask = 0;
+ callCountMidFlowsTask = 0;
+ callCountLongFlowsTask = 0;
+
+ flowMissingXid = NO_FLOW_MISSING_XID;
+ }
+
+ /**
+ * Adjusts adaptive poll frequency.
+ *
+ * @param pollInterval poll frequency in seconds
+ */
+ synchronized void adjustCalAndPollInterval(int pollInterval) {
+ initMemberVars(pollInterval);
+
+ if (calAndShortFlowsThread != null) {
+ calAndShortFlowsThread.cancel(false);
+ }
+ if (midFlowsThread != null) {
+ midFlowsThread.cancel(false);
+ }
+ if (longFlowsThread != null) {
+ longFlowsThread.cancel(false);
+ }
+
+ calAndShortFlowsTask = new CalAndShortFlowsTask();
+ calAndShortFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ calAndShortFlowsTask,
+ 0,
+ calAndPollInterval,
+ TimeUnit.SECONDS);
+
+ midFlowsTask = new MidFlowsTask();
+ midFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ midFlowsTask,
+ 0,
+ midPollInterval,
+ TimeUnit.SECONDS);
+
+ longFlowsTask = new LongFlowsTask();
+ longFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ longFlowsTask,
+ 0,
+ longPollInterval,
+ TimeUnit.SECONDS);
+
+ log.debug("calAndPollInterval=" + calAndPollInterval + "is adjusted");
+ }
+
+ private class CalAndShortFlowsTask implements Runnable {
+ @Override
+ public void run() {
+ if (sw.getRole() == RoleState.MASTER) {
+ log.trace("CalAndShortFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
+
+ if (isFirstTimeStart) {
+ // isFirstTimeStart, get entire flow stats from a given switch sw
+ log.trace("CalAndShortFlowsTask Collecting Entire AdaptiveStats at first time start for {}",
+ sw.getStringId());
+ ofFlowStatsRequestAllSend();
+
+ callCountCalAndShortFlowsTask += CAL_AND_POLL_TIMES;
+ isFirstTimeStart = false;
+ } else if (callCountCalAndShortFlowsTask == ENTIRE_POLL_TIMES) {
+ // entire_poll_times, get entire flow stats from a given switch sw
+ log.trace("CalAndShortFlowsTask Collecting Entire AdaptiveStats for {}", sw.getStringId());
+ ofFlowStatsRequestAllSend();
+
+ callCountCalAndShortFlowsTask = CAL_AND_POLL_TIMES;
+ //TODO: check flows deleted in switch, but exist in controller flow table, then remove them
+ //
+ } else {
+ calAndShortFlowsTaskInternal();
+ callCountCalAndShortFlowsTask += CAL_AND_POLL_TIMES;
+ }
+ }
+ }
+ }
+
+ // send openflow flow stats request message with getting all flow entries to a given switch sw
+ private void ofFlowStatsRequestAllSend() {
+ OFFlowStatsRequest request = sw.factory().buildFlowStatsRequest()
+ .setMatch(sw.factory().matchWildcardAll())
+ .setTableId(TableId.ALL)
+ .setOutPort(OFPort.NO_MASK)
+ .build();
+
+ synchronized (this) {
+ // set the request xid to check the reply in OpenFlowRuleProvider
+ // After processing the reply of this request message,
+ // this must be set to NO_FLOW_MISSING_XID(-1) by provider
+ setFlowMissingXid(request.getXid());
+ log.debug("ofFlowStatsRequestAllSend,Request={},for {}", request.toString(), sw.getStringId());
+
+ sw.sendMsg(request);
+ }
+ }
+
+ // send openflow flow stats request message with getting the specific flow entry(fe) to a given switch sw
+ private void ofFlowStatsRequestFlowSend(FlowEntry fe) {
+ // set find match
+ Match match = FlowModBuilder.builder(fe, sw.factory(), Optional.empty(),
+ Optional.empty()).buildMatch();
+ // set find tableId
+ TableId tableId = TableId.of(fe.tableId());
+ // set output port
+ Instruction ins = fe.treatment().allInstructions().stream()
+ .filter(i -> (i.type() == Instruction.Type.OUTPUT))
+ .findFirst()
+ .orElse(null);
+ OFPort ofPort = OFPort.NO_MASK;
+ if (ins != null) {
+ Instructions.OutputInstruction out = (Instructions.OutputInstruction) ins;
+ ofPort = OFPort.of((int) ((out.port().toLong())));
+ }
+
+ OFFlowStatsRequest request = sw.factory().buildFlowStatsRequest()
+ .setMatch(match)
+ .setTableId(tableId)
+ .setOutPort(ofPort)
+ .build();
+
+ synchronized (this) {
+ if (getFlowMissingXid() != NO_FLOW_MISSING_XID) {
+ log.debug("ofFlowStatsRequestFlowSend: previous FlowStatsRequestAll does not be processed yet,"
+ + " set no flow missing xid anyway, for {}",
+ sw.getStringId());
+ setFlowMissingXid(NO_FLOW_MISSING_XID);
+ }
+
+ sw.sendMsg(request);
+ }
+ }
+
+ private void calAndShortFlowsTaskInternal() {
+ deviceFlowTable.checkAndMoveLiveFlowAll();
+
+ deviceFlowTable.getShortFlows().forEach(fe -> {
+ ofFlowStatsRequestFlowSend(fe);
+ });
+ }
+
+ private class MidFlowsTask implements Runnable {
+ @Override
+ public void run() {
+ if (sw.getRole() == RoleState.MASTER) {
+ log.trace("MidFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
+
+ // skip collecting because CalAndShortFlowsTask collects entire flow stats from a given switch sw
+ if (callCountMidFlowsTask == ENTIRE_POLL_TIMES) {
+ callCountMidFlowsTask = MID_POLL_TIMES;
+ } else {
+ midFlowsTaskInternal();
+ callCountMidFlowsTask += MID_POLL_TIMES;
+ }
+ }
+ }
+ }
+
+ private void midFlowsTaskInternal() {
+ deviceFlowTable.getMidFlows().forEach(fe -> {
+ ofFlowStatsRequestFlowSend(fe);
+ });
+ }
+
+ private class LongFlowsTask implements Runnable {
+ @Override
+ public void run() {
+ if (sw.getRole() == RoleState.MASTER) {
+ log.trace("LongFlowsTask Collecting AdaptiveStats for {}", sw.getStringId());
+
+ // skip collecting because CalAndShortFlowsTask collects entire flow stats from a given switch sw
+ if (callCountLongFlowsTask == ENTIRE_POLL_TIMES) {
+ callCountLongFlowsTask = LONG_POLL_TIMES;
+ } else {
+ longFlowsTaskInternal();
+ callCountLongFlowsTask += LONG_POLL_TIMES;
+ }
+ }
+ }
+ }
+
+ private void longFlowsTaskInternal() {
+ deviceFlowTable.getLongFlows().forEach(fe -> {
+ ofFlowStatsRequestFlowSend(fe);
+ });
+ }
+
+ /**
+ * start adaptive flow statistic collection.
+ *
+ */
+ public synchronized void start() {
+ log.debug("Starting AdaptiveStats collection thread for {}", sw.getStringId());
+ callCountCalAndShortFlowsTask = 0;
+ callCountMidFlowsTask = 0;
+ callCountLongFlowsTask = 0;
+
+ isFirstTimeStart = true;
+
+ // Initially start polling quickly. Then drop down to configured value
+ calAndShortFlowsTask = new CalAndShortFlowsTask();
+ calAndShortFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ calAndShortFlowsTask,
+ 1,
+ calAndPollInterval,
+ TimeUnit.SECONDS);
+
+ midFlowsTask = new MidFlowsTask();
+ midFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ midFlowsTask,
+ 1,
+ midPollInterval,
+ TimeUnit.SECONDS);
+
+ longFlowsTask = new LongFlowsTask();
+ longFlowsThread = adaptiveFlowStatsScheduler.scheduleWithFixedDelay(
+ longFlowsTask,
+ 1,
+ longPollInterval,
+ TimeUnit.SECONDS);
+
+ log.info("Started");
+ }
+
+ /**
+ * stop adaptive flow statistic collection.
+ *
+ */
+ public synchronized void stop() {
+ log.debug("Stopping AdaptiveStats collection thread for {}", sw.getStringId());
+ if (calAndShortFlowsThread != null) {
+ calAndShortFlowsThread.cancel(true);
+ }
+ if (midFlowsThread != null) {
+ midFlowsThread.cancel(true);
+ }
+ if (longFlowsThread != null) {
+ longFlowsThread.cancel(true);
+ }
+
+ adaptiveFlowStatsScheduler.shutdownNow();
+
+ isFirstTimeStart = false;
+
+ log.info("Stopped");
+ }
+
+ /**
+ * add typed flow entry from flow rule into the internal flow table.
+ *
+ * @param flowRules the flow rules
+ *
+ */
+ public synchronized void addWithFlowRule(FlowRule... flowRules) {
+ for (FlowRule fr : flowRules) {
+ // First remove old entry unconditionally, if exist
+ deviceFlowTable.remove(fr);
+
+ // add new flow entry, we suppose IMMEDIATE_FLOW
+ TypedStoredFlowEntry newFlowEntry = new DefaultTypedFlowEntry(fr,
+ FlowLiveType.IMMEDIATE_FLOW);
+ deviceFlowTable.addWithCalAndSetFlowLiveType(newFlowEntry);
+ }
+ }
+
+ /**
+ * add or update typed flow entry from flow entry into the internal flow table.
+ *
+ * @param flowEntries the flow entries
+ *
+ */
+ public synchronized void addOrUpdateFlows(FlowEntry... flowEntries) {
+ for (FlowEntry fe : flowEntries) {
+ // check if this new rule is an update to an existing entry
+ TypedStoredFlowEntry stored = deviceFlowTable.getFlowEntry(fe);
+
+ if (stored != null) {
+ // duplicated flow entry is collected!, just skip
+ if (fe.bytes() == stored.bytes() && fe.packets() == stored.packets()
+ && fe.life() == stored.life()) {
+ log.debug("addOrUpdateFlows:, FlowId=" + Long.toHexString(fe.id().value())
+ + ",is DUPLICATED stats collection, just skip."
+ + " AdaptiveStats collection thread for {}",
+ sw.getStringId());
+
+ stored.setLastSeen();
+ continue;
+ } else if (fe.life() < stored.life()) {
+ // Invalid updates the stats values, i.e., bytes, packets, durations ...
+ log.debug("addOrUpdateFlows():" +
+ " Invalid Flow Update! The new life is SMALLER than the previous one, jus skip." +
+ " new flowId=" + Long.toHexString(fe.id().value()) +
+ ", old flowId=" + Long.toHexString(stored.id().value()) +
+ ", new bytes=" + fe.bytes() + ", old bytes=" + stored.bytes() +
+ ", new life=" + fe.life() + ", old life=" + stored.life() +
+ ", new lastSeen=" + fe.lastSeen() + ", old lastSeen=" + stored.lastSeen());
+ // go next
+ stored.setLastSeen();
+ continue;
+ }
+
+ // update now
+ stored.setLife(fe.life());
+ stored.setPackets(fe.packets());
+ stored.setBytes(fe.bytes());
+ stored.setLastSeen();
+ if (stored.state() == FlowEntry.FlowEntryState.PENDING_ADD) {
+ // flow is really RULE_ADDED
+ stored.setState(FlowEntry.FlowEntryState.ADDED);
+ }
+ // flow is RULE_UPDATED, skip adding and just updating flow live table
+ //deviceFlowTable.calAndSetFlowLiveType(stored);
+ continue;
+ }
+
+ // add new flow entry, we suppose IMMEDIATE_FLOW
+ TypedStoredFlowEntry newFlowEntry = new DefaultTypedFlowEntry(fe,
+ FlowLiveType.IMMEDIATE_FLOW);
+ deviceFlowTable.addWithCalAndSetFlowLiveType(newFlowEntry);
+ }
+ }
+
+ /**
+ * remove typed flow entry from the internal flow table.
+ *
+ * @param flowRules the flow entries
+ *
+ */
+ public synchronized void removeFlows(FlowRule... flowRules) {
+ for (FlowRule rule : flowRules) {
+ deviceFlowTable.remove(rule);
+ }
+ }
+
+ // same as removeFlows() function
+ /**
+ * remove typed flow entry from the internal flow table.
+ *
+ * @param flowRules the flow entries
+ *
+ */
+ public void flowRemoved(FlowRule... flowRules) {
+ removeFlows(flowRules);
+ }
+
+ // same as addOrUpdateFlows() function
+ /**
+ * add or update typed flow entry from flow entry into the internal flow table.
+ *
+ * @param flowEntries the flow entry list
+ *
+ */
+ public void pushFlowMetrics(List<FlowEntry> flowEntries) {
+ flowEntries.forEach(fe -> {
+ addOrUpdateFlows(fe);
+ });
+ }
+
+ /**
+ * returns flowMissingXid that indicates the execution of flowMissing process or not(NO_FLOW_MISSING_XID(-1)).
+ *
+ * @return xid of missing flow
+ */
+ public long getFlowMissingXid() {
+ return flowMissingXid;
+ }
+
+ /**
+ * set flowMissingXid, namely OFFlowStatsRequest match any ALL message Id.
+ *
+ * @param flowMissingXid the OFFlowStatsRequest message Id
+ *
+ */
+ public void setFlowMissingXid(long flowMissingXid) {
+ this.flowMissingXid = flowMissingXid;
+ }
+
+ private class InternalDeviceFlowTable {
+
+ private final Map<FlowId, Set<TypedStoredFlowEntry>>
+ flowEntries = Maps.newConcurrentMap();
+
+ private final Set<StoredFlowEntry> shortFlows = new HashSet<>();
+ private final Set<StoredFlowEntry> midFlows = new HashSet<>();
+ private final Set<StoredFlowEntry> longFlows = new HashSet<>();
+
+ // Assumed latency adjustment(default=500 millisecond) between FlowStatsRequest and Reply
+ private final long latencyFlowStatsRequestAndReplyMillis = 500;
+
+
+ // Statistics for table operation
+ private long addCount = 0, addWithSetFlowLiveTypeCount = 0;
+ private long removeCount = 0;
+
+ /**
+ * Resets all count values with zero.
+ *
+ */
+ public void resetAllCount() {
+ addCount = 0;
+ addWithSetFlowLiveTypeCount = 0;
+ removeCount = 0;
+ }
+
+ // get set of flow entries for the given flowId
+ private Set<TypedStoredFlowEntry> getFlowEntriesInternal(FlowId flowId) {
+ return flowEntries.computeIfAbsent(flowId, id -> Sets.newCopyOnWriteArraySet());
+ }
+
+ // get flow entry for the given flow rule
+ private TypedStoredFlowEntry getFlowEntryInternal(FlowRule rule) {
+ Set<TypedStoredFlowEntry> flowEntries = getFlowEntriesInternal(rule.id());
+ return flowEntries.stream()
+ .filter(entry -> Objects.equal(entry, rule))
+ .findAny()
+ .orElse(null);
+ }
+
+ // get the flow entries for all flows in flow table
+ private Set<TypedStoredFlowEntry> getFlowEntriesInternal() {
+ Set<TypedStoredFlowEntry> result = Sets.newHashSet();
+
+ flowEntries.values().forEach(result::addAll);
+ return result;
+ }
+
+ /**
+ * Gets the number of flow entry in flow table.
+ *
+ * @return the number of flow entry.
+ *
+ */
+ public long getFlowCount() {
+ return flowEntries.values().stream().mapToLong(Set::size).sum();
+ }
+
+ /**
+ * Gets the number of flow entry in flow table.
+ *
+ * @param rule the flow rule
+ * @return the typed flow entry.
+ *
+ */
+ public TypedStoredFlowEntry getFlowEntry(FlowRule rule) {
+ checkNotNull(rule);
+
+ return getFlowEntryInternal(rule);
+ }
+
+ /**
+ * Gets the all typed flow entries in flow table.
+ *
+ * @return the set of typed flow entry.
+ *
+ */
+ public Set<TypedStoredFlowEntry> getFlowEntries() {
+ return getFlowEntriesInternal();
+ }
+
+ /**
+ * Gets the short typed flow entries in flow table.
+ *
+ * @return the set of typed flow entry.
+ *
+ */
+ public Set<StoredFlowEntry> getShortFlows() {
+ return ImmutableSet.copyOf(shortFlows); //Sets.newHashSet(shortFlows);
+ }
+
+ /**
+ * Gets the mid typed flow entries in flow table.
+ *
+ * @return the set of typed flow entry.
+ *
+ */
+ public Set<StoredFlowEntry> getMidFlows() {
+ return ImmutableSet.copyOf(midFlows); //Sets.newHashSet(midFlows);
+ }
+
+ /**
+ * Gets the long typed flow entries in flow table.
+ *
+ * @return the set of typed flow entry.
+ *
+ */
+ public Set<StoredFlowEntry> getLongFlows() {
+ return ImmutableSet.copyOf(longFlows); //Sets.newHashSet(longFlows);
+ }
+
+ /**
+ * Add typed flow entry into table only.
+ *
+ * @param rule the flow rule
+ *
+ */
+ public synchronized void add(TypedStoredFlowEntry rule) {
+ checkNotNull(rule);
+
+ //rule have to be new DefaultTypedFlowEntry
+ boolean result = getFlowEntriesInternal(rule.id()).add(rule);
+
+ if (result) {
+ addCount++;
+ }
+ }
+
+ /**
+ * Calculates and set the flow live type at the first time,
+ * and then add it into a corresponding typed flow table.
+ *
+ * @param rule the flow rule
+ *
+ */
+ public void calAndSetFlowLiveType(TypedStoredFlowEntry rule) {
+ checkNotNull(rule);
+
+ calAndSetFlowLiveTypeInternal(rule);
+ }
+
+ /**
+ * Add the typed flow entry into table, and calculates and set the flow live type,
+ * and then add it into a corresponding typed flow table.
+ *
+ * @param rule the flow rule
+ *
+ */
+ public synchronized void addWithCalAndSetFlowLiveType(TypedStoredFlowEntry rule) {
+ checkNotNull(rule);
+
+ //rule have to be new DefaultTypedFlowEntry
+ boolean result = getFlowEntriesInternal(rule.id()).add(rule);
+ if (result) {
+ calAndSetFlowLiveTypeInternal(rule);
+ addWithSetFlowLiveTypeCount++;
+ } else {
+ log.debug("addWithCalAndSetFlowLiveType, FlowId=" + Long.toHexString(rule.id().value())
+ + " ADD Failed, cause it may already exists in table !!!,"
+ + " AdaptiveStats collection thread for {}",
+ sw.getStringId());
+ }
+ }
+
+ // In real, calculates and set the flow live type at the first time,
+ // and then add it into a corresponding typed flow table
+ private void calAndSetFlowLiveTypeInternal(TypedStoredFlowEntry rule) {
+ long life = rule.life();
+ FlowLiveType prevFlowLiveType = rule.flowLiveType();
+
+ if (life >= longPollInterval) {
+ rule.setFlowLiveType(FlowLiveType.LONG_FLOW);
+ longFlows.add(rule);
+ } else if (life >= midPollInterval) {
+ rule.setFlowLiveType(FlowLiveType.MID_FLOW);
+ midFlows.add(rule);
+ } else if (life >= calAndPollInterval) {
+ rule.setFlowLiveType(FlowLiveType.SHORT_FLOW);
+ shortFlows.add(rule);
+ } else if (life >= 0) {
+ rule.setFlowLiveType(FlowLiveType.IMMEDIATE_FLOW);
+ } else { // life < 0
+ rule.setFlowLiveType(FlowLiveType.UNKNOWN_FLOW);
+ }
+
+ if (rule.flowLiveType() != prevFlowLiveType) {
+ switch (prevFlowLiveType) {
+ // delete it from previous flow table
+ case SHORT_FLOW:
+ shortFlows.remove(rule);
+ break;
+ case MID_FLOW:
+ midFlows.remove(rule);
+ break;
+ case LONG_FLOW:
+ longFlows.remove(rule);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+
+ // check the flow live type based on current time, then set and add it into corresponding table
+ private boolean checkAndMoveLiveFlowInternal(TypedStoredFlowEntry fe, long cTime) {
+ long curTime = (cTime > 0 ? cTime : System.currentTimeMillis());
+ // For latency adjustment(default=500 millisecond) between FlowStatsRequest and Reply
+ long fromLastSeen = ((curTime - fe.lastSeen() + latencyFlowStatsRequestAndReplyMillis) / 1000);
+ // fe.life() unit is SECOND!
+ long liveTime = fe.life() + fromLastSeen;
+
+
+ switch (fe.flowLiveType()) {
+ case IMMEDIATE_FLOW:
+ if (liveTime >= longPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
+ longFlows.add(fe);
+ } else if (liveTime >= midPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.MID_FLOW);
+ midFlows.add(fe);
+ } else if (liveTime >= calAndPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.SHORT_FLOW);
+ shortFlows.add(fe);
+ }
+ break;
+ case SHORT_FLOW:
+ if (liveTime >= longPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
+ shortFlows.remove(fe);
+ longFlows.add(fe);
+ } else if (liveTime >= midPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.MID_FLOW);
+ shortFlows.remove(fe);
+ midFlows.add(fe);
+ }
+ break;
+ case MID_FLOW:
+ if (liveTime >= longPollInterval) {
+ fe.setFlowLiveType(FlowLiveType.LONG_FLOW);
+ midFlows.remove(fe);
+ longFlows.add(fe);
+ }
+ break;
+ case LONG_FLOW:
+ if (fromLastSeen > entirePollInterval) {
+ log.trace("checkAndMoveLiveFlowInternal, flow is already removed at switch.");
+ return false;
+ }
+ break;
+ case UNKNOWN_FLOW: // Unknown flow is an internal error flow type, just fall through
+ default :
+ // Error Unknown Live Type
+ log.error("checkAndMoveLiveFlowInternal, Unknown Live Type error!"
+ + "AdaptiveStats collection thread for {}",
+ sw.getStringId());
+ return false;
+ }
+
+ log.debug("checkAndMoveLiveFlowInternal, FlowId=" + Long.toHexString(fe.id().value())
+ + ", state=" + fe.state()
+ + ", After liveType=" + fe.flowLiveType()
+ + ", liveTime=" + liveTime
+ + ", life=" + fe.life()
+ + ", bytes=" + fe.bytes()
+ + ", packets=" + fe.packets()
+ + ", fromLastSeen=" + fromLastSeen
+ + ", priority=" + fe.priority()
+ + ", selector=" + fe.selector().criteria()
+ + ", treatment=" + fe.treatment()
+ + " AdaptiveStats collection thread for {}",
+ sw.getStringId());
+
+ return true;
+ }
+
+ /**
+ * Check and move live type for all type flow entries in table at every calAndPollInterval time.
+ *
+ */
+ public void checkAndMoveLiveFlowAll() {
+ Set<TypedStoredFlowEntry> typedFlowEntries = getFlowEntriesInternal();
+
+ long calCurTime = System.currentTimeMillis();
+ typedFlowEntries.forEach(fe -> {
+ if (!checkAndMoveLiveFlowInternal(fe, calCurTime)) {
+ remove(fe);
+ }
+ });
+
+ // print table counts for debug
+ if (log.isDebugEnabled()) {
+ synchronized (this) {
+ long totalFlowCount = getFlowCount();
+ long shortFlowCount = shortFlows.size();
+ long midFlowCount = midFlows.size();
+ long longFlowCount = longFlows.size();
+ long immediateFlowCount = totalFlowCount - shortFlowCount - midFlowCount - longFlowCount;
+ long calTotalCount = addCount + addWithSetFlowLiveTypeCount - removeCount;
+
+ log.debug("--------------------------------------------------------------------------- for {}",
+ sw.getStringId());
+ log.debug("checkAndMoveLiveFlowAll, Total Flow_Count=" + totalFlowCount
+ + ", add - remove_Count=" + calTotalCount
+ + ", IMMEDIATE_FLOW_Count=" + immediateFlowCount
+ + ", SHORT_FLOW_Count=" + shortFlowCount
+ + ", MID_FLOW_Count=" + midFlowCount
+ + ", LONG_FLOW_Count=" + longFlowCount
+ + ", add_Count=" + addCount
+ + ", addWithSetFlowLiveType_Count=" + addWithSetFlowLiveTypeCount
+ + ", remove_Count=" + removeCount
+ + " AdaptiveStats collection thread for {}", sw.getStringId());
+ log.debug("--------------------------------------------------------------------------- for {}",
+ sw.getStringId());
+ if (totalFlowCount != calTotalCount) {
+ log.error("checkAndMoveLiveFlowAll, Real total flow count and "
+ + "calculated total flow count do NOT match, something is wrong internally "
+ + "or check counter value bound is over!");
+ }
+ if (immediateFlowCount < 0) {
+ log.error("checkAndMoveLiveFlowAll, IMMEDIATE_FLOW count is negative, "
+ + "something is wrong internally "
+ + "or check counter value bound is over!");
+ }
+ }
+ }
+ log.trace("checkAndMoveLiveFlowAll, AdaptiveStats for {}", sw.getStringId());
+ }
+
+ /**
+ * Remove the typed flow entry from table.
+ *
+ * @param rule the flow rule
+ *
+ */
+ public synchronized void remove(FlowRule rule) {
+ checkNotNull(rule);
+
+ TypedStoredFlowEntry removeStore = getFlowEntryInternal(rule);
+ if (removeStore != null) {
+ removeLiveFlowsInternal((TypedStoredFlowEntry) removeStore);
+ boolean result = getFlowEntriesInternal(rule.id()).remove(removeStore);
+
+ if (result) {
+ removeCount++;
+ }
+ }
+ }
+
+ // Remove the typed flow entry from corresponding table
+ private void removeLiveFlowsInternal(TypedStoredFlowEntry fe) {
+ switch (fe.flowLiveType()) {
+ case IMMEDIATE_FLOW:
+ // do nothing
+ break;
+ case SHORT_FLOW:
+ shortFlows.remove(fe);
+ break;
+ case MID_FLOW:
+ midFlows.remove(fe);
+ break;
+ case LONG_FLOW:
+ longFlows.remove(fe);
+ break;
+ default: // error in Flow Live Type
+ log.error("removeLiveFlowsInternal, Unknown Live Type error!");
+ break;
+ }
+ }
+ }
+}
diff --git a/framework/src/onos/providers/openflow/group/pom.xml b/framework/src/onos/providers/openflow/group/pom.xml
index 049ccaff..c63a016d 100644
--- a/framework/src/onos/providers/openflow/group/pom.xml
+++ b/framework/src/onos/providers/openflow/group/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/meter/pom.xml b/framework/src/onos/providers/openflow/meter/pom.xml
index 55068cd7..46bcefcf 100644
--- a/framework/src/onos/providers/openflow/meter/pom.xml
+++ b/framework/src/onos/providers/openflow/meter/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/packet/pom.xml b/framework/src/onos/providers/openflow/packet/pom.xml
index cc2316c9..b8dbb689 100644
--- a/framework/src/onos/providers/openflow/packet/pom.xml
+++ b/framework/src/onos/providers/openflow/packet/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-of-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/openflow/pom.xml b/framework/src/onos/providers/openflow/pom.xml
index 1250af61..349168e1 100644
--- a/framework/src/onos/providers/openflow/pom.xml
+++ b/framework/src/onos/providers/openflow/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/ovsdb/app/pom.xml b/framework/src/onos/providers/ovsdb/app/pom.xml
index b615d124..9101c0f8 100644
--- a/framework/src/onos/providers/ovsdb/app/pom.xml
+++ b/framework/src/onos/providers/ovsdb/app/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/ovsdb/device/pom.xml b/framework/src/onos/providers/ovsdb/device/pom.xml
index 8f9b834b..f770d73f 100644
--- a/framework/src/onos/providers/ovsdb/device/pom.xml
+++ b/framework/src/onos/providers/ovsdb/device/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ovsdb-provider-device</artifactId>
diff --git a/framework/src/onos/providers/ovsdb/host/pom.xml b/framework/src/onos/providers/ovsdb/host/pom.xml
index f54a496b..3acc7a20 100644
--- a/framework/src/onos/providers/ovsdb/host/pom.xml
+++ b/framework/src/onos/providers/ovsdb/host/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ovsdb-provider-host</artifactId>
diff --git a/framework/src/onos/providers/ovsdb/pom.xml b/framework/src/onos/providers/ovsdb/pom.xml
index cce971d5..1256f1a2 100644
--- a/framework/src/onos/providers/ovsdb/pom.xml
+++ b/framework/src/onos/providers/ovsdb/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ovsdb-providers</artifactId>
diff --git a/framework/src/onos/providers/ovsdb/tunnel/pom.xml b/framework/src/onos/providers/ovsdb/tunnel/pom.xml
index 3eae2588..455b1747 100644
--- a/framework/src/onos/providers/ovsdb/tunnel/pom.xml
+++ b/framework/src/onos/providers/ovsdb/tunnel/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-ovsdb-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ovsdb-provider-tunnel</artifactId>
diff --git a/framework/src/onos/providers/pcep/app/pom.xml b/framework/src/onos/providers/pcep/app/pom.xml
index 35c1e9cf..62a87453 100644
--- a/framework/src/onos/providers/pcep/app/pom.xml
+++ b/framework/src/onos/providers/pcep/app/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/pcep/pom.xml b/framework/src/onos/providers/pcep/pom.xml
index b6a425bb..4cde516a 100644
--- a/framework/src/onos/providers/pcep/pom.xml
+++ b/framework/src/onos/providers/pcep/pom.xml
@@ -18,7 +18,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcep-providers</artifactId>
diff --git a/framework/src/onos/providers/pcep/topology/pom.xml b/framework/src/onos/providers/pcep/topology/pom.xml
index ff14b653..cb8e0034 100644
--- a/framework/src/onos/providers/pcep/topology/pom.xml
+++ b/framework/src/onos/providers/pcep/topology/pom.xml
@@ -18,7 +18,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcep-provider-topology</artifactId>
diff --git a/framework/src/onos/providers/pcep/tunnel/pom.xml b/framework/src/onos/providers/pcep/tunnel/pom.xml
index 2613c41c..af303f89 100644
--- a/framework/src/onos/providers/pcep/tunnel/pom.xml
+++ b/framework/src/onos/providers/pcep/tunnel/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-pcep-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>onos-pcep-provider-tunnel</artifactId>
diff --git a/framework/src/onos/providers/pom.xml b/framework/src/onos/providers/pom.xml
index 5665d324..5b6b6cc5 100644
--- a/framework/src/onos/providers/pom.xml
+++ b/framework/src/onos/providers/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/snmp/alarm/pom.xml b/framework/src/onos/providers/snmp/alarm/pom.xml
index f0a292e9..1ca18212 100644
--- a/framework/src/onos/providers/snmp/alarm/pom.xml
+++ b/framework/src/onos/providers/snmp/alarm/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-snmp-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/providers/snmp/pom.xml b/framework/src/onos/providers/snmp/pom.xml
index 21031d98..c9338f05 100644
--- a/framework/src/onos/providers/snmp/pom.xml
+++ b/framework/src/onos/providers/snmp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-providers</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/tools/build/envDefaults b/framework/src/onos/tools/build/envDefaults
index 34fcccb2..db54a73e 100644
--- a/framework/src/onos/tools/build/envDefaults
+++ b/framework/src/onos/tools/build/envDefaults
@@ -18,8 +18,8 @@ export PATH="$PATH:$ONOS_ROOT/tools/build"
export BUILD_NUMBER=${BUILD_NUMBER:-$(id -un)~$(date +'%Y/%m/%d@%H:%M')}
# ONOS Version and onos.tar.gz staging environment
-export ONOS_POM_VERSION="1.4.0-SNAPSHOT"
-export ONOS_VERSION=${ONOS_VERSION:-1.4.0.$BUILD_NUMBER}
+export ONOS_POM_VERSION="1.4.0-rc1"
+export ONOS_VERSION=${ONOS_VERSION:-1.4.0-rc1.$BUILD_NUMBER}
# ONOS production bits (onos.tar.gz, onos.zip, onos.deb, onos.rpm) staging environment
export ONOS_BITS=onos-${ONOS_VERSION%~*}
diff --git a/framework/src/onos/tools/package/archetypes/api/pom.xml b/framework/src/onos/tools/package/archetypes/api/pom.xml
index 8deaada9..0ad9b69b 100644
--- a/framework/src/onos/tools/package/archetypes/api/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/api/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-api-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/api/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/api/src/main/resources/archetype-resources/pom.xml
index a0e54f3f..89a4f464 100644
--- a/framework/src/onos/tools/package/archetypes/api/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/api/src/main/resources/archetype-resources/pom.xml
@@ -26,7 +26,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
</properties>
<dependencies>
diff --git a/framework/src/onos/tools/package/archetypes/bundle/pom.xml b/framework/src/onos/tools/package/archetypes/bundle/pom.xml
index 65b55b2b..0709acd5 100644
--- a/framework/src/onos/tools/package/archetypes/bundle/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/bundle/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-bundle-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/bundle/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/bundle/src/main/resources/archetype-resources/pom.xml
index 222e8b03..bf0f7ea1 100644
--- a/framework/src/onos/tools/package/archetypes/bundle/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/bundle/src/main/resources/archetype-resources/pom.xml
@@ -26,7 +26,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
<!-- Uncomment to generate ONOS app from this module.
<onos.app.name>org.foo.app</onos.app.name>
<onos.app.origin>Foo, Inc.</onos.app.origin>
diff --git a/framework/src/onos/tools/package/archetypes/cli/pom.xml b/framework/src/onos/tools/package/archetypes/cli/pom.xml
index a071eed1..b57a3138 100644
--- a/framework/src/onos/tools/package/archetypes/cli/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/cli/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-cli-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/cli/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/cli/src/main/resources/archetype-resources/pom.xml
index f4602692..b344cc59 100644
--- a/framework/src/onos/tools/package/archetypes/cli/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/cli/src/main/resources/archetype-resources/pom.xml
@@ -26,7 +26,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
</properties>
<dependencies>
diff --git a/framework/src/onos/tools/package/archetypes/pom.xml b/framework/src/onos/tools/package/archetypes/pom.xml
index 12a23229..8a0be1f5 100644
--- a/framework/src/onos/tools/package/archetypes/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<packaging>pom</packaging>
<description>ONOS archetypes project</description>
diff --git a/framework/src/onos/tools/package/archetypes/ui/pom.xml b/framework/src/onos/tools/package/archetypes/ui/pom.xml
index 9bebe9da..c4ed2c01 100644
--- a/framework/src/onos/tools/package/archetypes/ui/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/ui/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-ui-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/ui/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/ui/src/main/resources/archetype-resources/pom.xml
index d67c181a..c067ee51 100644
--- a/framework/src/onos/tools/package/archetypes/ui/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/ui/src/main/resources/archetype-resources/pom.xml
@@ -26,7 +26,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
<!-- Uncomment to generate ONOS app from this module.
<onos.app.name>org.foo.app</onos.app.name>
<onos.app.origin>Foo, Inc.</onos.app.origin>
diff --git a/framework/src/onos/tools/package/archetypes/uitab/pom.xml b/framework/src/onos/tools/package/archetypes/uitab/pom.xml
index cb18f1f3..e82c96ff 100644
--- a/framework/src/onos/tools/package/archetypes/uitab/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/uitab/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-uitab-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/uitab/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/uitab/src/main/resources/archetype-resources/pom.xml
index 05a62b27..3dbd873e 100644
--- a/framework/src/onos/tools/package/archetypes/uitab/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/uitab/src/main/resources/archetype-resources/pom.xml
@@ -27,7 +27,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
<!-- Uncomment to generate ONOS app from this module.
<onos.app.name>org.foo.app</onos.app.name>
<onos.app.origin>Foo, Inc.</onos.app.origin>
diff --git a/framework/src/onos/tools/package/archetypes/uitopo/pom.xml b/framework/src/onos/tools/package/archetypes/uitopo/pom.xml
index 6ed7c871..b03c325d 100644
--- a/framework/src/onos/tools/package/archetypes/uitopo/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/uitopo/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-archetypes</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<artifactId>onos-uitopo-archetype</artifactId>
diff --git a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/pom.xml b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/pom.xml
index f0688ec2..2c97cf48 100644
--- a/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/pom.xml
+++ b/framework/src/onos/tools/package/archetypes/uitopo/src/main/resources/archetype-resources/pom.xml
@@ -27,7 +27,7 @@
<url>http://onosproject.org</url>
<properties>
- <onos.version>1.4.0-SNAPSHOT</onos.version>
+ <onos.version>1.4.0-rc1</onos.version>
<!-- Uncomment to generate ONOS app from this module.
<onos.app.name>org.foo.app</onos.app.name>
<onos.app.origin>Foo, Inc.</onos.app.origin>
diff --git a/framework/src/onos/tools/package/branding/pom.xml b/framework/src/onos/tools/package/branding/pom.xml
index be9c4165..77ff7cde 100644
--- a/framework/src/onos/tools/package/branding/pom.xml
+++ b/framework/src/onos/tools/package/branding/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/tools/test/bin/onos-archetypes-test b/framework/src/onos/tools/test/bin/onos-archetypes-test
index 331c4332..e8470b9a 100755
--- a/framework/src/onos/tools/test/bin/onos-archetypes-test
+++ b/framework/src/onos/tools/test/bin/onos-archetypes-test
@@ -19,7 +19,7 @@ _EOF_
set -e
export AROOT=/tmp/foo
-export ARCHETYPE_OPTS="-DarchetypeGroupId=org.onosproject -DarchetypeVersion=1.4.0-SNAPSHOT"
+export ARCHETYPE_OPTS="-DarchetypeGroupId=org.onosproject -DarchetypeVersion=1.4.0-rc1"
mkdir -p $AROOT
for an in api bundle cli ui; do
diff --git a/framework/src/onos/tools/test/bin/stc b/framework/src/onos/tools/test/bin/stc
index 60a1720e..c4dde4e7 100755
--- a/framework/src/onos/tools/test/bin/stc
+++ b/framework/src/onos/tools/test/bin/stc
@@ -3,7 +3,7 @@
# System Test Coordinator
#-------------------------------------------------------------------------------
-VER=1.4.0-SNAPSHOT
+VER=1.4.0-rc1
JAR=~/.m2/repository/org/onosproject/onlab-stc/$VER/onlab-stc-$VER.jar
SCENARIOS=$ONOS_ROOT/tools/test/scenarios
diff --git a/framework/src/onos/tools/test/topos/onos.py b/framework/src/onos/tools/test/topos/onos.py
index f9d4ba23..b77a4975 100755
--- a/framework/src/onos/tools/test/topos/onos.py
+++ b/framework/src/onos/tools/test/topos/onos.py
@@ -62,7 +62,7 @@ class ONOS( Controller ):
def start( self ):
if self.inNamespace:
- instanceOpts = ( '-furl mvn:org.onosproject/onos-features/1.4.0-SNAPSHOT/xml/features '
+ instanceOpts = ( '-furl mvn:org.onosproject/onos-features/1.4.0-rc1/xml/features '
'-s 8101' )
if self.ip is not None:
instanceOpts += (' -a %s' % self.IP() )
diff --git a/framework/src/onos/utils/catalyst/pom.xml b/framework/src/onos/utils/catalyst/pom.xml
index a4fc7aa3..8a504bbd 100644
--- a/framework/src/onos/utils/catalyst/pom.xml
+++ b/framework/src/onos/utils/catalyst/pom.xml
@@ -5,7 +5,7 @@
<parent>
<artifactId>onlab-utils</artifactId>
<groupId>org.onosproject</groupId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/framework/src/onos/utils/jdvue/bin/jdvue b/framework/src/onos/utils/jdvue/bin/jdvue
index 3dda5969..db9d164b 100755
--- a/framework/src/onos/utils/jdvue/bin/jdvue
+++ b/framework/src/onos/utils/jdvue/bin/jdvue
@@ -8,7 +8,7 @@
JDVUE_ROOT=${JDVUE_ROOT:-$(dirname $0)/..}
cd $JDVUE_ROOT
-VER=1.4.0-SNAPSHOT
+VER=1.4.0-rc1
JAR=$PWD/target/jdvue-${VER}.jar # start with the dev jar first
cd - >/dev/null
diff --git a/framework/src/onos/utils/jdvue/pom.xml b/framework/src/onos/utils/jdvue/pom.xml
index d1501027..777eba3d 100644
--- a/framework/src/onos/utils/jdvue/pom.xml
+++ b/framework/src/onos/utils/jdvue/pom.xml
@@ -25,7 +25,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/jnc/pom.xml b/framework/src/onos/utils/jnc/pom.xml
index 6d0f8343..3fd83b3d 100644
--- a/framework/src/onos/utils/jnc/pom.xml
+++ b/framework/src/onos/utils/jnc/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/junit/pom.xml b/framework/src/onos/utils/junit/pom.xml
index c9787a41..da99f46d 100644
--- a/framework/src/onos/utils/junit/pom.xml
+++ b/framework/src/onos/utils/junit/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/misc/pom.xml b/framework/src/onos/utils/misc/pom.xml
index 2e721135..39171e95 100644
--- a/framework/src/onos/utils/misc/pom.xml
+++ b/framework/src/onos/utils/misc/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/netty/pom.xml b/framework/src/onos/utils/netty/pom.xml
index 5ce4838b..7bae10aa 100644
--- a/framework/src/onos/utils/netty/pom.xml
+++ b/framework/src/onos/utils/netty/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/nio/pom.xml b/framework/src/onos/utils/nio/pom.xml
index 83957669..b92c9b7b 100644
--- a/framework/src/onos/utils/nio/pom.xml
+++ b/framework/src/onos/utils/nio/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/osgi/pom.xml b/framework/src/onos/utils/osgi/pom.xml
index cf79312d..25690cab 100644
--- a/framework/src/onos/utils/osgi/pom.xml
+++ b/framework/src/onos/utils/osgi/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/pom.xml b/framework/src/onos/utils/pom.xml
index 2129c85d..d3cd5a5b 100644
--- a/framework/src/onos/utils/pom.xml
+++ b/framework/src/onos/utils/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/rest/pom.xml b/framework/src/onos/utils/rest/pom.xml
index c9a7df75..80a2e32e 100644
--- a/framework/src/onos/utils/rest/pom.xml
+++ b/framework/src/onos/utils/rest/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/stc/bin/stc b/framework/src/onos/utils/stc/bin/stc
index 241822c5..541ddcbb 100755
--- a/framework/src/onos/utils/stc/bin/stc
+++ b/framework/src/onos/utils/stc/bin/stc
@@ -5,7 +5,7 @@
STC_ROOT=${STC_ROOT:-$(dirname $0)/..}
cd $STC_ROOT
-VER=1.4.0-SNAPSHOT
+VER=1.4.0-rc1
PATH=$PWD/bin:$PATH
diff --git a/framework/src/onos/utils/stc/pom.xml b/framework/src/onos/utils/stc/pom.xml
index a71dcfe3..568aa74c 100644
--- a/framework/src/onos/utils/stc/pom.xml
+++ b/framework/src/onos/utils/stc/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/utils/thirdparty/pom.xml b/framework/src/onos/utils/thirdparty/pom.xml
index bb5e3e06..d383bd60 100644
--- a/framework/src/onos/utils/thirdparty/pom.xml
+++ b/framework/src/onos/utils/thirdparty/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onlab-utils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/web/api/pom.xml b/framework/src/onos/web/api/pom.xml
index 99aeab22..6d4ab985 100644
--- a/framework/src/onos/web/api/pom.xml
+++ b/framework/src/onos/web/api/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-web</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/web/gui/pom.xml b/framework/src/onos/web/gui/pom.xml
index 6b8480ad..b73b762d 100644
--- a/framework/src/onos/web/gui/pom.xml
+++ b/framework/src/onos/web/gui/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos-web</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/framework/src/onos/web/pom.xml b/framework/src/onos/web/pom.xml
index d7b6fe05..72bee283 100644
--- a/framework/src/onos/web/pom.xml
+++ b/framework/src/onos/web/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.onosproject</groupId>
<artifactId>onos</artifactId>
- <version>1.4.0-SNAPSHOT</version>
+ <version>1.4.0-rc1</version>
<relativePath>../pom.xml</relativePath>
</parent>