CORD-1180 Collection of fixes for hash-group buckets. Required the following changes:
	  Next-objectives that edited groups are now queued in the FlowObjectiveManager instead of the driver.
	  During linkup immediately checking for previous portups that should be added to a hash group.
	  A final retry 30 secs later to catch all ports that should be part of the same hash group.

Change-Id: I7ef450149d685890ca47932b8e559a0c11dc5ab4
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2GroupHandler.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2GroupHandler.java
index aaca495..6a03ee6 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2GroupHandler.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2GroupHandler.java
@@ -984,7 +984,8 @@
      * @param nextObjective the objective to process.
      */
     protected void processPwNextObjective(NextObjective nextObjective) {
-        log.warn("Pseudo wire extensions are not support for the OFDPA 2.0 {}", nextObjective.id());
+        log.warn("Pseudo wire extensions are not supported in OFDPA 2.0 {}",
+                 nextObjective.id());
     }
 
     //////////////////////////////////////
@@ -1049,6 +1050,9 @@
             objectiveToAdd = builder.addToExisting(context);
         } else {
             // buckets to add are already there - nothing to do
+            log.debug("buckets already exist {} in next: {} ..ignoring bucket add",
+                      duplicateBuckets, nextObjective.id());
+            pass(nextObjective);
             return;
         }
 
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
index 1abe86c..9800260 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/Ofdpa2Pipeline.java
@@ -283,13 +283,13 @@
                          nextObjective.id(), deviceId);
                 return;
             }
-            log.debug("Processing NextObjective id{} in dev{} - add group",
+            log.debug("Processing NextObjective id {} in dev {} - add group",
                       nextObjective.id(), deviceId);
             groupHandler.addGroup(nextObjective);
             break;
         case ADD_TO_EXISTING:
             if (nextGroup != null) {
-                log.debug("Processing NextObjective id{} in dev{} - add bucket",
+                log.debug("Processing NextObjective id {} in dev {} - add bucket",
                           nextObjective.id(), deviceId);
                 groupHandler.addBucketToGroup(nextObjective, nextGroup);
             } else {
@@ -313,7 +313,7 @@
                          nextObjective.id(), deviceId);
                 return;
             }
-            log.debug("Processing NextObjective id{}  in dev{} - remove group",
+            log.debug("Processing NextObjective id {}  in dev {} - remove group",
                       nextObjective.id(), deviceId);
             groupHandler.removeGroup(nextObjective, nextGroup);
             break;
@@ -323,7 +323,7 @@
                          nextObjective.id(), deviceId);
                 return;
             }
-            log.debug("Processing NextObjective id{} in dev{} - remove bucket",
+            log.debug("Processing NextObjective id {} in dev {} - remove bucket",
                       nextObjective.id(), deviceId);
             groupHandler.removeBucketFromGroup(nextObjective, nextGroup);
             break;
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
index b0e3d9f..4a6d7d9 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/OvsOfdpa2Pipeline.java
@@ -20,11 +20,7 @@
 
 /**
  * Driver for software switch emulation of the OFDPA pipeline.
- * The software switch is the OVS OF 1.3 switch. Unfortunately the OVS switch
- * does not handle vlan tags and mpls labels simultaneously, which requires us
- * to do some workarounds in the driver. This driver is meant for the use of
- * the cpqd switch when MPLS is required. As a result this driver works only
- * on incoming untagged packets.
+ * The software switch is the OVS OF 1.3 switch (version 2.5 or later).
  */
 public class OvsOfdpa2Pipeline extends CpqdOfdpa2Pipeline {