ONOS-5549 TE Tunnel LSP attributes management
Change-Id: I1f8f7fdd23f26ed0600c27dc7d958dff872e6d35
diff --git a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java
index 2824007..ddca1e1 100755
--- a/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java
+++ b/apps/tetunnel/app/src/main/java/org/onosproject/tetunnel/impl/DistributedTeTunnelStore.java
@@ -30,6 +30,8 @@
import org.onosproject.store.service.LogicalClockService;
import org.onosproject.store.service.StorageService;
import org.onosproject.tetopology.management.api.TeTopologyKey;
+import org.onosproject.tetunnel.api.lsp.TeLsp;
+import org.onosproject.tetunnel.api.lsp.TeLspKey;
import org.onosproject.tetunnel.api.tunnel.TeTunnel;
import org.onosproject.tetunnel.api.TeTunnelStore;
import org.onosproject.tetunnel.api.tunnel.TeTunnelKey;
@@ -57,6 +59,7 @@
private EventuallyConsistentMap<TeTunnelKey, TeTunnel> teTunnels;
private EventuallyConsistentMap<TeTunnelKey, TunnelId> tunnelIds;
+ private EventuallyConsistentMap<TeLspKey, TeLsp> lsps;
@Activate
public void activate() {
@@ -77,6 +80,12 @@
.withTimestampProvider((k, v) -> clockService.getTimestamp())
.build();
+ lsps = storageService.<TeLspKey, TeLsp>eventuallyConsistentMapBuilder()
+ .withName("TeLspStore")
+ .withSerializer(serializer)
+ .withTimestampProvider((k, v) -> clockService.getTimestamp())
+ .build();
+
log.info("Started");
}
@@ -84,6 +93,7 @@
public void deactivate() {
teTunnels.destroy();
tunnelIds.destroy();
+ lsps.destroy();
log.info("Stopped");
}
@@ -166,4 +176,42 @@
.equals(teTopologyKey))
.collect(Collectors.toList()));
}
+
+ @Override
+ public boolean addTeLsp(TeLsp lsp) {
+ if (lsp == null) {
+ log.warn("TeLsp is null");
+ return false;
+ }
+ if (lsps.containsKey(lsp.teLspKey())) {
+ log.error("TeLsp exist {}", lsp.teLspKey());
+ return false;
+ }
+ lsps.put(lsp.teLspKey(), lsp);
+ return true;
+ }
+
+ @Override
+ public void updateTeLsp(TeLsp lsp) {
+ if (lsp == null) {
+ log.warn("TeLsp is null");
+ return;
+ }
+ lsps.put(lsp.teLspKey(), lsp);
+ }
+
+ @Override
+ public void removeTeLsp(TeLspKey key) {
+ lsps.remove(key);
+ }
+
+ @Override
+ public TeLsp getTeLsp(TeLspKey key) {
+ return lsps.get(key);
+ }
+
+ @Override
+ public Collection<TeLsp> getTeLsps() {
+ return ImmutableList.copyOf(lsps.values());
+ }
}