ONOS-3633 - Adding intent event listener to PointToPointIntent virtual network
provider. Intent events will either set the virtual link state to ACTIVE or
INACTIVE.
Change-Id: I34b65b2bfff29b791e7b2eb4d7cefb2ec4e88672
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualLink.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualLink.java
index ff42dcd..0daa8b5 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualLink.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualLink.java
@@ -44,10 +44,12 @@
* @param networkId network identifier
* @param src source connection point
* @param dst destination connection point
+ * @param state link state
* @param tunnelId tunnel identifier
*/
- private DefaultVirtualLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst, TunnelId tunnelId) {
- super(PID, src, dst, Type.VIRTUAL, DefaultAnnotations.builder().build());
+ private DefaultVirtualLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst,
+ State state, TunnelId tunnelId) {
+ super(PID, src, dst, Type.VIRTUAL, state, DefaultAnnotations.builder().build());
this.networkId = networkId;
this.tunnelId = tunnelId;
}
@@ -107,6 +109,7 @@
private ConnectPoint src;
private ConnectPoint dst;
private TunnelId tunnelId;
+ private State state;
private Builder() {
// Hide constructor
@@ -157,6 +160,17 @@
}
/**
+ * Sets the link state to be used by the builder.
+ *
+ * @param state link state
+ * @return self
+ */
+ public Builder state(State state) {
+ this.state = state;
+ return this;
+ }
+
+ /**
* Builds a default virtual link object from the accumulated parameters.
*
* @return default virtual link object
@@ -166,7 +180,7 @@
checkNotNull(dst, "Destination connect point cannot be null");
checkNotNull(networkId, "Network Id cannot be null");
- return new DefaultVirtualLink(networkId, src, dst, tunnelId);
+ return new DefaultVirtualLink(networkId, src, dst, state, tunnelId);
}
}
}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkProviderService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkProviderService.java
index 6cc4ad8..5d63c7d 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkProviderService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkProviderService.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.incubator.net.virtual;
+import org.onosproject.incubator.net.tunnel.TunnelId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.provider.ProviderService;
@@ -30,8 +31,9 @@
* @param networkId network identifier
* @param src source connection point
* @param dst destination connection point
+ * @param tunnelId tunnel identifier
*/
- void tunnelUp(NetworkId networkId, ConnectPoint src, ConnectPoint dst);
+ void tunnelUp(NetworkId networkId, ConnectPoint src, ConnectPoint dst, TunnelId tunnelId);
/**
* This method is used to notify the VirtualNetwork service that a tunnel is now
@@ -40,7 +42,8 @@
* @param networkId network identifier
* @param src source connection point
* @param dst destination connection point
+ * @param tunnelId tunnel identifier
*/
- void tunnelDown(NetworkId networkId, ConnectPoint src, ConnectPoint dst);
+ void tunnelDown(NetworkId networkId, ConnectPoint src, ConnectPoint dst, TunnelId tunnelId);
}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkService.java
index 6357aee..ebe0b69 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkService.java
@@ -60,7 +60,9 @@
Set<VirtualLink> getVirtualLinks(NetworkId networkId);
/**
- * Returns list of all virtual ports of the specified device.
+ * Returns list of all virtual ports of the specified device. If the
+ * device identifier is null then all of the virtual ports in the specified
+ * network will be returned.
*
* @param networkId network identifier
* @param deviceId device identifier
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
index 35fb0c3..663c208 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
@@ -18,6 +18,7 @@
import org.onosproject.incubator.net.tunnel.TunnelId;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.Link;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.store.Store;
@@ -89,18 +90,20 @@
* @param networkId network identifier
* @param src source end-point of the link
* @param dst destination end-point of the link
+ * @param state link state
* @param realizedBy underlying tunnel identifier using which this link is realized
* @return the virtual link
*/
- VirtualLink addLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst, TunnelId realizedBy);
+ VirtualLink addLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst, Link.State state, TunnelId realizedBy);
/**
* Updates the tunnelId in the virtual link.
*
- * @param virtualLink virtual link
- * @param tunnelId tunnel identifier
+ * @param virtualLink virtual link
+ * @param tunnelId tunnel identifier
+ * @param state link state
*/
- void updateLink(VirtualLink virtualLink, TunnelId tunnelId);
+ void updateLink(VirtualLink virtualLink, TunnelId tunnelId, Link.State state);
/**
* Removes the specified link from the store.
@@ -158,10 +161,21 @@
Set<VirtualLink> getLinks(NetworkId networkId);
/**
+ * Returns the virtual link matching the network identifier, source connect point,
+ * and destination connect point.
+ *
+ * @param networkId network identifier
+ * @param src source connect point
+ * @param dst destination connect point
+ * @return virtual link
+ */
+ VirtualLink getLink(NetworkId networkId, ConnectPoint src, ConnectPoint dst);
+
+ /**
* Returns the list of ports of the specified virtual device.
*
* @param networkId network identifier
- * @param deviceId device identifier
+ * @param deviceId device identifier
* @return set of virtual networks
*/
Set<VirtualPort> getPorts(NetworkId networkId, DeviceId deviceId);