[ONOS-4163] Add tunnel service API
Change-Id: I5b0f862731cd62e2f977bee809eaf75bc22d83d0
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
index 42bf807..fcdc07e 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/TunnelService.java
@@ -23,6 +23,8 @@
import org.onosproject.incubator.net.tunnel.Tunnel.Type;
import org.onosproject.net.Annotations;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.ElementId;
+import org.onosproject.net.Path;
/**
* Service for interacting with the inventory of tunnels.
@@ -92,6 +94,27 @@
Annotations... annotations);
/**
+ * Creates a tunnel with given path and default initial state. The state changes
+ * in due course of time based on changes happening in the network.
+ *
+ * @param producerId a tunnel producer
+ * @param srcElementId element id of the source
+ * @param tunnel to be created
+ * @param path path of the tunnel
+ * @return generated tunnel identity
+ */
+ TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path);
+
+ /**
+ * Triggers removal of specified tunnel.
+ *
+ * @param producerId a tunnel producer
+ * @param tunnelId identity for the tunnel to be triggered for removal
+ * @return success or failure
+ */
+ boolean downTunnel(ApplicationId producerId, TunnelId tunnelId);
+
+ /**
* Returns back a specific tunnel to store.
*
* @param consumerId a tunnel consumer
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
index 8a9225b..6e2901c 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/tunnel/impl/TunnelManager.java
@@ -43,6 +43,7 @@
import org.onosproject.incubator.net.tunnel.TunnelSubscription;
import org.onosproject.net.Annotations;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.ElementId;
import org.onosproject.net.Path;
import org.onosproject.net.provider.AbstractProviderService;
import org.onosproject.net.provider.ProviderId;
@@ -227,6 +228,18 @@
}
@Override
+ public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
+ // TODO: Insert into store and trigger provider API.
+ return null;
+ }
+
+ @Override
+ public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) {
+ // TODO: Change the tunnel status and trigger provider API.
+ return false;
+ }
+
+ @Override
public boolean returnTunnel(ApplicationId consumerId,
TunnelId tunnelId, Annotations... annotations) {
return store.returnTunnel(consumerId, tunnelId, annotations);
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java
index 7444efd..10be5f5 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java
@@ -25,9 +25,11 @@
import org.onosproject.incubator.net.tunnel.TunnelSubscription;
import org.onosproject.net.Annotations;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.ElementId;
import java.util.Collection;
import java.util.Collections;
+import org.onosproject.net.Path;
public class TunnelServiceAdapter implements TunnelService {
@Override
@@ -54,6 +56,16 @@
}
@Override
+ public TunnelId setupTunnel(ApplicationId producerId, ElementId srcElementId, Tunnel tunnel, Path path) {
+ return null;
+ }
+
+ @Override
+ public boolean downTunnel(ApplicationId producerId, TunnelId tunnelId) {
+ return false;
+ }
+
+ @Override
public boolean returnTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
return false;
}