import org.opendaylight.bgpcep.pcep.server.PceServerProvider;
import org.opendaylight.bgpcep.pcep.topology.provider.TopologySessionListenerFactory;
import org.opendaylight.bgpcep.pcep.topology.spi.stats.TopologySessionStatsRegistry;
-import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
import org.opendaylight.bgpcep.programming.spi.InstructionSchedulerFactory;
import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataBroker;
LOG.info("Creating Topology {}", topologyId);
LOG.trace("Topology {}.", topology);
- final InstructionScheduler instructionScheduler = instructionSchedulerFactory
- .createInstructionScheduler(topologyId.getValue());
-
final PCEPTopologyProviderBean pcepTopologyProviderBean = new PCEPTopologyProviderBean(
dataBroker, pcepDispatcher, rpcProviderRegistry, sessionListenerFactory, stateRegistry, pceServerProvider);
pcepTopologyServices.put(topologyId, pcepTopologyProviderBean);
- pcepTopologyProviderBean.start(singletonService, new PCEPTopologyConfiguration(topology), instructionScheduler,
- bundleContext);
+ pcepTopologyProviderBean.start(instructionSchedulerFactory, singletonService,
+ new PCEPTopologyConfiguration(topology), bundleContext);
}
@Holding("this")
import org.opendaylight.bgpcep.pcep.server.PceServerProvider;
import org.opendaylight.bgpcep.pcep.topology.provider.TopologySessionListenerFactory;
import org.opendaylight.bgpcep.pcep.topology.spi.stats.TopologySessionStatsRegistry;
-import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
+import org.opendaylight.bgpcep.programming.spi.InstructionSchedulerFactory;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
import org.opendaylight.mdsal.common.api.CommitInfo;
}
@SuppressWarnings("checkstyle:IllegalCatch")
- synchronized void start(final ClusterSingletonServiceProvider cssp,
- final PCEPTopologyConfiguration configDependencies, final InstructionScheduler instructionScheduler,
+ synchronized void start(final InstructionSchedulerFactory instructionSchedulerFactory,
+ final ClusterSingletonServiceProvider cssp, final PCEPTopologyConfiguration configDependencies,
final BundleContext bundleContext) {
checkState(pcepTopoProviderCSS == null, "Previous instance %s was not closed.", this);
try {
- pcepTopoProviderCSS = new PCEPTopologyProviderSingleton(configDependencies, this, instructionScheduler,
- cssp, bundleContext);
+ pcepTopoProviderCSS = new PCEPTopologyProviderSingleton(configDependencies, this,
+ instructionSchedulerFactory, cssp, bundleContext);
} catch (final Exception e) {
LOG.debug("Failed to create PCEPTopologyProvider {}", configDependencies.getTopologyId().getValue(), e);
}
import org.gaul.modernizer_maven_annotations.SuppressModernizer;
import org.opendaylight.bgpcep.pcep.topology.provider.PCEPTopologyProvider;
import org.opendaylight.bgpcep.programming.spi.InstructionScheduler;
+import org.opendaylight.bgpcep.programming.spi.InstructionSchedulerFactory;
import org.opendaylight.bgpcep.topology.DefaultTopologyReference;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
final class PCEPTopologyProviderSingleton implements ClusterSingletonService, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(PCEPTopologyProviderSingleton.class);
- private final ServiceGroupIdentifier sgi;
private final PCEPTopologyProvider pcepTopoProvider;
private final InstructionScheduler scheduler;
PCEPTopologyProviderSingleton(final PCEPTopologyConfiguration configDependencies,
final PCEPTopologyProviderDependencies dependenciesProvider,
- final InstructionScheduler instructionScheduler, final ClusterSingletonServiceProvider cssp,
+ final InstructionSchedulerFactory instructionSchedulerFactory, final ClusterSingletonServiceProvider cssp,
// FIXME: this should not be needed
final BundleContext bundleContext) {
- scheduler = instructionScheduler;
- sgi = scheduler.getIdentifier();
+ scheduler = instructionSchedulerFactory.createInstructionScheduler(
+ configDependencies.getTopologyId().getValue());
+
+ // FIXME: this should only be created once we are up
pcepTopoProvider = PCEPTopologyProvider.create(dependenciesProvider, scheduler, configDependencies);
+ // FIXME: this should only be registered once we are up
serviceRegistration = bundleContext.registerService(DefaultTopologyReference.class.getName(),
pcepTopoProvider, props(configDependencies));
LOG.info("PCEP Topology Provider service {} registered", getIdentifier().getName());
@Override
public ServiceGroupIdentifier getIdentifier() {
- return sgi;
+ return scheduler.getIdentifier();
}
@Override