Moving Source from connect point to HostId in MulticastHandling

Change-Id: Ie8f678e150b7ee388680b8d8f27df0bce60ec01f
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
index 629cb2a..7650649 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
@@ -21,13 +21,8 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
 import org.onosproject.mcast.api.MulticastRouteService;
-import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.HostId;
 
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 /**
  * Installs a source, multicast group flow.
  */
@@ -52,8 +47,8 @@
     String gAddr = null;
 
     @Option(name = "-srcs", aliases = "--sources",
-            description = "Ingress port of:XXXXXXXXXX/XX",
-            valueToShowInHelp = "of:0000000000000001/1",
+            description = "Host sink format: MAC/VLAN",
+            valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
     String[] sources = null;
 
@@ -62,7 +57,7 @@
             description = "Host sink format: MAC/VLAN",
             valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
-    String[] hosts = null;
+    String[] sinks = null;
 
     @Override
     protected void execute() {
@@ -78,16 +73,14 @@
         mcastRouteManager.add(mRoute);
 
         if (sources != null) {
-            Set<ConnectPoint> sourcesSet = Arrays.stream(sources)
-                    .map(ConnectPoint::deviceConnectPoint)
-                    .collect(Collectors.toSet());
-            mcastRouteManager.addSources(mRoute, sourcesSet);
+            for (String hostId : sources) {
+                mcastRouteManager.addSource(mRoute, HostId.hostId(hostId));
+            }
         }
 
-        if (hosts != null) {
-            for (String hostId : hosts) {
+        if (sinks != null) {
+            for (String hostId : sinks) {
                 mcastRouteManager.addSink(mRoute, HostId.hostId(hostId));
-
             }
         }
         printMcastRoute(mRoute);
@@ -96,7 +89,7 @@
     private void printMcastRoute(McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(FORMAT_MAPPING, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 
 }
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
index 24ee11b..dbf2ca6 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
@@ -89,7 +89,7 @@
 
     private void printRoute(MulticastRouteService mcastService, McastRoute route) {
         Map<HostId, Set<ConnectPoint>> sinks = mcastService.routeData(route).sinks();
-        Set<ConnectPoint> sources = mcastService.sources(route);
+        Map<HostId, Set<ConnectPoint>> sources = mcastService.routeData(route).sources();
         String srcIp = "*";
         if (route.source().isPresent()) {
             srcIp = route.source().get().toString();
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
similarity index 89%
rename from apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java
rename to apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
index ca5959d..524fcb2 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
@@ -26,9 +26,9 @@
 /**
  * Deletes a multicast route.
  */
-@Command(scope = "onos", name = "mcast-host-delete",
-        description = "Delete a multicast route flow")
-public class McastHostDeleteCommand extends AbstractShellCommand {
+@Command(scope = "onos", name = "mcast-sink-delete",
+        description = "Delete a sink from multicast route flow. If no sin is specified removes the whole route.")
+public class McastSinkDeleteCommand extends AbstractShellCommand {
 
     // Delete format for group line
     private static final String D_FORMAT_MAPPING = "Deleted the mcast route: " +
@@ -50,7 +50,7 @@
             required = true, multiValued = false)
     String gAddr = null;
 
-    @Option(name = "-h", aliases = "--host",
+    @Option(name = "-s", aliases = "--sinks",
             description = "Host sink format: MAC/VLAN",
             valueToShowInHelp = "00:00:00:00:00:00/None")
     String host = null;
@@ -70,7 +70,7 @@
             sAddrIp = IpAddress.valueOf(sAddr);
         }
         McastRoute mRoute = new McastRoute(sAddrIp, IpAddress.valueOf(gAddr),
-                                           McastRoute.Type.STATIC);
+                McastRoute.Type.STATIC);
         // If the user provides only sAddr and gAddr, we have to remove the route
         if (host == null || host.isEmpty()) {
             mcastRouteManager.remove(mRoute);
@@ -93,6 +93,6 @@
     private void printMcastRoute(String format, McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(format, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 }
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
index 0a6080c..d1f646f 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
@@ -21,11 +21,7 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
 import org.onosproject.mcast.api.MulticastRouteService;
-import org.onosproject.net.ConnectPoint;
-
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
+import org.onosproject.net.HostId;
 
 /**
  * Deletes a multicast route.
@@ -55,8 +51,8 @@
     String gAddr = null;
 
     @Option(name = "-src", aliases = "--connectPoint",
-            description = "Source port of:XXXXXXXXXX/XX",
-            valueToShowInHelp = "of:0000000000000001/1",
+            description = "Host sink format: MAC/VLAN",
+            valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
     String[] sourceList = null;
 
@@ -76,7 +72,7 @@
             sAddrIp = IpAddress.valueOf(sAddr);
         }
         McastRoute mRoute = new McastRoute(sAddrIp, IpAddress.valueOf(gAddr),
-                                           McastRoute.Type.STATIC);
+                McastRoute.Type.STATIC);
         // No specific connect points, we have to remove everything
         if (sourceList == null) {
             mcastRouteManager.remove(mRoute);
@@ -88,16 +84,16 @@
             print("Route is not present, store it first");
             return;
         }
-        Set<ConnectPoint> sourcesSet = Arrays.stream(sourceList)
-                .map(ConnectPoint::deviceConnectPoint)
-                .collect(Collectors.toSet());
-        mcastRouteManager.removeSources(mRoute, sourcesSet);
+        for (String hostId : sourceList) {
+            mcastRouteManager.removeSource(mRoute, HostId.hostId(hostId));
+
+        }
         printMcastRoute(U_FORMAT_MAPPING, mRoute);
     }
 
     private void printMcastRoute(String format, McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(format, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 }
diff --git a/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 1525938..7bf0fcb 100644
--- a/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -21,7 +21,7 @@
             <action class="org.onosproject.mcast.cli.McastHostJoinCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
-                <entry key="-srcs" value-ref="connectpointCompleter"/>
+                <entry key="-srcs" value-ref="hostIdCompleter"/>
                 <entry key="-sinks" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
@@ -32,18 +32,18 @@
             </optional-completers>
         </command>
         <command>
-            <action class="org.onosproject.mcast.cli.McastHostDeleteCommand"/>
+            <action class="org.onosproject.mcast.cli.McastSinkDeleteCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
                 <entry key="-cps" value-ref="connectpointCompleter"/>
-                <entry key="-h" value-ref="hostIdCompleter"/>
+                <entry key="-s" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
         <command>
             <action class="org.onosproject.mcast.cli.McastSourceDeleteCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
-                <entry key="-src" value-ref="connectpointCompleter"/>
+                <entry key="-src" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
         <command>