import com.google.common.util.concurrent.FutureCallback;
import java.util.List;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.genius.infra.Datastore.Configuration;
-import org.opendaylight.genius.infra.TypedWriteTransaction;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore.Configuration;
+import org.opendaylight.mdsal.binding.util.TypedWriteTransaction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.RouterInterface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
public interface IFibManager {
void populateFibOnNewDpn(Uint64 dpnId, Uint32 vpnId, String rd,
- @Nullable FutureCallback<List<Void>> callback);
+ @Nullable FutureCallback<List<?>> callback);
void cleanUpExternalRoutesOnDpn(Uint64 dpnId, Uint32 vpnId, String rd,
String localNextHopIp, String remoteNextHopIp);
String localNextHopIp, String remoteNextHopIp);
void cleanUpDpnForVpn(Uint64 dpnId, Uint32 vpnId, String rd,
- @Nullable FutureCallback<List<Void>> callback);
+ @Nullable FutureCallback<List<?>> callback);
void setConfTransType(String service, String transportType);
<artifactId>mdsalutil-api</artifactId>
<version>${genius.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-util</artifactId>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>bgpmanager-api</artifactId>
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
import org.opendaylight.genius.mdsalutil.ActionInfo;
import org.opendaylight.genius.mdsalutil.FlowEntity;
import org.opendaylight.genius.mdsalutil.InstructionInfo;
import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
+import org.opendaylight.mdsal.binding.util.TransactionAdapter;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.netvirt.fibmanager.NexthopManager.AdjacencyResult;
import org.opendaylight.netvirt.fibmanager.api.FibHelper;
@Nullable List<InstructionInfo> instructions, int addOrRemove,
WriteTransaction tx, @Nullable List<SubTransaction> subTxns) {
if (tx == null) {
- LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- newTx -> makeConnectedRoute(dpId, vpnId, vrfEntry, rd, instructions, addOrRemove, newTx, subTxns)),
+ LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION,
+ newTx -> makeConnectedRoute(dpId, vpnId, vrfEntry, rd, instructions, addOrRemove,
+ TransactionAdapter.toWriteTransaction(newTx), subTxns)),
LOG, "Error making connected route");
return;
}
(before, after) -> {
LOG.info("programRemoteFib: waited for and got interface state {}", absentInterfaceStateIid);
LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- (wtx) -> programRemoteFib(remoteDpnId, vpnId, vrfEntry, wtx, rd, adjacencyResults, null)),
+ Datastore.CONFIGURATION,
+ (wtx) -> programRemoteFib(remoteDpnId, vpnId, vrfEntry,
+ TransactionAdapter.toWriteTransaction(wtx), rd, adjacencyResults, null)),
LOG, "Failed to program remote FIB {}", absentInterfaceStateIid);
return DataTreeEventCallbackRegistrar.NextAction.UNREGISTER;
},
(iid) -> {
LOG.error("programRemoteFib: timed out waiting for {}", absentInterfaceStateIid);
LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- (wtx) -> programRemoteFib(remoteDpnId, vpnId, vrfEntry, wtx, rd, adjacencyResults, null)),
+ Datastore.CONFIGURATION,
+ (wtx) -> programRemoteFib(remoteDpnId, vpnId, vrfEntry,
+ TransactionAdapter.toWriteTransaction(wtx), rd, adjacencyResults, null)),
LOG, "Failed to program timed-out remote FIB {}", absentInterfaceStateIid);
});
return;
final VrfEntry vrfEntry, Optional<Routes> extraRouteOptional,
@Nullable WriteTransaction tx) {
if (tx == null) {
- LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
+ LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION,
newTx -> deleteRemoteRoute(localDpnId, remoteDpnId, vpnId, vrfTableKey, vrfEntry,
- extraRouteOptional, newTx)), LOG, "Error deleting remote route");
+ extraRouteOptional, TransactionAdapter.toWriteTransaction(newTx))),
+ LOG, "Error deleting remote route");
return;
}
import javax.inject.Singleton;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
import org.opendaylight.genius.mdsalutil.ActionInfo;
import org.opendaylight.genius.mdsalutil.InstructionInfo;
import org.opendaylight.genius.mdsalutil.NwConstants;
import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
+import org.opendaylight.mdsal.binding.util.TransactionAdapter;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.netvirt.vpnmanager.api.VpnExtraRouteHelper;
import org.opendaylight.serviceutils.upgrade.UpgradeState;
WriteTransaction tx,
List<SubTransaction> subTxns) {
if (tx == null) {
- LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- newTx -> createRemoteFibEntry(remoteDpnId, vpnId, rd, vrfEntry, newTx, subTxns)), LOG,
+ LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION,
+ newTx -> createRemoteFibEntry(remoteDpnId, vpnId, rd, vrfEntry,
+ TransactionAdapter.toWriteTransaction(newTx), subTxns)), LOG,
"Error creating remote FIB entry");
return;
}
final VrfEntry vrfEntry, Optional<Routes> extraRouteOptional,
@Nullable WriteTransaction tx, List<SubTransaction> subTxns) {
if (tx == null) {
- LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
+ LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION,
newTx -> deleteRemoteRoute(localDpnId, remoteDpnId, vpnId, vrfTableKey, vrfEntry,
- extraRouteOptional, newTx)), LOG, "Error deleting remote route");
+ extraRouteOptional, TransactionAdapter.toWriteTransaction(newTx))),
+ LOG, "Error deleting remote route");
return;
}
*/
package org.opendaylight.netvirt.fibmanager;
-import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
+import static org.opendaylight.mdsal.binding.util.Datastore.CONFIGURATION;
import com.google.common.base.Preconditions;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
import org.opendaylight.genius.mdsalutil.ActionInfo;
import org.opendaylight.genius.mdsalutil.InstructionInfo;
import org.opendaylight.genius.mdsalutil.NwConstants;
import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
+import org.opendaylight.mdsal.binding.util.TransactionAdapter;
import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
import org.opendaylight.serviceutils.upgrade.UpgradeState;
new InstructionApplyActions(
Collections.singletonList(new ActionGroup(groupId))));
jobCoordinator.enqueueJob(jobKey,
- () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- tx -> makeConnectedRoute(dpnId, vpnId, vrfEntry, rd, instructions, NwConstants.ADD_FLOW, tx,
- null))));
+ () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION,
+ tx -> makeConnectedRoute(dpnId, vpnId, vrfEntry, rd, instructions, NwConstants.ADD_FLOW,
+ TransactionAdapter.toWriteTransaction(tx), null))));
return dpnId;
}
Map<VpnToDpnListKey, VpnToDpnList> keyVpnToDpnListMap = vpnInstance.nonnullVpnToDpnList();
if (keyVpnToDpnListMap != null) {
jobCoordinator.enqueueJob("FIB" + rd + vrfEntry.getDestPrefix(),
- () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
- for (VpnToDpnList vpnDpn : keyVpnToDpnListMap.values()) {
- if (!localDpnId.contains(vpnDpn.getDpnId())) {
- if (vpnDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
- createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(),
- vrfTableKey, vrfEntry, isNatPrefix, tx);
+ () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
+ Datastore.CONFIGURATION, tx -> {
+ for (VpnToDpnList vpnDpn : keyVpnToDpnListMap.values()) {
+ if (!localDpnId.contains(vpnDpn.getDpnId())) {
+ if (vpnDpn.getDpnState() == VpnToDpnList.DpnState.Active) {
+ createRemoteFibEntry(vpnDpn.getDpnId(), vpnInstance.getVpnId(),
+ vrfTableKey, vrfEntry, isNatPrefix,
+ TransactionAdapter.toWriteTransaction(tx));
+ }
}
}
- }
- })));
+ })));
}
}
List<SubTransaction> subTxns = new ArrayList<>();
if (keyVpnToDpnListMap != null) {
jobCoordinator.enqueueJob("FIB" + rd + vrfEntry.getDestPrefix(),
- () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
- final Optional<Routes> extraRouteOptional = Optional.empty();
- if (localDpnIdList.size() <= 0) {
- for (VpnToDpnList curDpn1 : keyVpnToDpnListMap.values()) {
- if (RouteOrigin.value(vrfEntry.getOrigin()) == RouteOrigin.BGP) {
- if (curDpn1.getDpnState() == VpnToDpnList.DpnState.Active) {
- bgpRouteVrfEntryHandler.deleteRemoteRoute(Uint64.ZERO,
- curDpn1.getDpnId(),
+ () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
+ Datastore.CONFIGURATION, tx -> {
+ final Optional<Routes> extraRouteOptional = Optional.empty();
+ if (localDpnIdList.size() <= 0) {
+ for (VpnToDpnList curDpn1 : keyVpnToDpnListMap.values()) {
+ if (RouteOrigin.value(vrfEntry.getOrigin()) == RouteOrigin.BGP) {
+ if (curDpn1.getDpnState() == VpnToDpnList.DpnState.Active) {
+ bgpRouteVrfEntryHandler.deleteRemoteRoute(Uint64.ZERO,
+ curDpn1.getDpnId(),
+ vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
+ extraRouteOptional, TransactionAdapter.toWriteTransaction(tx),
+ subTxns);
+ }
+ } else {
+ deleteRemoteRoute(Uint64.ZERO, curDpn1.getDpnId(),
vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
- extraRouteOptional, tx, subTxns);
+ extraRouteOptional, TransactionAdapter.toWriteTransaction(tx));
}
- } else {
- deleteRemoteRoute(Uint64.ZERO, curDpn1.getDpnId(),
- vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
- extraRouteOptional, tx);
}
- }
- } else {
- for (Uint64 localDpnId : localDpnIdList) {
- for (VpnToDpnList curDpn2 : keyVpnToDpnListMap.values()) {
- if (!Objects.equals(curDpn2.getDpnId(), localDpnId)) {
- if (RouteOrigin.value(vrfEntry.getOrigin()) == RouteOrigin.BGP) {
- if (curDpn2.getDpnState() == VpnToDpnList.DpnState.Active) {
- bgpRouteVrfEntryHandler.deleteRemoteRoute(localDpnId,
- curDpn2.getDpnId(),
+ } else {
+ for (Uint64 localDpnId : localDpnIdList) {
+ for (VpnToDpnList curDpn2 : keyVpnToDpnListMap.values()) {
+ if (!Objects.equals(curDpn2.getDpnId(), localDpnId)) {
+ if (RouteOrigin.value(vrfEntry.getOrigin()) == RouteOrigin.BGP) {
+ if (curDpn2.getDpnState() == VpnToDpnList.DpnState.Active) {
+ bgpRouteVrfEntryHandler.deleteRemoteRoute(localDpnId,
+ curDpn2.getDpnId(),
+ vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
+ extraRouteOptional,
+ TransactionAdapter.toWriteTransaction(tx), subTxns);
+ }
+ } else {
+ deleteRemoteRoute(localDpnId, curDpn2.getDpnId(),
vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
- extraRouteOptional, tx, subTxns);
+ extraRouteOptional, TransactionAdapter.toWriteTransaction(tx));
}
- } else {
- deleteRemoteRoute(localDpnId, curDpn2.getDpnId(),
- vpnInstance.getVpnId(), vrfTableKey, vrfEntry,
- extraRouteOptional, tx);
}
}
}
}
- }
- })));
+ })));
}
}
} else {
final Uint64 dpnId = localNextHopInfo.getDpnId();
jobCoordinator.enqueueJob("FIB-" + rd + "-" + vrfEntry.getDestPrefix(),
- () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(
- tx -> makeConnectedRoute(dpnId, vpnId, vrfEntry, rd, null, NwConstants.DEL_FLOW, tx,
- null))));
+ () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION,
+ tx -> makeConnectedRoute(dpnId, vpnId, vrfEntry, rd, null, NwConstants.DEL_FLOW,
+ TransactionAdapter.toWriteTransaction(tx), null))));
//TODO: verify below adjacency call need to be optimized (?)
deleteLocalAdjacency(dpnId, vpnId, vrfEntry.getDestPrefix(), vrfEntry.getDestPrefix());
returnLocalDpnId.add(dpnId);
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.inject.Singleton;
-import org.opendaylight.genius.infra.Datastore.Configuration;
-import org.opendaylight.genius.infra.TypedWriteTransaction;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore.Configuration;
+import org.opendaylight.mdsal.binding.util.TypedWriteTransaction;
import org.opendaylight.netvirt.fibmanager.api.IFibManager;
import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
import org.opendaylight.netvirt.vpnmanager.api.IVpnManager;
@Override
public void populateFibOnNewDpn(Uint64 dpnId, Uint32 vpnId, String rd,
- FutureCallback<List<Void>> callback) {
+ FutureCallback<List<?>> callback) {
vrfEntryListener.populateFibOnNewDpn(dpnId, vpnId, rd, callback);
}
@Override
public void cleanUpDpnForVpn(Uint64 dpnId, Uint32 vpnId, String rd,
- FutureCallback<List<Void>> callback) {
+ FutureCallback<List<?>> callback) {
vrfEntryListener.cleanUpDpnForVpn(dpnId, vpnId, rd, callback);
}
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.genius.datastoreutils.ExpectedDataObjectNotFoundException;
import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
-import org.opendaylight.genius.infra.Datastore.Configuration;
-import org.opendaylight.genius.infra.Datastore.Operational;
-import org.opendaylight.genius.infra.TypedReadTransaction;
-import org.opendaylight.genius.infra.TypedReadWriteTransaction;
-import org.opendaylight.genius.infra.TypedWriteTransaction;
import org.opendaylight.genius.itm.api.IITMProvider;
import org.opendaylight.genius.mdsalutil.BucketInfo;
import org.opendaylight.genius.mdsalutil.MDSALUtil;
import org.opendaylight.genius.utils.JvmGlobalLocks;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore.Configuration;
+import org.opendaylight.mdsal.binding.util.Datastore.Operational;
+import org.opendaylight.mdsal.binding.util.TypedReadTransaction;
+import org.opendaylight.mdsal.binding.util.TypedReadWriteTransaction;
+import org.opendaylight.mdsal.binding.util.TypedWriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.netvirt.fibmanager.NexthopManager.AdjacencyResult;
package org.opendaylight.netvirt.fibmanager;
import static java.util.stream.Collectors.toList;
-import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.genius.infra.Datastore.OPERATIONAL;
import static org.opendaylight.genius.mdsalutil.NWUtil.isIpv4Address;
+import static org.opendaylight.mdsal.binding.util.Datastore.CONFIGURATION;
+import static org.opendaylight.mdsal.binding.util.Datastore.OPERATIONAL;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.ListenableFuture;
import javax.inject.Singleton;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
import org.opendaylight.genius.itm.globals.ITMConstants;
import org.opendaylight.genius.mdsalutil.ActionInfo;
import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.netvirt.elanmanager.api.IElanService;
public void createDcGwLoadBalancingGroup(Uint64 dpnId, String destinationIp,
Class<? extends TunnelTypeBase> tunnelType) {
jobCoordinator.enqueueJob(FibHelper.getJobKeyForDcGwLoadBalancingGroup(dpnId), () -> {
- List<ListenableFuture<Void>> futures = new ArrayList<>();
+ List<ListenableFuture<?>> futures = new ArrayList<>();
futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, operationalTx -> {
synchronized (getDcGateWaySyncKey(destinationIp)) {
FibUtil.addL3vpnDcGateWay(destinationIp, operationalTx);
if (availableDcGws.contains(destinationIp)) {
availableDcGws.remove(destinationIp);
}
- List<ListenableFuture<Void>> futures = new ArrayList<>();
+ List<ListenableFuture<?>> futures = new ArrayList<>();
futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, operationalTx -> {
futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, configTx -> {
availableDcGws.forEach(dcGwIp -> {
if (availableDcGws.contains(destinationIp)) {
availableDcGws.remove(destinationIp);
}
- List<ListenableFuture<Void>> futures = new ArrayList<>();
+ List<ListenableFuture<?>> futures = new ArrayList<>();
futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, configTx -> {
availableDcGws.forEach(dcGwIp -> {
List<String> dcGws = Arrays.asList(dcGwIp, destinationIp);
*/
package org.opendaylight.netvirt.fibmanager;
-import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.genius.infra.Datastore.OPERATIONAL;
import static org.opendaylight.genius.mdsalutil.NWUtil.isIpv4Address;
+import static org.opendaylight.mdsal.binding.util.Datastore.CONFIGURATION;
+import static org.opendaylight.mdsal.binding.util.Datastore.OPERATIONAL;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar;
-import org.opendaylight.genius.infra.Datastore.Configuration;
-import org.opendaylight.genius.infra.Datastore.Operational;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
-import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.TransactionAdapter;
-import org.opendaylight.genius.infra.TypedReadWriteTransaction;
-import org.opendaylight.genius.infra.TypedWriteTransaction;
import org.opendaylight.genius.mdsalutil.ActionInfo;
import org.opendaylight.genius.mdsalutil.FlowEntity;
import org.opendaylight.genius.mdsalutil.InstructionInfo;
import org.opendaylight.infrautils.utils.concurrent.Executors;
import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.Datastore.Configuration;
+import org.opendaylight.mdsal.binding.util.Datastore.Operational;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
+import org.opendaylight.mdsal.binding.util.RetryingManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.TransactionAdapter;
+import org.opendaylight.mdsal.binding.util.TypedReadWriteTransaction;
+import org.opendaylight.mdsal.binding.util.TypedWriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.netvirt.elanmanager.api.IElanService;
import org.opendaylight.netvirt.fibmanager.NexthopManager.AdjacencyResult;
//Update the used rds and vpntoextraroute containers only for the deleted nextHops.
List<String> nextHopsRemoved = FibHelper.getNextHopListFromRoutePaths(original);
nextHopsRemoved.removeAll(FibHelper.getNextHopListFromRoutePaths(update));
- List<ListenableFuture<Void>> futures = new ArrayList<>();
- ListenableFuture<Void> configFuture =
+ List<ListenableFuture<?>> futures = new ArrayList<>();
+ ListenableFuture<?> configFuture =
txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, configTx ->
futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, operTx ->
nextHopsRemoved.parallelStream()
}
}))));
futures.add(configFuture);
- Futures.addCallback(configFuture, new FutureCallback<Void>() {
+ Futures.addCallback(configFuture, new FutureCallback<Object>() {
@Override
- public void onSuccess(Void result) {
+ public void onSuccess(Object result) {
createFibEntries(identifier, update);
LOG.info("UPDATE: Updated static Fib Entry with rd {} prefix {} route-paths {}",
rd, update.getDestPrefix(), update.getRoutePaths());
List<InstructionInfo> instructions = Lists.newArrayList(new InstructionApplyActions(actionInfos));
String jobKey = FibUtil.getCreateRemoteNextHopJobKey(vpnId, remoteDpnId, vrfEntry.getDestPrefix());
jobCoordinator.enqueueJob(jobKey,
- () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(txn -> {
- baseVrfEntryHandler.makeConnectedRoute(remoteDpnId, vpnId, vrfEntry, rd, instructions,
- NwConstants.ADD_FLOW, txn, null);
- })));
+ () -> Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION,
+ txn -> {
+ baseVrfEntryHandler.makeConnectedRoute(remoteDpnId, vpnId, vrfEntry, rd, instructions,
+ NwConstants.ADD_FLOW, TransactionAdapter.toWriteTransaction(txn), null);
+ })));
LOG.debug("Successfully added FIB entry for prefix {} in vpnId {}", vrfEntry.getDestPrefix(), vpnId);
}
}
@Override
- public List<ListenableFuture<Void>> call() {
+ public List<? extends ListenableFuture<?>> call() {
// If another renderer(for eg : CSS) needs to be supported, check can be performed here
// to call the respective helpers.
return Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, tx -> {
}
public void populateFibOnNewDpn(final Uint64 dpnId, final Uint32 vpnId, final String rd,
- final FutureCallback<List<Void>> callback) {
+ final FutureCallback<List<?>> callback) {
LOG.trace("New dpn {} for vpn {} : populateFibOnNewDpn", dpnId, rd);
jobCoordinator.enqueueJob(FibUtil.getJobKeyForVpnIdDpnId(vpnId, dpnId),
() -> {
final VpnInstanceOpDataEntry vpnInstance = fibUtil.getVpnInstance(rd);
final Optional<VrfTables> vrfTable = MDSALUtil.read(dataBroker,
LogicalDatastoreType.CONFIGURATION, id);
- List<ListenableFuture<Void>> futures = new ArrayList<>();
+ List<ListenableFuture<?>> futures = new ArrayList<>();
if (!vrfTable.isPresent()) {
LOG.info("populateFibOnNewDpn: dpn: {}: VRF Table not yet available for RD {}", dpnId, rd);
if (callback != null) {
- ListenableFuture<List<Void>> listenableFuture = Futures.allAsList(futures);
+ ListenableFuture<List<Object>> listenableFuture = Futures.allAsList(futures);
Futures.addCallback(listenableFuture, callback, MoreExecutors.directExecutor());
}
return futures;
}
}));
if (callback != null) {
- ListenableFuture<List<Void>> listenableFuture = Futures.allAsList(futures);
+ ListenableFuture<List<Object>> listenableFuture = Futures.allAsList(futures);
Futures.addCallback(listenableFuture, callback, MoreExecutors.directExecutor());
}
} finally {
}
public void cleanUpDpnForVpn(final Uint64 dpnId, final Uint32 vpnId, final String rd,
- final FutureCallback<List<Void>> callback) {
+ final FutureCallback<List<?>> callback) {
LOG.trace("cleanUpDpnForVpn: Remove dpn {} for vpn {} : cleanUpDpnForVpn", dpnId, rd);
jobCoordinator.enqueueJob(FibUtil.getJobKeyForVpnIdDpnId(vpnId, dpnId),
() -> {
List<SubTransaction> txnObjects = new ArrayList<>();
final Optional<VrfTables> vrfTable = MDSALUtil.read(dataBroker,
LogicalDatastoreType.CONFIGURATION, id);
- List<ListenableFuture<Void>> futures = new ArrayList<>();
+ List<ListenableFuture<?>> futures = new ArrayList<>();
if (!vrfTable.isPresent()) {
LOG.error("cleanUpDpnForVpn: VRF Table not available for RD {}", rd);
if (callback != null) {
- ListenableFuture<List<Void>> listenableFuture = Futures.allAsList(futures);
+ ListenableFuture<List<Object>> listenableFuture = Futures.allAsList(futures);
Futures.addCallback(listenableFuture, callback, MoreExecutors.directExecutor());
}
return futures;
lock.unlock();
}
if (callback != null) {
- ListenableFuture<List<Void>> listenableFuture = Futures.allAsList(futures);
+ ListenableFuture<List<Object>> listenableFuture = Futures.allAsList(futures);
Futures.addCallback(listenableFuture, callback, MoreExecutors.directExecutor());
}
return futures;
import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
import org.opendaylight.genius.infra.Datastore.Configuration;
import org.opendaylight.genius.infra.Datastore.Operational;
-import org.opendaylight.genius.infra.TypedReadTransaction;
import org.opendaylight.genius.mdsalutil.MDSALUtil;
import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.TypedReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeInputBuilder;
return extraRouteOptional;
}
- public static Optional<Routes> getVpnExtraroutes(TypedReadTransaction<Operational> operTx, String vpnName,
- String vpnRd, String destPrefix) throws ExecutionException, InterruptedException {
+ public static Optional<Routes> getVpnExtraroutes(TypedReadTransaction<Datastore.Operational> operTx,
+ String vpnName, String vpnRd, String destPrefix)
+ throws ExecutionException, InterruptedException {
return operTx.read(getVpnToExtrarouteVrfIdIdentifier(vpnName, vpnRd, destPrefix)).get();
}
.map(AllocatedRds::getRd).distinct().collect(toList()) : new ArrayList<>();
}
- public static List<String> getUsedRds(TypedReadTransaction<Configuration> confTx, Uint32 vpnId, String destPrefix)
+ public static List<String> getUsedRds(org.opendaylight.mdsal.binding.util
+ .TypedReadTransaction<Datastore.Configuration> confTx,
+ Uint32 vpnId, String destPrefix)
throws ExecutionException, InterruptedException {
Optional<DestPrefixes> usedRds = confTx.read(getUsedRdsIdentifier(vpnId, destPrefix)).get();
return usedRds.isPresent() && usedRds.get().getAllocatedRds() != null