use of org.opendaylight.controller.cluster.dom.api.CDSDataTreeProducer in project controller by opendaylight.
the class DistributedShardedDOMDataTreeTest method testCDSDataTreeProducer.
@Test
public void testCDSDataTreeProducer() throws Exception {
initEmptyDatastores();
final DistributedShardRegistration reg1 = waitOnAsyncTask(leaderShardFactory.createDistributedShard(TEST_ID, Lists.newArrayList(AbstractTest.MEMBER_NAME)), DistributedShardedDOMDataTree.SHARD_FUTURE_TIMEOUT_DURATION);
leaderTestKit.waitUntilLeader(leaderDistributedDataStore.getActorContext(), ClusterUtils.getCleanShardName(TestModel.TEST_PATH));
assertNotNull(findLocalShard(leaderDistributedDataStore.getActorContext(), ClusterUtils.getCleanShardName(TestModel.TEST_PATH)));
final DOMDataTreeIdentifier configRoot = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY);
final DOMDataTreeProducer producer = leaderShardFactory.createProducer(Collections.singleton(configRoot));
assertTrue(producer instanceof CDSDataTreeProducer);
final CDSDataTreeProducer cdsProducer = (CDSDataTreeProducer) producer;
CDSShardAccess shardAccess = cdsProducer.getShardAccess(TEST_ID);
assertEquals(shardAccess.getShardIdentifier(), TEST_ID);
shardAccess = cdsProducer.getShardAccess(INNER_LIST_ID);
assertEquals(TEST_ID, shardAccess.getShardIdentifier());
shardAccess = cdsProducer.getShardAccess(configRoot);
assertEquals(configRoot, shardAccess.getShardIdentifier());
waitOnAsyncTask(reg1.close(), DistributedShardedDOMDataTree.SHARD_FUTURE_TIMEOUT_DURATION);
}
use of org.opendaylight.controller.cluster.dom.api.CDSDataTreeProducer in project controller by opendaylight.
the class PrefixLeaderHandler method makeLeaderLocal.
public ListenableFuture<RpcResult<Void>> makeLeaderLocal(final BecomePrefixLeaderInput input) {
final YangInstanceIdentifier yid = serializer.toYangInstanceIdentifier(input.getPrefix());
final DOMDataTreeIdentifier prefix = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, yid);
try (CDSDataTreeProducer producer = (CDSDataTreeProducer) domDataTreeService.createProducer(Collections.singleton(prefix))) {
final CDSShardAccess shardAccess = producer.getShardAccess(prefix);
final CompletionStage<Void> completionStage = shardAccess.makeLeaderLocal();
completionStage.exceptionally(throwable -> {
LOG.error("Leader movement failed.", throwable);
return null;
});
} catch (final DOMDataTreeProducerException e) {
LOG.warn("Error while closing producer", e);
} catch (final TimeoutException e) {
LOG.warn("Timeout while on producer operation", e);
Futures.immediateFuture(RpcResultBuilder.failed().withError(RpcError.ErrorType.RPC, "resource-denied-transport", "Timeout while opening producer please retry.", "clustering-it", "clustering-it", e));
}
return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
}
Aggregations