Modernize bgp-topology-provider 34/110434/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 2 Mar 2024 09:46:42 +0000 (10:46 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 2 Mar 2024 09:46:42 +0000 (10:46 +0100)
Migrate users of deprecated MD-SAL APIs.

Change-Id: I4f4529e1b962a95cfeb91948d94161b817760a84
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateGraphBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/config/BgpTopologyDeployerImpl.java

index 2ecdcad958c4f8199b2bf0f7a1196d700c8a02ea..f63b11b6274bc0b6a671b7a78824030f0350ba09 100644 (file)
@@ -19,9 +19,8 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.opendaylight.bgpcep.topology.TopologyReference;
-import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.DataObjectModification;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
@@ -49,7 +48,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public abstract class AbstractTopologyBuilder<T extends Route>
-        implements ClusteredDataTreeChangeListener<T>, TopologyReference, FutureCallback<Empty> {
+        implements DataTreeChangeListener<T>, TopologyReference, FutureCallback<Empty> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractTopologyBuilder.class);
     // we limit the listener reset interval to be 5 min at most
     private static final long LISTENER_RESET_LIMIT_IN_MILLSEC = 5 * 60 * 1000;
@@ -118,10 +117,10 @@ public abstract class AbstractTopologyBuilder<T extends Route>
                 this.getInstanceIdentifier());
         final InstanceIdentifier<Tables> tablesId = locRibReference.getInstanceIdentifier()
                 .child(LocRib.class).child(Tables.class, new TablesKey(afi, safi));
-        final DataTreeIdentifier<T> id = DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL,
+        final DataTreeIdentifier<T> id = DataTreeIdentifier.of(LogicalDatastoreType.OPERATIONAL,
                 getRouteWildcard(tablesId));
 
-        listenerRegistration = dataProvider.registerDataTreeChangeListener(id, this);
+        listenerRegistration = dataProvider.registerTreeChangeListener(id, this);
         LOG.debug("Registered listener {} on topology {}. Timestamp={}", this, this.getInstanceIdentifier(),
                 listenerScheduledRestartTime);
     }
@@ -226,20 +225,21 @@ public abstract class AbstractTopologyBuilder<T extends Route>
 
     @VisibleForTesting
     protected void routeChanged(final DataTreeModification<T> change, final ReadWriteTransaction trans) {
-        final DataObjectModification<T> root = change.getRootNode();
-        switch (root.getModificationType()) {
+        final var root = change.getRootNode();
+        switch (root.modificationType()) {
             case DELETE:
-                removeObject(trans, change.getRootPath().getRootIdentifier(), root.getDataBefore());
+                removeObject(trans, change.getRootPath().path(), root.dataBefore());
                 break;
             case SUBTREE_MODIFIED:
             case WRITE:
-                if (root.getDataBefore() != null) {
-                    removeObject(trans, change.getRootPath().getRootIdentifier(), root.getDataBefore());
+                final var before = root.dataBefore();
+                if (before != null) {
+                    removeObject(trans, change.getRootPath().path(), before);
                 }
-                createObject(trans, change.getRootPath().getRootIdentifier(), root.getDataAfter());
+                createObject(trans, change.getRootPath().path(), root.dataAfter());
                 break;
             default:
-                throw new IllegalArgumentException("Unhandled modification type " + root.getModificationType());
+                throw new IllegalArgumentException("Unhandled modification type " + root.modificationType());
         }
     }
 
@@ -247,9 +247,13 @@ public abstract class AbstractTopologyBuilder<T extends Route>
         requireNonNull(chain, "A valid transaction chain must be provided.");
         final WriteTransaction trans = chain.newWriteOnlyTransaction();
         trans.mergeParentStructurePut(LogicalDatastoreType.OPERATIONAL, topology,
-                new TopologyBuilder().withKey(topologyKey).setServerProvided(Boolean.TRUE)
-                        .setTopologyTypes(topologyTypes)
-                        .setLink(Map.of()).setNode(Map.of()).build());
+                new TopologyBuilder()
+                    .withKey(topologyKey)
+                    .setServerProvided(Boolean.TRUE)
+                    .setTopologyTypes(topologyTypes)
+                    .setLink(Map.of())
+                    .setNode(Map.of())
+                    .build());
         trans.commit().addCallback(new FutureCallback<CommitInfo>() {
             @Override
             public void onSuccess(final CommitInfo result) {
index c417bda1b41cfaf8b6b98cb38e5981cb1c24ad14..a28eb3271b9385142ca1f429c15ff5354c6b27e9 100644 (file)
@@ -18,7 +18,6 @@ import java.util.List;
 import org.opendaylight.graph.ConnectedGraph;
 import org.opendaylight.graph.ConnectedGraphProvider;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.DataObjectModification;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.protocol.bgp.rib.RibReference;
@@ -136,17 +135,17 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
 
     @Override
     protected void routeChanged(final DataTreeModification<LinkstateRoute> change, final ReadWriteTransaction trans) {
-        final DataObjectModification<LinkstateRoute> root = change.getRootNode();
-        switch (root.getModificationType()) {
+        final var root = change.getRootNode();
+        switch (root.modificationType()) {
             case DELETE:
-                removeObject(trans, change.getRootPath().getRootIdentifier(), root.getDataBefore());
+                removeObject(trans, change.getRootPath().path(), root.dataBefore());
                 break;
             case SUBTREE_MODIFIED:
             case WRITE:
-                createObject(trans, change.getRootPath().getRootIdentifier(), root.getDataAfter());
+                createObject(trans, change.getRootPath().path(), root.dataAfter());
                 break;
             default:
-                throw new IllegalArgumentException("Unhandled modification type " + root.getModificationType());
+                throw new IllegalArgumentException("Unhandled modification type " + root.modificationType());
         }
     }
 
@@ -388,12 +387,10 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
                     } else {
                         builder.setAdjSid6(adjSid);
                     }
+                } else if (!ipv6) {
+                    builder.setBackupAdjSid(adjSid);
                 } else {
-                    if (!ipv6) {
-                        builder.setBackupAdjSid(adjSid);
-                    } else {
-                        builder.setBackupAdjSid6(adjSid);
-                    }
+                    builder.setBackupAdjSid6(adjSid);
                 }
             }
         }
index c56ae43968da192ad0c8568dbd9cb4aa4706576e..39afabf293203b5ec468475f618ade11674f18c3 100644 (file)
@@ -19,6 +19,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
@@ -485,7 +486,7 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
                 listenerResetLimitInMillsec, listenerResetEnforceCounter);
     }
 
-    private static LinkId buildLinkId(final UriBuilder base, final LinkCase link) {
+    private static @NonNull LinkId buildLinkId(final UriBuilder base, final LinkCase link) {
         return new LinkId(new UriBuilder(base, "link").add(link).toString());
     }
 
@@ -580,7 +581,7 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
         return buildTp(id, t);
     }
 
-    private InstanceIdentifier<Link> buildLinkIdentifier(final LinkId id) {
+    private @NonNull InstanceIdentifier<Link> buildLinkIdentifier(final LinkId id) {
         return getInstanceIdentifier().child(
                 org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology
                         .topology.Link.class, new LinkKey(id));
@@ -719,7 +720,7 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
     }
 
     private void removeLink(final WriteTransaction trans, final UriBuilder base, final LinkCase linkCase) {
-        final LinkId id = buildLinkId(base, linkCase);
+        final var id = buildLinkId(base, linkCase);
         final InstanceIdentifier<?> lid = buildLinkIdentifier(id);
         trans.delete(LogicalDatastoreType.OPERATIONAL, lid);
         LOG.debug("Removed link {}", lid);
index 68163081f8cf18ce860cd6d9727f44464c6fe164..b0f4bb626fe1602ccc29af267a6f95d103f737ac 100644 (file)
@@ -20,9 +20,9 @@ import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.BgpTopologyDeployer;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.BgpTopologyProvider;
 import org.opendaylight.bgpcep.bgp.topology.provider.spi.TopologyReferenceSingletonService;
-import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataObjectModification;
+import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -44,11 +44,8 @@ import org.slf4j.LoggerFactory;
 @Component(service = BgpTopologyDeployer.class, immediate = true)
 @RequireServiceComponentRuntime
 public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoCloseable,
-        ClusteredDataTreeChangeListener<Topology> {
-
+        DataTreeChangeListener<Topology> {
     private static final Logger LOG = LoggerFactory.getLogger(BgpTopologyDeployerImpl.class);
-    private static final InstanceIdentifier<Topology> TOPOLOGY_IID =
-            InstanceIdentifier.create(NetworkTopology.class).child(Topology.class);
 
     @GuardedBy("this")
     private final Set<BgpTopologyProvider> topologyProviders = new HashSet<>();
@@ -66,8 +63,9 @@ public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoC
             @Reference final ClusterSingletonServiceProvider singletonProvider) {
         this.dataBroker = requireNonNull(dataBroker);
         this.singletonProvider = requireNonNull(singletonProvider);
-        registration = dataBroker.registerDataTreeChangeListener(
-            DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, TOPOLOGY_IID), this);
+        registration = dataBroker.registerTreeChangeListener(
+            DataTreeIdentifier.of(LogicalDatastoreType.CONFIGURATION,
+                InstanceIdentifier.create(NetworkTopology.class).child(Topology.class)), this);
         LOG.info("BGP topology deployer started.");
     }
 
@@ -77,29 +75,29 @@ public final class BgpTopologyDeployerImpl implements BgpTopologyDeployer, AutoC
             LOG.trace("BGP Topology Provider Deployer was already closed, skipping changes.");
             return;
         }
-        for (final DataTreeModification<Topology> change : changes) {
+        for (var change : changes) {
             final DataObjectModification<Topology> rootNode = change.getRootNode();
-            final Topology dataBefore = rootNode.getDataBefore();
-            final Topology dataAfter = rootNode.getDataAfter();
+            final Topology dataBefore = rootNode.dataBefore();
+            final Topology dataAfter = rootNode.dataAfter();
             LOG.trace("BGP topology deployer configuration changed: modification type: [{}],"
-                    + " data before:[{}], data after: [{}]", rootNode.getModificationType(), dataBefore, dataAfter);
-            switch (rootNode.getModificationType()) {
+                    + " data before:[{}], data after: [{}]", rootNode.modificationType(), dataBefore, dataAfter);
+            switch (rootNode.modificationType()) {
                 case DELETE:
                     filterTopologyBuilders(dataBefore)
-                            .forEach(provider -> provider.onTopologyBuilderRemoved(dataBefore));
+                        .forEach(provider -> provider.onTopologyBuilderRemoved(dataBefore));
                     topologies.remove(dataBefore);
                     break;
                 case SUBTREE_MODIFIED:
-                    filterTopologyBuilders(dataBefore).forEach(provider
-                        -> provider.onTopologyBuilderRemoved(dataBefore));
+                    filterTopologyBuilders(dataBefore)
+                        .forEach(provider -> provider.onTopologyBuilderRemoved(dataBefore));
                     topologies.remove(dataBefore);
-                    filterTopologyBuilders(dataAfter).forEach(provider
-                        -> provider.onTopologyBuilderCreated(dataAfter));
+                    filterTopologyBuilders(dataAfter)
+                        .forEach(provider -> provider.onTopologyBuilderCreated(dataAfter));
                     topologies.add(dataAfter);
                     break;
                 case WRITE:
-                    filterTopologyBuilders(dataAfter).forEach(provider
-                        -> provider.onTopologyBuilderCreated(dataAfter));
+                    filterTopologyBuilders(dataAfter)
+                        .forEach(provider -> provider.onTopologyBuilderCreated(dataAfter));
                     topologies.add(dataAfter);
                     break;
                 default: