[ODTN] Add read/create/delete ConnectivityService RPC

- RPC: get service interface point
- RPC: get connectivity service list
- RPC: get connectivity service detail
- RPC: create connectivity service
- RPC: delete connectivity service

- Filter method of TAPI resolver for both Node / NEP
- Change condition for sip to odtn-port-type
- Use odtn-port-type in path-computation mock
- Create CEP at topology discovery

- Add sample path calculator
- Add connection-id based path selection

Change-Id: I2f08aacb3dd14b6b3c59a64a349e50abb495f70b
diff --git a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/InfineraOpenConfigDeviceDiscovery.java b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/InfineraOpenConfigDeviceDiscovery.java
index 347a0c8..4ebe973 100644
--- a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/InfineraOpenConfigDeviceDiscovery.java
+++ b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/InfineraOpenConfigDeviceDiscovery.java
@@ -148,14 +148,12 @@
         //log.warn("parent data Node: {}",
         //       ((SubnodeConfiguration) component).getParent().getRootNode().getName());
 
-
         String name = component.getString("name");
         checkNotNull(name);
         if (!name.contains("GIGECLIENTCTP")) {
             return null;
         }
 
-
         Builder builder = DefaultPortDescription.builder();
 
         Map<String, String> props = new HashMap<>();
@@ -168,12 +166,17 @@
         Matcher lineMatch = linePattern.matcher(name);
 
         if (clientMatch.find()) {
+            String num = clientMatch.group(1);
+            Integer connection = (Integer.parseInt(num) + 1) / 2;
             props.putIfAbsent(PORT_TYPE, OdtnPortType.CLIENT.value());
-            builder.withPortNumber(PortNumber.portNumber(Long.parseLong(clientMatch.group(1)), name));
+            props.putIfAbsent(CONNECTION_ID, "connection:" + connection.toString());
+            builder.withPortNumber(PortNumber.portNumber(Long.parseLong(num), name));
             builder.type(Type.PACKET);
         } else if (lineMatch.find()) {
+            String num = lineMatch.group(1);
             props.putIfAbsent(PORT_TYPE, OdtnPortType.LINE.value());
-            builder.withPortNumber(PortNumber.portNumber(100 + Long.parseLong(lineMatch.group(1)), name));
+            props.putIfAbsent(CONNECTION_ID, "connection:" + num);
+            builder.withPortNumber(PortNumber.portNumber(100 + Long.parseLong(num), name));
             builder.type(Type.OCH);
         } else {
             return null;