Move getPCEPSessionProposalFactory() 22/104022/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 14 Jan 2023 18:48:26 +0000 (19:48 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 14 Jan 2023 18:49:37 +0000 (19:49 +0100)
The wiring here comes from Config Subsystem times, where we have had a
wildly different lifecycle. Inject PCEPSessionProposalFactory through
service registry.

JIRA: BGPCEP-962
Change-Id: I2c2a197b0137c4e79cf44e0fa70fa0398d4b852d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/api/src/main/java/org/opendaylight/protocol/pcep/PCEPSessionNegotiatorFactory.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/DefaultPCEPSessionNegotiatorFactory.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 ace6cfad7624684c8890a990c47e64d729522897..4171610404b8cdbc4f1c022f325a2edd3cb607e7 100644 (file)
@@ -15,7 +15,6 @@ import org.eclipse.jdt.annotation.NonNull;
  * Factory for creating PCEP session negotiator.
  */
 public interface PCEPSessionNegotiatorFactory {
-
     /**
      * Creates PCEPSessionNegotiator instance for income attributes.
      *
@@ -27,11 +26,4 @@ public interface PCEPSessionNegotiatorFactory {
     @NonNull SessionNegotiator getSessionNegotiator(
             @NonNull PCEPSessionNegotiatorFactoryDependencies sessionNegotiatorDependencies,
             @NonNull Channel channel, @NonNull Promise<PCEPSession> promise);
-
-    /**
-     * Returns a PCEPSessionProposalFactory.
-     *
-     * @return session factory
-     */
-    @NonNull PCEPSessionProposalFactory getPCEPSessionProposalFactory();
 }
index 803f7c2c53ed84da11b9a1f3ec870ab9df1d8c3c..72a426f195296c282c4024854cb11c4a75a67eb5 100644 (file)
@@ -56,9 +56,4 @@ public final class DefaultPCEPSessionNegotiatorFactory extends AbstractPCEPSessi
                 errorPolicy,
                 tlsConfiguration);
     }
-
-    @Override
-    public PCEPSessionProposalFactory getPCEPSessionProposalFactory() {
-        return spf;
-    }
 }
index adfbdbb59b2a4ae0bc5a94c258b970c22c7bddde..f7c7cf4c062e51e445fd2c47ea35a77237344d51 100644 (file)
@@ -22,6 +22,8 @@
     <argument ref="pcepCapabilities"/>
   </bean>
 
+  <service ref="sessionProposalFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionProposalFactory"/>
+
   <!-- PCEPDispatcher -->
 
   <reference id="pcepExtensionContext" interface="org.opendaylight.protocol.pcep.spi.PCEPExtensionConsumerContext"/>
index dc226d5fe78868688031cb3fd7542983399d33bc..7f41fa7205169fa7da73ebb9db773ca522d256e8 100644 (file)
@@ -96,8 +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.getPCEPSessionNegotiatorFactory()
-            .getPCEPSessionProposalFactory().getCapabilities().stream()
+        final var effectiveConfig = dependencies.getPCEPSessionProposalFactory().getCapabilities().stream()
             .anyMatch(PCEPCapability::isStateful) ? newConfiguration : null;
 
         applyConfiguration(effectiveConfig);
index fbaf466988ce0e49b12c1c84aecbbacb279acd48..05e1d28abe3d65d8cf3a34aab9b5098758a5f904 100644 (file)
@@ -14,12 +14,20 @@ 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;
+import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory;
 
 /**
  * Provides required dependencies for PCEPTopologyProviderProvider instantiation.
  */
 @NonNullByDefault
 interface PCEPTopologyProviderDependencies {
+    /**
+     * Returns a PCEPSessionProposalFactory.
+     *
+     * @return session factory
+     */
+    PCEPSessionProposalFactory getPCEPSessionProposalFactory();
+
     /**
      * PCEP Session Negotiator Factory.
      *
index 432c1a661707d09ffd743c08e841c0567a597527..ed7388ae9d3494d651f6a69b71da804ab22e11a6 100644 (file)
@@ -33,6 +33,7 @@ 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.protocol.pcep.PCEPSessionProposalFactory;
 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;
@@ -58,6 +59,7 @@ public final class PCEPTopologyTracker
     final @NonNull InstructionSchedulerFactory instructionSchedulerFactory;
     final @NonNull ClusterSingletonServiceProvider singletonService;
     private final @NonNull PCEPSessionNegotiatorFactory sessionNegotiatorFactory;
+    private final @NonNull PCEPSessionProposalFactory sessionProposalFactory;
     private final @NonNull RpcProviderService rpcProviderRegistry;
     private final @NonNull PceServerProvider pceServerProvider;
     private final @NonNull PCEPDispatcher pcepDispatcher;
@@ -107,12 +109,14 @@ public final class PCEPTopologyTracker
     private Registration statsReg;
 
     public PCEPTopologyTracker(final DataBroker dataBroker, final ClusterSingletonServiceProvider singletonService,
-            final RpcProviderService rpcProviderRegistry, final PCEPSessionNegotiatorFactory sessionNegotiatorFactory,
+            final RpcProviderService rpcProviderRegistry, final PCEPSessionProposalFactory sessionProposalFactory,
+            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.sessionProposalFactory = requireNonNull(sessionProposalFactory);
         this.sessionNegotiatorFactory = requireNonNull(sessionNegotiatorFactory);
         this.pcepDispatcher = requireNonNull(pcepDispatcher);
         this.instructionSchedulerFactory = requireNonNull(instructionSchedulerFactory);
@@ -127,6 +131,11 @@ public final class PCEPTopologyTracker
         LOG.info("PCEP Topology tracker initialized");
     }
 
+    @Override
+    public PCEPSessionProposalFactory getPCEPSessionProposalFactory() {
+        return sessionProposalFactory;
+    }
+
     @Override
     public PCEPSessionNegotiatorFactory getPCEPSessionNegotiatorFactory() {
         return sessionNegotiatorFactory;
index 26d81b49728b15f5441abe289c886a380bf88b15..b7f654acc4dd9988097f6334cfcc9ca2b0fe2c4c 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="sessionProposalFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionProposalFactory"/>
     <reference id="sessionNegotiatorFactory" interface="org.opendaylight.protocol.pcep.PCEPSessionNegotiatorFactory"/>
     <reference id="pcepDispatcher" interface="org.opendaylight.protocol.pcep.PCEPDispatcher"/>
     <reference id="clusterSingletonServiceProvider"
@@ -22,6 +23,7 @@
         <argument ref="dataBroker"/>
         <argument ref="clusterSingletonServiceProvider"/>
         <argument ref="rpcProviderService"/>
+        <argument ref="sessionProposalFactory"/>
         <argument ref="sessionNegotiatorFactory"/>
         <argument ref="pcepDispatcher"/>
         <argument ref="intructionFactory"/>