Move multicast CLI commands into the core with the core mcast system.
Change-Id: If442803cf530cfeb949e7fbce34f74db082f30c1
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/package-info.java b/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/package-info.java
deleted file mode 100644
index bff76fc..0000000
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/package-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Sample Multicast forwarding framework using intents.
- */
-package org.onosproject.mfwd.cli;
-
diff --git a/apps/mfwd/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/mfwd/src/main/resources/OSGI-INF/blueprint/shell-config.xml
deleted file mode 100644
index 966cb4f..0000000
--- a/apps/mfwd/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
- ~ Copyright 2014 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.
- -->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
- <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
- <command>
- <action class="org.onosproject.mfwd.cli.McastJoinCommand"/>
- </command>
- <command>
- <action class="org.onosproject.mfwd.cli.McastDeleteCommand"/>
- </command>
- <command>
- <action class="org.onosproject.mfwd.cli.McastShowCommand"/>
- </command>
- </command-bundle>
-
-</blueprint>
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastDeleteCommand.java b/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
similarity index 80%
rename from apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastDeleteCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
index 5ef4dce..53c4888 100644
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastDeleteCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/McastDeleteCommand.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2015 Open Networking Laboratory
+ * Copyright 2016 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.
@@ -13,14 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.mfwd.cli;
+package org.onosproject.cli.net;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.onlab.packet.IpAddress;
import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.mfwd.impl.McastForwarding;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.mcast.McastRoute;
import org.onosproject.net.mcast.MulticastRouteService;
@@ -32,9 +30,6 @@
description = "Delete a multicast route flow")
public class McastDeleteCommand extends AbstractShellCommand {
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- MulticastRouteService mcastRouteManager = AbstractShellCommand.get(MulticastRouteService.class);
-
@Argument(index = 0, name = "sAddr",
description = "IP Address of the multicast source. '*' can be used for any source (*, G) entry",
required = true, multiValued = false)
@@ -53,8 +48,10 @@
@Override
protected void execute() {
+ MulticastRouteService mcastRouteManager = get(MulticastRouteService.class);
- McastRoute mRoute = McastForwarding.createStaticRoute(sAddr, gAddr);
+ McastRoute mRoute = new McastRoute(IpAddress.valueOf(sAddr),
+ IpAddress.valueOf(gAddr), McastRoute.Type.STATIC);
if (egressList == null) {
mcastRouteManager.remove(mRoute);
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastJoinCommand.java b/cli/src/main/java/org/onosproject/cli/net/McastJoinCommand.java
similarity index 67%
rename from apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastJoinCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/McastJoinCommand.java
index 707dbf0..55050ed 100644
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastJoinCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/McastJoinCommand.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2016 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.
@@ -13,14 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.mfwd.cli;
+package org.onosproject.cli.net;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.onlab.packet.IpAddress;
import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.mfwd.impl.McastForwarding;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.mcast.McastRoute;
import org.onosproject.net.mcast.MulticastRouteService;
@@ -32,9 +30,6 @@
description = "Installs a source, multicast group flow")
public class McastJoinCommand extends AbstractShellCommand {
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- MulticastRouteService mcastRouteManager = AbstractShellCommand.get(MulticastRouteService.class);
-
@Argument(index = 0, name = "sAddr",
description = "IP Address of the multicast source. '*' can be used for any source (*, G) entry",
required = true, multiValued = false)
@@ -57,19 +52,26 @@
@Override
protected void execute() {
+ MulticastRouteService mcastRouteManager = get(MulticastRouteService.class);
- McastRoute mRoute = McastForwarding.createStaticRoute(sAddr, gAddr);
+ //McastRoute mRoute = McastForwarding.createStaticRoute(sAddr, gAddr);
+ McastRoute mRoute = new McastRoute(IpAddress.valueOf(sAddr),
+ IpAddress.valueOf(gAddr), McastRoute.Type.STATIC);
mcastRouteManager.add(mRoute);
- ConnectPoint ingress = ConnectPoint.deviceConnectPoint(ingressPort);
- mcastRouteManager.addSource(mRoute, ingress);
-
- for (String egCP : ports) {
- log.debug("Egress port provided: " + egCP);
- ConnectPoint egress = ConnectPoint.deviceConnectPoint(egCP);
- mcastRouteManager.addSink(mRoute, egress);
-
+ if (ingressPort != null) {
+ ConnectPoint ingress = ConnectPoint.deviceConnectPoint(ingressPort);
+ mcastRouteManager.addSource(mRoute, ingress);
}
- print("Added the mcast route");
+
+ if (ports != null) {
+ for (String egCP : ports) {
+ log.debug("Egress port provided: " + egCP);
+ ConnectPoint egress = ConnectPoint.deviceConnectPoint(egCP);
+ mcastRouteManager.addSink(mRoute, egress);
+
+ }
+ }
+ print("Added the mcast route: %s", mRoute);
}
}
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastShowCommand.java b/cli/src/main/java/org/onosproject/cli/net/McastShowCommand.java
similarity index 61%
rename from apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastShowCommand.java
rename to cli/src/main/java/org/onosproject/cli/net/McastShowCommand.java
index 1d3f850..2b9a56a 100644
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/cli/McastShowCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/McastShowCommand.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2015 Open Networking Laboratory
+ * Copyright 2016 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.
@@ -13,17 +13,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.mfwd.cli;
+package org.onosproject.cli.net;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.karaf.shell.commands.Command;
-
import org.onosproject.cli.AbstractShellCommand;
-
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.mcast.McastRoute;
import org.onosproject.net.mcast.MulticastRouteService;
-import org.slf4j.Logger;
-import static org.slf4j.LoggerFactory.getLogger;
+
+import java.util.Set;
/**
* Displays the source, multicast group flows entries.
@@ -31,15 +29,20 @@
@Command(scope = "onos", name = "mcast-show", description = "Displays the source, multicast group flows")
public class McastShowCommand extends AbstractShellCommand {
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- MulticastRouteService mcastRouteManager = AbstractShellCommand.get(MulticastRouteService.class);
-
- private final Logger log = getLogger(getClass());
- private static final String MCAST_GROUP = "mcastgroup";
+ private static final String FORMAT = "route=%s, source=%s, sinks=%s";
@Override
protected void execute() {
- //TODO
+ MulticastRouteService mcastService = get(MulticastRouteService.class);
+
+ Set<McastRoute> routes = mcastService.getRoutes();
+
+ for (McastRoute route : routes) {
+ Set<ConnectPoint> sinks = mcastService.fetchSinks(route);
+ ConnectPoint source = mcastService.fetchSource(route);
+
+ print(FORMAT, route, source, sinks);
+ }
}
}
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 2c75eff..6d5b839 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -93,6 +93,16 @@
</command>
<command>
+ <action class="org.onosproject.cli.net.McastShowCommand"/>
+ </command>
+ <command>
+ <action class="org.onosproject.cli.net.McastJoinCommand"/>
+ </command>
+ <command>
+ <action class="org.onosproject.cli.net.McastDeleteCommand"/>
+ </command>
+
+ <command>
<action class="org.onosproject.cli.net.DriversListCommand"/>
<completers>
<ref component-id="driverNameCompleter"/>
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 9d8a0b2..ea37c43 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.store.serializers;
+import com.esotericsoftware.kryo.serializers.JavaSerializer;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -251,7 +252,7 @@
.register(HashMap.class)
.register(ConcurrentHashMap.class)
.register(CopyOnWriteArraySet.class)
- .register(Sets.newConcurrentHashSet().getClass())
+ .register(new JavaSerializer(), Sets.newConcurrentHashSet().getClass())
.register(ArrayList.class,
LinkedList.class,
HashSet.class,
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/mcast/impl/DistributedMcastStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/mcast/impl/DistributedMcastStore.java
index 60510fc..5af5266 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/mcast/impl/DistributedMcastStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/mcast/impl/DistributedMcastStore.java
@@ -62,7 +62,7 @@
McastRoute.Type.class,
ConnectPoint.class
).build()))
- .withRelaxedReadConsistency()
+ //.withRelaxedReadConsistency()
.build();
mcastRoutes = mcastRib.asJavaMap();