Refactor of UpfProgrammable APIs

Change-Id: I792659ad4a163d7115d7320bb33c11534edd484a
Signed-off-by: Daniele Moro <daniele@opennetworking.org>
(cherry picked from commit a57652d92bdd01b1e77bffbac78a44f96fb385f3)
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/upf/UpfInterface.java b/core/api/src/main/java/org/onosproject/net/behaviour/upf/UpfInterface.java
index 3fee11a..f697d15 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/upf/UpfInterface.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/upf/UpfInterface.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.net.behaviour.upf;
 
+import com.google.common.annotations.Beta;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.Ip4Prefix;
 
@@ -26,7 +27,8 @@
 /**
  * A UPF device interface, such as a S1U or UE IP address pool.
  */
-public final class UpfInterface {
+@Beta
+public final class UpfInterface implements UpfEntity {
     private final Ip4Prefix prefix;
     private final Type type;
 
@@ -134,7 +136,6 @@
         return type == Type.CORE;
     }
 
-
     /**
      * Check if this UPF interface is for receiving buffered packets as they are released from the dbuf
      * buffering device.
@@ -154,6 +155,11 @@
         return this.prefix;
     }
 
+    @Override
+    public UpfEntityType type() {
+        return UpfEntityType.INTERFACE;
+    }
+
     public enum Type {
         /**
          * Unknown UPF interface type.