AETHER-233 Move IntProgrammable behavior to core APIs

Before, the behavior interface and other concrete classes used it by
were part of the inbandtelemetry app. To make this behavior available to
third-party apps (such as the fabric-tna pipeconf), we move it to the
core APIs.

In this process, we do some clean-up of the behavior API. For example,
we remove references to network-level semantics (as behaviors should
only abstract device-level ones). That helps in reducing the number of
classes required to maintain in the core.

Change-Id: I3ba24ea93cdfea115cee454d5e921e15ec17eee9
diff --git a/apps/inbandtelemetry/app/src/main/java/org/onosproject/inbandtelemetry/app/ui/IntAppUiMessageHandler.java b/apps/inbandtelemetry/app/src/main/java/org/onosproject/inbandtelemetry/app/ui/IntAppUiMessageHandler.java
index 0dc18a4..226c428 100644
--- a/apps/inbandtelemetry/app/src/main/java/org/onosproject/inbandtelemetry/app/ui/IntAppUiMessageHandler.java
+++ b/apps/inbandtelemetry/app/src/main/java/org/onosproject/inbandtelemetry/app/ui/IntAppUiMessageHandler.java
@@ -25,8 +25,9 @@
 import org.onlab.packet.TpPort;
 import org.onosproject.inbandtelemetry.api.IntIntent;
 import org.onosproject.inbandtelemetry.api.IntIntentId;
+import org.onosproject.net.behaviour.inbandtelemetry.IntMetadataType;
 import org.onosproject.inbandtelemetry.api.IntService;
-import org.onosproject.inbandtelemetry.api.IntConfig;
+import org.onosproject.net.behaviour.inbandtelemetry.IntDeviceConfig;
 import org.onosproject.net.flow.DefaultTrafficSelector;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.ui.RequestHandler;
@@ -67,7 +68,7 @@
             log.info("intConfigAddRequest: {}", payload);
 
             intService = get(IntService.class);
-            IntConfig.Builder builder = IntConfig.builder();
+            IntDeviceConfig.Builder builder = IntDeviceConfig.builder();
 
             if (payload.get("collectorIp") != null) {
                 builder.withCollectorIp(IpAddress.valueOf(payload.get("collectorIp").asText()));
@@ -152,25 +153,25 @@
                     for (final JsonNode json : meta) {
                         switch (json.asText()) {
                             case "SWITCH_ID":
-                                builder.withMetadataType(IntIntent.IntMetadataType.SWITCH_ID);
+                                builder.withMetadataType(IntMetadataType.SWITCH_ID);
                                 break;
                             case "PORT_ID":
-                                builder.withMetadataType(IntIntent.IntMetadataType.L1_PORT_ID);
+                                builder.withMetadataType(IntMetadataType.L1_PORT_ID);
                                 break;
                             case "HOP_LATENCY":
-                                builder.withMetadataType(IntIntent.IntMetadataType.HOP_LATENCY);
+                                builder.withMetadataType(IntMetadataType.HOP_LATENCY);
                                 break;
                             case "QUEUE_OCCUPANCY":
-                                builder.withMetadataType(IntIntent.IntMetadataType.QUEUE_OCCUPANCY);
+                                builder.withMetadataType(IntMetadataType.QUEUE_OCCUPANCY);
                                 break;
                             case "INGRESS_TIMESTAMP":
-                                builder.withMetadataType(IntIntent.IntMetadataType.INGRESS_TIMESTAMP);
+                                builder.withMetadataType(IntMetadataType.INGRESS_TIMESTAMP);
                                 break;
                             case "EGRESS_TIMESTAMP":
-                                builder.withMetadataType(IntIntent.IntMetadataType.EGRESS_TIMESTAMP);
+                                builder.withMetadataType(IntMetadataType.EGRESS_TIMESTAMP);
                                 break;
                             case "EGRESS_TX_UTIL":
-                                builder.withMetadataType(IntIntent.IntMetadataType.EGRESS_TX_UTIL);
+                                builder.withMetadataType(IntMetadataType.EGRESS_TX_UTIL);
                                 break;
                             default:
                                 break;