private static final Timeout MESSAGE_TIMEOUT = new Timeout(1, TimeUnit.MINUTES);
private final DistributedDataStore datastore;
+ private final EntityOwnerSelectionStrategyConfig strategyConfig;
private final ConcurrentMap<Entity, Entity> registeredEntities = new ConcurrentHashMap<>();
private volatile ActorRef localEntityOwnershipShard;
private volatile DataTree localEntityOwnershipShardDataTree;
- public DistributedEntityOwnershipService(DistributedDataStore datastore) {
- this.datastore = datastore;
+ public DistributedEntityOwnershipService(DistributedDataStore datastore, EntityOwnerSelectionStrategyConfig strategyConfig) {
+ this.datastore = Preconditions.checkNotNull(datastore);
+ this.strategyConfig = Preconditions.checkNotNull(strategyConfig);
}
public void start() {
protected EntityOwnershipShard.Builder newShardBuilder() {
return EntityOwnershipShard.newBuilder().localMemberName(datastore.getActorContext().getCurrentMemberName())
- .ownerSelectionStrategyConfig(EntityOwnerSelectionStrategyConfig.newBuilder().build());
+ .ownerSelectionStrategyConfig(this.strategyConfig);
}
@VisibleForTesting
import com.google.common.base.Preconditions;
import org.opendaylight.controller.cluster.datastore.DistributedDataStore;
import org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipService;
+import org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfig;
import org.opendaylight.controller.sal.core.spi.data.DOMStore;
DOMStore dataStore = getDataStoreDependency();
Preconditions.checkArgument(dataStore instanceof DistributedDataStore,
"Injected DOMStore must be an instance of DistributedDataStore");
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService((DistributedDataStore)dataStore);
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService((DistributedDataStore)dataStore, EntityOwnerSelectionStrategyConfig.newBuilder().build());
service.start();
return service;
}
import org.opendaylight.controller.cluster.datastore.DatastoreContext;
import org.opendaylight.controller.cluster.datastore.DistributedDataStore;
import org.opendaylight.controller.cluster.datastore.IntegrationTestKit;
+import org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.EntityOwnerSelectionStrategyConfig;
import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper;
import org.opendaylight.controller.md.sal.common.api.clustering.Entity;
import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipListener;
follower1DistributedDataStore.waitTillReady();
follower2DistributedDataStore.waitTillReady();
- leaderEntityOwnershipService = new DistributedEntityOwnershipService(leaderDistributedDataStore);
+ leaderEntityOwnershipService = new DistributedEntityOwnershipService(leaderDistributedDataStore, EntityOwnerSelectionStrategyConfig.newBuilder().build());
leaderEntityOwnershipService.start();
- follower1EntityOwnershipService = new DistributedEntityOwnershipService(follower1DistributedDataStore);
+ follower1EntityOwnershipService = new DistributedEntityOwnershipService(follower1DistributedDataStore, EntityOwnerSelectionStrategyConfig.newBuilder().build());
follower1EntityOwnershipService.start();
- follower2EntityOwnershipService = new DistributedEntityOwnershipService(follower2DistributedDataStore);
+ follower2EntityOwnershipService = new DistributedEntityOwnershipService(follower2DistributedDataStore, EntityOwnerSelectionStrategyConfig.newBuilder().build());
follower2EntityOwnershipService.start();
leaderTestKit.waitUntilLeader(leaderDistributedDataStore.getActorContext(),
@Test
public void testEntityOwnershipShardCreated() throws Exception {
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore);
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build());
service.start();
Future<ActorRef> future = dataStore.getActorContext().findLocalShardAsync(
@Test
public void testRegisterCandidate() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testCloseCandidateRegistration() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testListenerRegistration() {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testGetOwnershipState() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;