Add support for P4Runtime clone sessions via Group API

Clone sessions can now be created by defining groups with new type CLONE

The PI framework has been refactored to abstract commonality between
multicast groups and clone sessions as both are managed as part of the
P4Runtime packet replication engine (PRE).

Change-Id: I2f23c629b7de1931d5cab96ec76aef26130ce418
diff --git a/core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslationStore.java b/core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslationStore.java
similarity index 78%
rename from core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslationStore.java
rename to core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslationStore.java
index f961d84..60ef15c 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslationStore.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslationStore.java
@@ -18,13 +18,13 @@
 
 import com.google.common.annotations.Beta;
 import org.onosproject.net.group.Group;
-import org.onosproject.net.pi.runtime.PiMulticastGroupEntry;
+import org.onosproject.net.pi.runtime.PiPreEntry;
 
 /**
  * A PI translation store that keeps track of which groups have been
- * translated to which PI PRE multicast groups.
+ * translated to which PI packet replication engine (PRE) entry.
  */
 @Beta
-public interface PiMulticastGroupTranslationStore
-        extends PiTranslationStore<Group, PiMulticastGroupEntry> {
+public interface PiReplicationGroupTranslationStore
+        extends PiTranslationStore<Group, PiPreEntry> {
 }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslator.java b/core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslator.java
similarity index 75%
rename from core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslator.java
rename to core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslator.java
index e687189..960f98e 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/service/PiMulticastGroupTranslator.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/service/PiReplicationGroupTranslator.java
@@ -18,12 +18,13 @@
 
 import com.google.common.annotations.Beta;
 import org.onosproject.net.group.Group;
-import org.onosproject.net.pi.runtime.PiMulticastGroupEntry;
+import org.onosproject.net.pi.runtime.PiPreEntry;
 
 /**
- * A translator of groups to PI multicast group.
+ * A translator of groups for packet replication to PI packet replication engine
+ * (PRE) entries.
  */
 @Beta
-public interface PiMulticastGroupTranslator
-        extends PiTranslator<Group, PiMulticastGroupEntry> {
+public interface PiReplicationGroupTranslator
+        extends PiTranslator<Group, PiPreEntry> {
 }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/service/PiTranslationService.java b/core/api/src/main/java/org/onosproject/net/pi/service/PiTranslationService.java
index 20ea14d..4871140 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/service/PiTranslationService.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/service/PiTranslationService.java
@@ -48,9 +48,9 @@
 
     /**
      * Returns a group translator for packet replication engine (PRE)
-     * multicast groups.
+     * entries.
      *
-     * @return multicast group translator
+     * @return replication group translator
      */
-    PiMulticastGroupTranslator multicastGroupTranslator();
+    PiReplicationGroupTranslator replicationGroupTranslator();
 }