use of org.opendaylight.mdsal.binding.api.ReadTransaction in project netvirt by opendaylight.
the class EvpnMacVrfUtils method getElanNameByMacvrfiid.
public String getElanNameByMacvrfiid(InstanceIdentifier<MacVrfEntry> instanceIdentifier) {
try (ReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
String rd = instanceIdentifier.firstKeyOf(VrfTables.class).getRouteDistinguisher();
String elanName = null;
InstanceIdentifier<EvpnRdToNetwork> iidEvpnRdToNet = InstanceIdentifier.builder(EvpnRdToNetworks.class).child(EvpnRdToNetwork.class, new EvpnRdToNetworkKey(rd)).build();
try {
Optional<EvpnRdToNetwork> evpnRdToNetwork = tx.read(LogicalDatastoreType.CONFIGURATION, iidEvpnRdToNet).get();
if (evpnRdToNetwork.isPresent()) {
elanName = evpnRdToNetwork.get().getNetworkId();
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("getElanName: unable to read elanName, exception ", e);
}
return elanName;
}
}
use of org.opendaylight.mdsal.binding.api.ReadTransaction in project netvirt by opendaylight.
the class EvpnUtils method asyncReadAndExecute.
@SuppressWarnings({ "unchecked", "rawtypes" })
public <T extends DataObject> void asyncReadAndExecute(final LogicalDatastoreType datastoreType, final InstanceIdentifier<T> iid, final String jobKey, final Function<Optional<T>, Void> function) {
jobCoordinator.enqueueJob(jobKey, () -> {
SettableFuture<Optional<T>> settableFuture = SettableFuture.create();
List futures = Collections.singletonList(settableFuture);
try (ReadTransaction tx = broker.newReadOnlyTransaction()) {
Futures.addCallback(tx.read(datastoreType, iid), new SettableFutureCallback<Optional<T>>(settableFuture) {
@Override
public void onSuccess(Optional<T> data) {
function.apply(data);
super.onSuccess(data);
}
}, MoreExecutors.directExecutor());
return futures;
}
}, ElanConstants.JOB_MAX_RETRIES);
}
use of org.opendaylight.mdsal.binding.api.ReadTransaction in project netvirt by opendaylight.
the class NeutronvpnUtils method asyncReadAndExecute.
@SuppressWarnings({ "unchecked", "rawtypes" })
public <T extends DataObject> void asyncReadAndExecute(final LogicalDatastoreType datastoreType, final InstanceIdentifier<T> iid, final String jobKey, final Function<Optional<T>, Void> function) {
jobCoordinator.enqueueJob(jobKey, () -> {
SettableFuture<Optional<T>> settableFuture = SettableFuture.create();
List futures = Collections.singletonList(settableFuture);
try (ReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
Futures.addCallback(tx.read(datastoreType, iid), new SettableFutureCallback<Optional<T>>(settableFuture) {
@Override
public void onSuccess(Optional<T> data) {
function.apply(data);
super.onSuccess(data);
}
}, MoreExecutors.directExecutor());
return futures;
}
}, JOB_MAX_RETRIES);
}
use of org.opendaylight.mdsal.binding.api.ReadTransaction in project netvirt by opendaylight.
the class StatisticsImpl method checkPoolExists.
private boolean checkPoolExists() {
ReadTransaction roTransaction = db.newReadOnlyTransaction();
InstanceIdentifier<IdPool> path = InstanceIdentifier.create(IdPools.class).child(IdPool.class, new IdPoolKey(CountersServiceUtils.COUNTERS_PULL_NAME));
CheckedFuture<Optional<IdPool>, ReadFailedException> pool = roTransaction.read(LogicalDatastoreType.CONFIGURATION, path);
try {
Optional<IdPool> poolOpt = pool.get();
if (poolOpt.isPresent()) {
return true;
}
} catch (InterruptedException | ExecutionException e) {
return false;
} finally {
roTransaction.close();
}
return false;
}
use of org.opendaylight.mdsal.binding.api.ReadTransaction in project netvirt by opendaylight.
the class StatisticsImpl method getElementCountersByHandler.
@Override
public ListenableFuture<RpcResult<GetElementCountersByHandlerOutput>> getElementCountersByHandler(GetElementCountersByHandlerInput input) {
InstanceIdentifier<CounterRequests> ingressPath = InstanceIdentifier.builder(IngressElementCountersRequestConfig.class).child(CounterRequests.class, new CounterRequestsKey(input.getHandler())).build();
InstanceIdentifier<CounterRequests> egressPath = InstanceIdentifier.builder(EgressElementCountersRequestConfig.class).child(CounterRequests.class, new CounterRequestsKey(input.getHandler())).build();
ReadTransaction tx = db.newReadOnlyTransaction();
CheckedFuture<Optional<CounterRequests>, ReadFailedException> ingressRequestData = tx.read(LogicalDatastoreType.CONFIGURATION, ingressPath);
CheckedFuture<Optional<CounterRequests>, ReadFailedException> egressRequestData = tx.read(LogicalDatastoreType.CONFIGURATION, egressPath);
List<CounterResult> counters = new ArrayList<>();
try {
if (!ingressRequestData.get().isPresent() && !egressRequestData.get().isPresent()) {
LOG.warn("Handler does not exists");
return RpcResultBuilder.<GetElementCountersByHandlerOutput>failed().withError(ErrorType.APPLICATION, "Handler does not exists").buildFuture();
}
if (ingressRequestData.get().isPresent()) {
CounterRequests ingressCounterRequest = ingressRequestData.get().get();
CounterResultDataStructure ingressCounterResultDS = createElementCountersResult(ingressCounterRequest);
if (ingressCounterResultDS == null) {
LOG.warn("Unable to get counter results");
statisticsCounters.failedGettingCounterResults();
return RpcResultBuilder.<GetElementCountersByHandlerOutput>failed().withError(ErrorType.APPLICATION, "Unable to get counter results").buildFuture();
}
createCounterResults(counters, ingressCounterResultDS, CountersServiceUtils.INGRESS_COUNTER_RESULT_ID);
}
if (egressRequestData.get().isPresent()) {
CounterRequests egressCounterRequest = egressRequestData.get().get();
CounterResultDataStructure egressCounterResultDS = createElementCountersResult(egressCounterRequest);
if (egressCounterResultDS == null) {
LOG.warn("Unable to get counter results");
statisticsCounters.failedGettingCounterResults();
return RpcResultBuilder.<GetElementCountersByHandlerOutput>failed().withError(ErrorType.APPLICATION, "Unable to get counter results").buildFuture();
}
createCounterResults(counters, egressCounterResultDS, CountersServiceUtils.EGRESS_COUNTER_RESULT_ID);
}
} catch (InterruptedException | ExecutionException e) {
LOG.warn("failed to get counter request data from DB");
return RpcResultBuilder.<GetElementCountersByHandlerOutput>failed().withError(ErrorType.APPLICATION, "failed to get counter request data from DB").buildFuture();
} finally {
tx.close();
}
GetElementCountersByHandlerOutputBuilder gecbhob = new GetElementCountersByHandlerOutputBuilder();
gecbhob.setCounterResult(counters);
return RpcResultBuilder.success(gecbhob.build()).buildFuture();
}
Aggregations