import org.checkerframework.checker.lock.qual.GuardedBy;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.bgpcep.pcep.server.PceServerProvider;
-import org.opendaylight.bgpcep.pcep.topology.spi.stats.TopologySessionStatsRegistry;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.protocol.pcep.PCEPSession;
import org.opendaylight.protocol.pcep.PCEPSessionListenerFactory;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.GraphKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.PcepSessionState;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.AddLspArgs;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.EnsureLspOperationalInput;
import org.slf4j.LoggerFactory;
// Non-final for testing
-class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessionRPCs, TopologySessionStatsRegistry {
+class ServerSessionManager implements PCEPSessionListenerFactory, TopologySessionRPCs {
private static final Logger LOG = LoggerFactory.getLogger(ServerSessionManager.class);
private static final long DEFAULT_HOLD_STATE_NANOS = TimeUnit.MINUTES.toNanos(5);
private volatile short rpcTimeout;
+ private final GraphKey graphKey;
+
ServerSessionManager(final KeyedInstanceIdentifier<Topology, TopologyKey> instanceIdentifier,
- final PCEPTopologyProviderDependencies dependencies, final short rpcTimeout) {
+ final PCEPTopologyProviderDependencies dependencies, final short rpcTimeout, final GraphKey graphKey) {
this.dependencies = requireNonNull(dependencies);
topology = requireNonNull(instanceIdentifier);
this.rpcTimeout = rpcTimeout;
+ this.graphKey = requireNonNull(graphKey);
}
// Initialize the operational view of the topology.
final ListenableFuture<Boolean> start() {
LOG.info("Creating PCEP Topology {}", topologyId());
-
final var tx = dependencies.getDataBroker().newWriteOnlyTransaction();
tx.put(LogicalDatastoreType.OPERATIONAL, topology, new TopologyBuilder()
.withKey(topology.getKey())
// Register this new topology to PCE Server
final PceServerProvider server = dependencies.getPceServerProvider();
if (server != null) {
- server.registerPcepTopology(topology);
+ server.registerPcepTopology(topology, graphKey);
}
return future;
}
return future;
}
- final synchronized void releaseNodeState(final TopologyNodeState nodeState, final PCEPSession session,
+ final synchronized void releaseNodeState(final TopologyNodeState nodeState, final InetAddress peerAddress,
final boolean persistNode) {
if (isClosed.get()) {
LOG.error("Session Manager has already been closed.");
return;
}
- final NodeId nodeId = createNodeId(session.getRemoteAddress());
+ final NodeId nodeId = createNodeId(peerAddress);
nodes.remove(nodeId);
state.remove(nodeId);
if (nodeState != null) {
}
}
- @Override
- public final synchronized void bind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId,
+ final synchronized void bind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId,
final PcepSessionState sessionState) {
dependencies.getStateRegistry().bind(nodeId, sessionState);
}
- @Override
- public final synchronized void unbind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId) {
+ final synchronized void unbind(final KeyedInstanceIdentifier<Node, NodeKey> nodeId) {
dependencies.getStateRegistry().unbind(nodeId);
}