Eliminate PCEPDispatcher.getPCEPSessionNegotiatorFactory() 21/104021/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 14 Jan 2023 18:00:35 +0000 (19:00 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 14 Jan 2023 18:01:40 +0000 (19:01 +0100)
This is a useless indirection, as we are conflating the different
layers. This allows us to pass the factories when a server is created,
which is needed for the configuration flexibility.

JIRA: BGPCEP-962
Change-Id: Ia693272d67b621521a85c2662ea0f358c6479f30
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/api/src/main/java/org/opendaylight/protocol/pcep/PCEPDispatcher.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/PCEPDispatcherImpl.java
pcep/impl/src/main/resources/OSGI-INF/blueprint/pcep-impl.xml
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyProvider.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyProviderDependencies.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyTracker.java
pcep/topology/topology-provider/src/main/resources/OSGI-INF/blueprint/pcep-topology.xml

index 04a11d4b1daf1642078fa87b4b34eb506d82d35a..f4a4636faf5e1957b59ba25c82e48074b65ba28f 100644 (file)
@@ -26,6 +26,4 @@ public interface PCEPDispatcher {
      */
     @NonNull ChannelFuture createServer(@NonNull InetSocketAddress listenAddress, @NonNull KeyMapping tcpKeys,
         @NonNull PCEPSessionNegotiatorFactoryDependencies negotiatorDependencies);
-
-    @NonNull PCEPSessionNegotiatorFactory getPCEPSessionNegotiatorFactory();
 }
index 4bb0892705869486eab1d6b87e03713af9fd4d24..053269a99c72dc3ce964587462c23d12198537d2 100644 (file)
@@ -141,11 +141,6 @@ public class PCEPDispatcherImpl implements PCEPDispatcher, Closeable {
         }
     }
 
-    @Override
-    public final PCEPSessionNegotiatorFactory getPCEPSessionNegotiatorFactory() {
-        return snf;
-    }
-
     protected interface ChannelPipelineInitializer {
         void initializeChannel(SocketChannel socketChannel, Promise<PCEPSession> promise);
     }
index 0707dc5e7a193bbb0769ee7f7c3de39636f91b7c..adfbdbb59b2a4ae0bc5a94c258b970c22c7bddde 100644 (file)
@@ -36,6 +36,8 @@
     <argument ref="pcepDispatcherConfig"/>
   </bean>
 
+  <service ref="pcepSessionNegotiatorFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory"/>
+
   <bean id="pcepDispatcher" class="org.opendaylight.protocol.pcep.impl.PCEPDispatcherImpl">
     <argument>
       <bean factory-ref="pcepExtensionContext" factory-method="getMessageHandlerRegistry"/>
index 01d65ddae05ce8981f3e37670bab11a09c43a8c2..dc226d5fe78868688031cb3fd7542983399d33bc 100644 (file)
@@ -96,7 +96,7 @@ final class PCEPTopologyProvider extends DefaultTopologyReference {
 
     synchronized void updateConfiguration(final @Nullable PCEPTopologyConfiguration newConfiguration) {
         // FIXME: BGPCEP-960: this check should be a one-time thing in PCEPTopologyTracker startup once we have OSGi DS
-        final var effectiveConfig = dependencies.getPCEPDispatcher().getPCEPSessionNegotiatorFactory()
+        final var effectiveConfig = dependencies.getPCEPSessionNegotiatorFactory()
             .getPCEPSessionProposalFactory().getCapabilities().stream()
             .anyMatch(PCEPCapability::isStateful) ? newConfiguration : null;
 
index d3c360dd0be2ffc207adb4103c18a6bb4943be07..fbaf466988ce0e49b12c1c84aecbbacb279acd48 100644 (file)
@@ -13,12 +13,20 @@ import org.opendaylight.bgpcep.pcep.server.PceServerProvider;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.protocol.pcep.PCEPDispatcher;
+import org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory;
 
 /**
  * Provides required dependencies for PCEPTopologyProviderProvider instantiation.
  */
 @NonNullByDefault
 interface PCEPTopologyProviderDependencies {
+    /**
+     * PCEP Session Negotiator Factory.
+     *
+     * @return Negotiator factory
+     */
+    PCEPSessionNegotiatorFactory getPCEPSessionNegotiatorFactory();
+
     /**
      * PCEP Dispatcher.
      *
index 8dac0d97fce8df58082fc7ff20d7708678a9d375..432c1a661707d09ffd743c08e841c0567a597527 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.protocol.pcep.PCEPDispatcher;
+import org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.PcepTopologyStatsRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev220730.topology.pcep.type.TopologyPcep;
@@ -56,6 +57,7 @@ public final class PCEPTopologyTracker
     // Services we are using
     final @NonNull InstructionSchedulerFactory instructionSchedulerFactory;
     final @NonNull ClusterSingletonServiceProvider singletonService;
+    private final @NonNull PCEPSessionNegotiatorFactory sessionNegotiatorFactory;
     private final @NonNull RpcProviderService rpcProviderRegistry;
     private final @NonNull PceServerProvider pceServerProvider;
     private final @NonNull PCEPDispatcher pcepDispatcher;
@@ -105,11 +107,13 @@ public final class PCEPTopologyTracker
     private Registration statsReg;
 
     public PCEPTopologyTracker(final DataBroker dataBroker, final ClusterSingletonServiceProvider singletonService,
-            final RpcProviderService rpcProviderRegistry, final PCEPDispatcher pcepDispatcher,
-            final InstructionSchedulerFactory instructionSchedulerFactory, final PceServerProvider pceServerProvider) {
+            final RpcProviderService rpcProviderRegistry, final PCEPSessionNegotiatorFactory sessionNegotiatorFactory,
+            final PCEPDispatcher pcepDispatcher, final InstructionSchedulerFactory instructionSchedulerFactory,
+            final PceServerProvider pceServerProvider) {
         this.dataBroker = requireNonNull(dataBroker);
         this.singletonService = requireNonNull(singletonService);
         this.rpcProviderRegistry = requireNonNull(rpcProviderRegistry);
+        this.sessionNegotiatorFactory = requireNonNull(sessionNegotiatorFactory);
         this.pcepDispatcher = requireNonNull(pcepDispatcher);
         this.instructionSchedulerFactory = requireNonNull(instructionSchedulerFactory);
         this.pceServerProvider = requireNonNull(pceServerProvider);
@@ -123,6 +127,11 @@ public final class PCEPTopologyTracker
         LOG.info("PCEP Topology tracker initialized");
     }
 
+    @Override
+    public PCEPSessionNegotiatorFactory getPCEPSessionNegotiatorFactory() {
+        return sessionNegotiatorFactory;
+    }
+
     @Override
     public PCEPDispatcher getPCEPDispatcher() {
         return pcepDispatcher;
index 737edb43483e07afef7ffa41a08a94f2e2902546..26d81b49728b15f5441abe289c886a380bf88b15 100644 (file)
@@ -9,6 +9,7 @@
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
     <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker"/>
     <reference id="rpcProviderService" interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
+    <reference id="sessionNegotiatorFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory"/>
     <reference id="pcepDispatcher" interface="org.opendaylight.protocol.pcep.PCEPDispatcher"/>
     <reference id="clusterSingletonServiceProvider"
                interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
@@ -21,6 +22,7 @@
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonServiceProvider"/>
         <argument ref="rpcProviderService"/>
+        <argument ref="sessionNegotiatorFactory"/>
         <argument ref="pcepDispatcher"/>
         <argument ref="intructionFactory"/>
         <argument ref="pceServerProvider"/>