private final @NonNull ServiceGroupIdentifier serviceGroupIdent;
private final NetconfTopologySingletonImpl topologySingleton;
- private final RemoteDeviceId remoteDeviceId;
private volatile boolean closed;
+ private volatile boolean isMaster;
+
+ private RemoteDeviceId remoteDeviceId;
NetconfTopologyContext(final String topologyId, final NetconfClientDispatcher clientDispatcher,
final EventExecutor eventExecutor, final ScheduledThreadPool keepaliveExecutor,
@VisibleForTesting
protected NetconfTopologySingletonImpl getTopologySingleton() {
+ // FIXME we have to access topology singleton via this method because of mocking in MountPointEndToEndTest
return topologySingleton;
}
LOG.warn("Instance is already closed.");
return;
}
+ isMaster = true;
getTopologySingleton().becomeTopologyLeader();
}
return FluentFutures.immediateNullFluentFuture();
}
+ void refresh(final @NonNull NetconfTopologySetup setup) {
+ final var node = requireNonNull(setup).getNode();
+ remoteDeviceId = NetconfNodeUtils.toRemoteDeviceId(node.getNodeId(), node.augmentation(NetconfNode.class));
+
+ if (isMaster) {
+ getTopologySingleton().disconnectNode(setup.getNode().getNodeId());
+ getTopologySingleton().refreshSetupConnection(setup, remoteDeviceId);
+ } else {
+ getTopologySingleton().refreshDevice(setup, remoteDeviceId);
+ }
+ }
+
@Override
public ServiceGroupIdentifier getIdentifier() {
return serviceGroupIdent;