[ONOS-6551] Tunnel implementation for L3VPN service.
Change-Id: I3171a83305cb7391d80fda94ddf567629a10675e
diff --git a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
index 6fa2cfd..28a90da 100644
--- a/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
+++ b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
@@ -32,6 +32,7 @@
import org.onosproject.l3vpn.netl3vpn.NetL3VpnStore;
import org.onosproject.l3vpn.netl3vpn.ProtocolInfo;
import org.onosproject.l3vpn.netl3vpn.RouteProtocol;
+import org.onosproject.l3vpn.netl3vpn.TunnelInfo;
import org.onosproject.l3vpn.netl3vpn.VpnConfig;
import org.onosproject.l3vpn.netl3vpn.VpnInstance;
import org.onosproject.l3vpn.netl3vpn.VpnType;
@@ -81,6 +82,7 @@
.register(BgpInfo.class)
.register(RouteProtocol.class)
.register(ProtocolInfo.class)
+ .register(TunnelInfo.class)
.build());
private static final String FREE_ID_NULL = "Free ID cannot be null";
@@ -116,6 +118,11 @@
*/
private ConsistentMap<BgpInfo, DeviceId> bgpInfoMap;
+ /**
+ * Map of device id and tunnel count.
+ */
+ private ConsistentMap<DeviceId, Integer> tunnelInfoMap;
+
@Activate
protected void activate() {
vpnInsMap = storageService.<String, VpnInstance>consistentMapBuilder()
@@ -134,6 +141,11 @@
.withSerializer(L3VPN_SERIALIZER)
.build();
+ tunnelInfoMap = storageService.<DeviceId, Integer>consistentMapBuilder()
+ .withName("onos-l3vpn-tnl-info-map")
+ .withSerializer(L3VPN_SERIALIZER)
+ .build();
+
freedIdList = storageService.<Long>setBuilder()
.withName("onos-l3vpn-id-freed-list")
.withSerializer(Serializer.using(KryoNamespaces.API))
@@ -175,6 +187,13 @@
}
@Override
+ public Map<DeviceId, Integer> getTunnelInfo() {
+ return tunnelInfoMap.entrySet().stream()
+ .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()
+ .value()));
+ }
+
+ @Override
public void addIdToFreeList(Long id) {
checkNotNull(id, FREE_ID_NULL);
freedIdList.add(id);
@@ -203,12 +222,18 @@
@Override
public void addBgpInfo(BgpInfo bgpInfo, DeviceId devId) {
- checkNotNull(devId, BGP_INFO_NULL);
+ checkNotNull(bgpInfo, BGP_INFO_NULL);
checkNotNull(devId, DEV_ID_NULL);
bgpInfoMap.put(bgpInfo, devId);
}
@Override
+ public void addTunnelInfo(DeviceId devId, Integer count) {
+ checkNotNull(devId, DEV_ID_NULL);
+ tunnelInfoMap.put(devId, count);
+ }
+
+ @Override
public boolean removeInterfaceInfo(AccessInfo accessInfo) {
checkNotNull(accessInfo, ACCESS_INFO_NULL);
@@ -255,4 +280,15 @@
}
return true;
}
+
+ @Override
+ public boolean removeTunnelInfo(DeviceId id) {
+ checkNotNull(id, DEV_ID_NULL);
+
+ if (tunnelInfoMap.remove(id) == null) {
+ log.error("Device id deletion in tunnel info has failed.");
+ return false;
+ }
+ return true;
+ }
}