Changes include:
      bug fix for host IP and MAC flows not being generated sometimes in multi-controller scenarios
      bug fix for filtering objectives not being sent sometimes when ports become available later
      npe fixes in ofdpa driver for cases where selectors or treatments may not be available
      new cli command to manually trigger routing and rule population
      portstats option on cli to display only those ports with non-zero stats
      group cli command tab completion displays choices in lower case (similar to flows)
      segment routing cli commands now start with sr-

Change-Id: Idcd641882d180acbd304e5560ed3483b5a943f96
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
index f19b314..14694a9 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/PolicyAddCommand.java
@@ -26,7 +26,7 @@
 /**
  * Command to add a new policy.
  */
-@Command(scope = "onos", name = "srpolicy-add",
+@Command(scope = "onos", name = "sr-policy-add",
         description = "Create a new policy")
 public class PolicyAddCommand extends AbstractShellCommand {
 
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
index 57199d2..e0843d0 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/PolicyListCommand.java
@@ -24,7 +24,7 @@
 /**
  * Command to show the list of policies.
  */
-@Command(scope = "onos", name = "srpolicy-list",
+@Command(scope = "onos", name = "sr-policy-list",
         description = "Lists all policies")
 public class PolicyListCommand extends AbstractShellCommand {
 
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
index 31c2441..8671e9d 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/PolicyRemoveCommand.java
@@ -26,7 +26,7 @@
 /**
  * Command to remove a policy.
  */
-@Command(scope = "onos", name = "srpolicy-remove",
+@Command(scope = "onos", name = "sr-policy-remove",
         description = "Remove a policy")
 public class PolicyRemoveCommand extends AbstractShellCommand {
 
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java
new file mode 100644
index 0000000..3c7d782
--- /dev/null
+++ b/src/main/java/org/onosproject/segmentrouting/cli/RerouteNetworkCommand.java
@@ -0,0 +1,23 @@
+package org.onosproject.segmentrouting.cli;
+
+
+import org.apache.karaf.shell.commands.Command;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.segmentrouting.SegmentRoutingService;
+
+/**
+ * Command to manually trigger routing and rule-population in the network.
+ *
+ */
+@Command(scope = "onos", name = "sr-reroute-network",
+        description = "Repopulate routing rules given current network state")
+public class RerouteNetworkCommand extends AbstractShellCommand {
+
+    @Override
+    protected void execute() {
+        SegmentRoutingService srService =
+                AbstractShellCommand.get(SegmentRoutingService.class);
+        srService.rerouteNetwork();
+    }
+
+}
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
index c95e6af..4a36ebd 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/TunnelAddCommand.java
@@ -31,7 +31,7 @@
 /**
  * Command to add a new tunnel.
  */
-@Command(scope = "onos", name = "srtunnel-add",
+@Command(scope = "onos", name = "sr-tunnel-add",
         description = "Create a new tunnel")
 public class TunnelAddCommand extends AbstractShellCommand {
 
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
index a7e1a2a..1395509 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/TunnelListCommand.java
@@ -23,7 +23,7 @@
 /**
  * Command to show the list of tunnels.
  */
-@Command(scope = "onos", name = "srtunnel-list",
+@Command(scope = "onos", name = "sr-tunnel-list",
         description = "Lists all tunnels")
 public class TunnelListCommand extends AbstractShellCommand {
 
diff --git a/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java b/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
index 4acf444..bbc9a6b 100644
--- a/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
+++ b/src/main/java/org/onosproject/segmentrouting/cli/TunnelRemoveCommand.java
@@ -28,7 +28,7 @@
 /**
  * Command to remove a tunnel.
  */
-@Command(scope = "onos", name = "srtunnel-remove",
+@Command(scope = "onos", name = "sr-tunnel-remove",
         description = "Remove a tunnel")
 public class TunnelRemoveCommand extends AbstractShellCommand {