From ae6ef5ce688a6aadc79537220ea75832020e6316 Mon Sep 17 00:00:00 2001 From: R P Karthika Date: Fri, 10 Apr 2020 00:00:00 +0530 Subject: [PATCH] MDSAL-API Migration 1)Change Futures to FluentFuture - Remove ReadFailedException - Replace TrnasactionCommitfailedException with Execution and Interrupted exception - submit() -> commit() - checkedGet() -> get() 2)Change org.opendaylight.controller.md.sal package to org.opendaylight.mdsal - Primarily databroker, all transactions - ReadOnlyTransaction -> ReadTransaction 3)Change com.google.common.base.Optional to java.util.Optional 4)Change serviceutils.tools.mdsal.listener to serviceutils.tools.listener Change-Id: I91f6178e1ef363d989cd19e2ab7048001e811ed7 Signed-off-by: R P Karthika --- .../AbstractAlivenessProtocolHandler.java | 4 +- .../internal/AlivenessProtocolHandlerARP.java | 4 +- .../AlivenessProtocolHandlerLLDP.java | 2 +- .../protocols/test/AlivenessMonitorTest.java | 4 +- .../internal/AlivenessMonitor.java | 2 +- arputil/arputil-impl/pom.xml | 2 +- cloudscaler/api/pom.xml | 8 +- .../api/TombstonedNodeManager.java | 2 +- cloudscaler/impl/pom.xml | 4 +- .../rpcservice/CloudscalerRpcServiceImpl.java | 65 ++--- .../rpcservice/ComputeNodeManager.java | 24 +- .../rpcservice/TombstonedNodeManagerImpl.java | 16 +- .../OSGI-INF/blueprint/cloudscaler.xml | 2 +- .../tests/CloudScalerServiceTest.java | 19 +- .../tests/CloudScalerServiceTestModule.java | 24 +- commons/testutils/pom.xml | 4 +- .../testutils/TestInterfaceManager.java | 20 +- .../interfacemanager/InterfaceHelper.java | 11 +- .../genius/idmanager/AvailableIdHolder.java | 4 +- .../genius/idmanager/IdHolder.java | 2 +- .../genius/idmanager/IdManager.java | 21 +- .../genius/idmanager/IdPoolListener.java | 6 +- .../genius/idmanager/IdUtils.java | 4 +- .../genius/idmanager/ReleasedIdHolder.java | 4 +- .../genius/idmanager/jobs/CleanUpJob.java | 14 +- .../idmanager/jobs/IdHolderSyncJob.java | 2 +- .../idmanager/jobs/LocalPoolCreateJob.java | 2 +- .../genius/idmanager/test/IdManagerTest.java | 16 +- .../idmanager/test/IdManagerTestModule.java | 25 +- .../globals/InterfaceServiceUtil.java | 27 +- .../interfaces/IInterfaceManager.java | 14 +- .../interfacemanager-impl/pom.xml | 4 + .../genius/interfacemanager/IfmUtil.java | 12 +- .../InterfacemgrProvider.java | 27 +- .../commons/AlivenessMonitorUtils.java | 10 +- .../commons/InterfaceManagerCommonUtils.java | 36 +-- .../commons/InterfaceMetaUtils.java | 34 +-- .../AlivenessMonitorListenerImpl.java | 4 +- .../CacheBridgeEntryConfigListener.java | 14 +- .../CacheBridgeRefEntryListener.java | 15 +- .../listeners/HwVTEPConfigListener.java | 6 +- .../listeners/HwVTEPTunnelsStateListener.java | 6 +- .../listeners/IfIndexInterfaceCache.java | 4 +- .../listeners/InterfaceChildCache.java | 10 +- .../listeners/InterfaceConfigListener.java | 6 +- .../InterfaceInventoryStateListener.java | 34 ++- .../listeners/InterfaceStateListener.java | 27 +- .../InterfaceTopologyStateListener.java | 32 +-- .../TerminationPointStateListener.java | 32 +-- .../listeners/VlanMemberConfigListener.java | 6 +- .../pmcounters/NodeConnectorStatsImpl.java | 32 +-- .../InterfaceInstanceRecoveryHandler.java | 4 +- .../HwVTEPInterfaceConfigAddHelper.java | 2 +- .../HwVTEPInterfaceConfigUpdateHelper.java | 2 +- .../HwVTEPInterfaceStateUpdateHelper.java | 2 +- .../hwvtep/utilities/SouthboundUtils.java | 8 +- .../OvsInterfaceConfigAddHelper.java | 4 +- .../OvsInterfaceConfigRemoveHelper.java | 2 +- .../OvsInterfaceConfigUpdateHelper.java | 2 +- .../OvsVlanMemberConfigAddHelper.java | 2 +- .../OvsVlanMemberConfigRemoveHelper.java | 2 +- .../OvsVlanMemberConfigUpdateHelper.java | 2 +- .../OvsInterfaceStateAddHelper.java | 2 +- .../OvsInterfaceStateUpdateHelper.java | 2 +- ...OvsInterfaceTopologyStateUpdateHelper.java | 2 +- .../renderer/ovs/utilities/BatchingUtils.java | 4 +- .../ovs/utilities/InterfaceBatchHandler.java | 12 +- .../ovs/utilities/SouthboundUtils.java | 8 +- .../InterfaceManagerServiceImpl.java | 8 +- ...owBasedEgressServicesConfigBindHelper.java | 2 +- ...BasedEgressServicesConfigUnbindHelper.java | 2 +- ...wBasedIngressServicesConfigBindHelper.java | 2 +- ...asedIngressServicesConfigUnbindHelper.java | 2 +- .../FlowBasedServicesConfigListener.java | 14 +- ...owBasedServicesInterfaceStateListener.java | 6 +- .../FlowBasedServicesNodeStateListener.java | 6 +- ...tractFlowBasedServicesStateBindHelper.java | 2 +- ...lowBasedEgressServicesStateBindHelper.java | 2 +- ...owBasedIngressServicesStateBindHelper.java | 2 +- .../utilities/FlowBasedServicesUtils.java | 15 +- .../InterfaceManagerConfigurationTest.java | 102 +++---- .../test/InterfaceManagerTestModule.java | 29 +- .../test/InterfaceManagerTestUtil.java | 49 ++-- .../test/OvsdbSouthboundTestUtil.java | 31 ++- .../interfacemanager/shell/ShowOvsPorts.java | 2 +- .../interfacemanager/shell/ShowVxlan.java | 2 +- .../genius/itm/api/IITMProvider.java | 6 +- itm/itm-impl/pom.xml | 8 +- .../genius/itm/cache/DPNTEPsInfoCache.java | 4 +- .../genius/itm/cache/DpnTepStateCache.java | 11 +- .../genius/itm/cache/OvsBridgeEntryCache.java | 4 +- .../itm/cache/OvsBridgeRefEntryCache.java | 4 +- .../genius/itm/cache/TunnelStateCache.java | 8 +- .../genius/itm/cli/TepCommandHelper.java | 28 +- .../ItmExternalTunnelAddWorker.java | 4 +- .../ItmExternalTunnelDeleteWorker.java | 2 +- .../ItmInternalTunnelAddWorker.java | 16 +- .../ItmInternalTunnelDeleteWorker.java | 8 +- .../ItmMonitorIntervalWorker.java | 6 +- .../confighelpers/ItmMonitorToggleWorker.java | 6 +- .../itm/confighelpers/ItmMonitorWorker.java | 9 +- .../itm/confighelpers/ItmTepAddWorker.java | 4 +- .../itm/confighelpers/ItmTepRemoveWorker.java | 2 +- .../ItmTepsNotHostedAddWorker.java | 5 +- .../ItmTepsNotHostedRemoveWorker.java | 2 +- .../ItmTunnelAggregationHelper.java | 8 +- .../ItmTunnelStateAddHelper.java | 2 +- .../OvsdbTepAddConfigHelper.java | 2 +- .../itm/confighelpers/OvsdbTepAddWorker.java | 2 +- .../OvsdbTepRemoveConfigHelper.java | 2 +- .../confighelpers/OvsdbTepRemoveWorker.java | 2 +- .../itm/diagstatus/ItmDiagStatusProvider.java | 1 - .../genius/itm/impl/ITMBatchingUtils.java | 11 +- .../genius/itm/impl/ItmCache.java | 1 - .../genius/itm/impl/ItmProvider.java | 10 +- .../genius/itm/impl/ItmUtils.java | 129 ++++----- .../itm/impl/TunnelMonitoringConfig.java | 8 +- .../listeners/InterfaceConfigListener.java | 6 +- .../listeners/InternalTunnelListener.java | 6 +- .../TerminationPointStateListener.java | 10 +- .../TunnelInventoryStateListener.java | 8 +- .../listeners/TunnelListenerCreator.java | 2 +- .../TunnelTopologyStateListener.java | 10 +- .../ovs/utilities/DirectTunnelUtils.java | 2 +- .../listeners/InterfaceChildInfoListener.java | 6 +- .../itm/listeners/InterfaceStateListener.java | 12 +- .../itm/listeners/OvsdbNodeListener.java | 6 +- .../itm/listeners/RemoteDpnListener.java | 6 +- .../itm/listeners/TransportZoneListener.java | 8 +- .../TunnelMonitorChangeListener.java | 8 +- .../TunnelMonitorIntervalListener.java | 8 +- .../cache/ExternalTunnelListener.java | 6 +- .../monitoring/ItmTunnelEventListener.java | 6 +- .../impl/ItmTepInstanceRecoveryHandler.java | 4 +- .../impl/ItmTzInstanceRecoveryHandler.java | 6 +- .../genius/itm/rpc/ItmManagerRpcService.java | 16 +- .../main/resources/OSGI-INF/blueprint/itm.xml | 2 +- .../genius/itm/cli/TepCommandHelperTest.java | 63 +++-- .../itm/impl/ItmExternalTunnelAddTest.java | 13 +- .../itm/impl/ItmExternalTunnelDeleteTest.java | 12 +- .../itm/impl/ItmInternalTunnelAddTest.java | 36 +-- .../itm/impl/ItmInternalTunnelDeleteTest.java | 30 +- .../itm/impl/ItmManagerRpcServiceTest.java | 30 +- .../itm/tests/ItmManagerRpcServiceTest.java | 91 ++++-- .../itm/tests/ItmTepAutoConfigTest.java | 262 ++++++++++++------ .../itm/tests/ItmTepAutoConfigTestUtil.java | 15 +- .../genius/itm/tests/ItmTestModule.java | 58 +++- .../genius/itm/tests/OvsdbTestUtil.java | 25 +- .../genius/lockmanager/impl/LockListener.java | 6 +- .../impl/LockManagerServiceImpl.java | 10 +- .../lockmanager/tests/LockManagerTest.java | 6 +- mdsalutil/mdsalutil-api/pom.xml | 27 +- ...ncClusteredDataTreeChangeListenerBase.java | 6 +- .../AsyncDataTreeChangeListenerBase.java | 14 +- ...leClusteredDataTreeChangeListenerBase.java | 10 +- .../ExpectedDataObjectNotFoundException.java | 6 +- .../SingleTransactionDataBroker.java | 74 +++-- ...ransactionCommitFailedExceptionMapper.java | 2 +- .../HwvtepAbstractDataTreeChangeListener.java | 21 +- ...HwvtepClusteredDataTreeChangeListener.java | 21 +- .../DataTreeEventCallbackRegistrar.java | 6 +- .../opendaylight/genius/infra/Datastore.java | 2 +- .../infra/ManagedNewTransactionRunner.java | 7 +- .../ManagedNewTransactionRunnerImpl.java | 21 +- .../infra/ManagedTransactionChainImpl.java | 4 +- .../infra/ManagedTransactionFactory.java | 9 +- .../infra/ManagedTransactionFactoryImpl.java | 11 +- ...nSubmitCancelableReadWriteTransaction.java | 2 +- .../NonSubmitCancelableWriteTransaction.java | 2 +- .../RetryingManagedNewTransactionRunner.java | 11 +- ...tryingManagedNewTransactionRunnerImpl.java | 14 +- .../genius/infra/TransactionAdapter.java | 71 +++-- .../genius/infra/TypedReadTransaction.java | 9 +- .../infra/TypedReadTransactionImpl.java | 4 +- .../infra/TypedReadWriteTransaction.java | 2 +- .../infra/TypedReadWriteTransactionImpl.java | 4 +- .../genius/infra/TypedTransaction.java | 2 +- .../genius/infra/TypedWriteTransaction.java | 6 +- .../infra/TypedWriteTransactionImpl.java | 2 +- .../WriteTrackingReadWriteTransaction.java | 14 +- ...TrackingTypedReadWriteTransactionImpl.java | 2 +- ...riteTrackingTypedWriteTransactionImpl.java | 2 +- .../infra/WriteTrackingWriteTransaction.java | 6 +- .../genius/mdsalutil/MDSALUtil.java | 27 +- .../opendaylight/genius/mdsalutil/NWUtil.java | 14 +- .../mdsalutil/actions/ActionNdOptionType.java | 1 - .../mdsalutil/actions/ActionNdReserved.java | 1 - .../mdsalutil/cache/DataObjectCache.java | 22 +- .../cache/InstanceIdDataObjectCache.java | 4 +- .../ericmatches/EricMatchInfoHelper.java | 1 - .../interfaces/IMdsalApiManager.java | 13 +- .../mdsalutil/nxmatches/NxMatchRegister.java | 1 - .../utils/batching/ActionableResource.java | 2 + .../utils/batching/ActionableResources.java | 6 + .../utils/batching/DefaultBatchHandler.java | 26 +- .../batching/ResourceBatchingManager.java | 39 ++- .../utils/batching/ResourceHandler.java | 13 +- .../genius/utils/hwvtep/HwvtepUtils.java | 96 ++++--- .../testutils/TestIMdsalApiManager.java | 12 +- .../batching/ResourceBatchingManagerTest.java | 8 +- mdsalutil/mdsalutil-impl/MdSalUtilTest.java | 10 +- mdsalutil/mdsalutil-impl/pom.xml | 17 +- .../DataTreeEventCallbackRegistrarImpl.java | 14 +- .../DatastoreServiceStatusProvider.java | 2 +- .../mdsalutil/internal/MDSALManager.java | 118 +++----- .../internal/MdSalUtilBatchHandler.java | 13 +- .../DataTreeEventCallbackRegistrarTest.java | 28 +- .../AbstractMockForwardingRulesManager.java | 5 +- .../mdsalutil/internal/MockFlowForwarder.java | 12 +- .../internal/MockGroupForwarder.java | 12 +- mdsalutil/mdsalutil-testutils/pom.xml | 13 +- ...actTestableJobCoordinatorEventsWaiter.java | 1 - .../testutils/DataBrokerFailures.java | 11 +- .../testutils/DataBrokerFailuresImpl.java | 29 +- .../testutils/DataBrokerFailuresModule.java | 26 +- ...stableDataTreeChangeDecoratorListener.java | 3 +- .../testutils/TestableDataBroker.java | 8 +- .../TestableDataTreeChangeListener.java | 2 +- .../TestableDataTreeChangeListenerModule.java | 4 +- ...ableJobCoordinatorCountedEventsWaiter.java | 1 - .../WrappingDataBrokerTestWiring.java | 11 +- .../tests/DataBrokerFailuresTest.java | 6 +- .../tests/TestableDataBrokerTest.java | 2 +- ...estableJobCoordinatorEventsWaiterTest.java | 1 - .../genius/infra/tests/DatastoreTest.java | 2 +- .../ManagedNewTransactionRunnerImplTest.java | 72 +++-- ...tryingManagedNewTransactionRunnerTest.java | 10 +- .../infra/tests/TransactionAdapterTest.java | 14 +- .../genius/networkutils/RDUtils.java | 7 +- .../genius/networkutils/VniUtils.java | 6 +- .../genius/networkutils/impl/RDUtilsImpl.java | 13 +- .../networkutils/impl/VniUtilsImpl.java | 13 +- .../networkutils/test/NetworkUtilTest.java | 8 +- .../test/NetworkUtilTestModule.java | 25 +- 234 files changed, 1863 insertions(+), 1495 deletions(-) diff --git a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AbstractAlivenessProtocolHandler.java b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AbstractAlivenessProtocolHandler.java index 169ae06ea..4a54f9a72 100644 --- a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AbstractAlivenessProtocolHandler.java +++ b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AbstractAlivenessProtocolHandler.java @@ -10,9 +10,9 @@ package org.opendaylight.genius.alivenessmonitor.protocols.internal; import static org.opendaylight.mdsal.binding.util.Datastore.OPERATIONAL; -import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.primitives.UnsignedBytes; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandler; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandlerRegistry; @@ -68,7 +68,7 @@ abstract class AbstractAlivenessProtocolHandler

implements Ali if (!Strings.isNullOrEmpty(macAddress)) { return Optional.of(parseMacAddress(macAddress)); } - return Optional.absent(); + return Optional.empty(); } private byte[] parseMacAddress(String macAddress) { diff --git a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerARP.java b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerARP.java index 708f251c7..4a073ac65 100644 --- a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerARP.java +++ b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerARP.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.alivenessmonitor.protocols.internal; import static org.opendaylight.genius.alivenessmonitor.protocols.AlivenessMonitorAndProtocolsConstants.SEPERATOR; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.google.common.util.concurrent.FutureCallback; @@ -19,6 +18,7 @@ import com.google.common.util.concurrent.MoreExecutors; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; @@ -189,7 +189,7 @@ public class AlivenessProtocolHandlerARP extends AbstractAlivenessProtocolHandle } private Optional getMacAddress(EndpointType source) { - Optional result = Optional.absent(); + Optional result = Optional.empty(); if (source instanceof Interface) { result = Optional.of(((Interface) source).getMacAddress()); } diff --git a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerLLDP.java b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerLLDP.java index 5b3992a87..ff7b32d22 100644 --- a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerLLDP.java +++ b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerLLDP.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.alivenessmonitor.protocols.internal; import static org.opendaylight.infrautils.utils.concurrent.LoggingFutures.addErrorLogging; -import com.google.common.base.Optional; import com.google.common.base.Strings; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.nio.charset.Charset; @@ -17,6 +16,7 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; import javax.inject.Inject; diff --git a/alivenessmonitor/alivenessmonitor-impl-protocols/src/test/java/org/opendaylight/genius/alivenessmonitor/protocols/test/AlivenessMonitorTest.java b/alivenessmonitor/alivenessmonitor-impl-protocols/src/test/java/org/opendaylight/genius/alivenessmonitor/protocols/test/AlivenessMonitorTest.java index 8d7e75ec3..370220da6 100644 --- a/alivenessmonitor/alivenessmonitor-impl-protocols/src/test/java/org/opendaylight/genius/alivenessmonitor/protocols/test/AlivenessMonitorTest.java +++ b/alivenessmonitor/alivenessmonitor-impl-protocols/src/test/java/org/opendaylight/genius/alivenessmonitor/protocols/test/AlivenessMonitorTest.java @@ -37,8 +37,6 @@ import org.mockito.Captor; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; -import org.opendaylight.controller.md.sal.binding.api.NotificationService; import org.opendaylight.genius.alivenessmonitor.internal.AlivenessMonitor; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandler; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandlerRegistry; @@ -46,6 +44,8 @@ import org.opendaylight.genius.alivenessmonitor.protocols.impl.AlivenessProtocol import org.opendaylight.genius.alivenessmonitor.protocols.internal.AlivenessProtocolHandlerARP; import org.opendaylight.genius.alivenessmonitor.protocols.internal.AlivenessProtocolHandlerLLDP; import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.NotificationPublishService; +import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.mdsal.binding.api.WriteTransaction; diff --git a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessMonitor.java b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessMonitor.java index 908985acc..e838dde35 100644 --- a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessMonitor.java +++ b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessMonitor.java @@ -45,7 +45,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandler; import org.opendaylight.genius.alivenessmonitor.protocols.AlivenessProtocolHandlerRegistry; import org.opendaylight.genius.alivenessmonitor.utils.AlivenessMonitorUtil; @@ -53,6 +52,7 @@ import org.opendaylight.genius.mdsalutil.packet.Ethernet; import org.opendaylight.genius.mdsalutil.packet.utils.PacketUtil; import org.opendaylight.infrautils.utils.concurrent.Executors; import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.mdsal.binding.util.Datastore.Operational; diff --git a/arputil/arputil-impl/pom.xml b/arputil/arputil-impl/pom.xml index aab5fb04c..499e73f40 100644 --- a/arputil/arputil-impl/pom.xml +++ b/arputil/arputil-impl/pom.xml @@ -86,8 +86,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.mdsal mdsal-binding-dom-adapter - test-jar test + test-jar org.opendaylight.genius diff --git a/cloudscaler/api/pom.xml b/cloudscaler/api/pom.xml index 445f00c58..c1436b27c 100644 --- a/cloudscaler/api/pom.xml +++ b/cloudscaler/api/pom.xml @@ -25,6 +25,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.mdsal yang-binding + + org.opendaylight.mdsal + mdsal-common-api + org.opendaylight.ovsdb southbound-api @@ -46,10 +50,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.openflowplugin.model model-flow-service - + commons-net commons-net diff --git a/cloudscaler/api/src/main/java/org/opendaylight/genius/cloudscaler/api/TombstonedNodeManager.java b/cloudscaler/api/src/main/java/org/opendaylight/genius/cloudscaler/api/TombstonedNodeManager.java index 4ba466fb5..5c90d6dbf 100644 --- a/cloudscaler/api/src/main/java/org/opendaylight/genius/cloudscaler/api/TombstonedNodeManager.java +++ b/cloudscaler/api/src/main/java/org/opendaylight/genius/cloudscaler/api/TombstonedNodeManager.java @@ -9,7 +9,7 @@ package org.opendaylight.genius.cloudscaler.api; import java.util.List; import java.util.function.Function; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.yang.common.Uint64; public interface TombstonedNodeManager { diff --git a/cloudscaler/impl/pom.xml b/cloudscaler/impl/pom.xml index a909df9c3..881bcb473 100644 --- a/cloudscaler/impl/pom.xml +++ b/cloudscaler/impl/pom.xml @@ -114,10 +114,10 @@ ${project.version} test - + org.opendaylight.mdsal mdsal-binding-test-utils diff --git a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java index 9ba27528d..2ba9a2ba3 100644 --- a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java +++ b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.cloudscaler.rpcservice; -import com.google.common.base.Optional; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -15,20 +14,21 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; +import java.util.Optional; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; -import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; +import org.opendaylight.infrautils.utils.concurrent.Executors; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.CloudscalerRpcService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.ScaleinComputesEndInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.ScaleinComputesEndOutput; @@ -84,7 +84,7 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { private final DataBroker dataBroker; private final ComputeNodeManager computeNodeManager; private final ManagedNewTransactionRunner txRunner; - private final ItmTepClusteredListener itmTepClusteredListener; + //private final ItmTepClusteredListener itmTepClusteredListener; //The following timestamp is not persisted across reboots //upon reboot the timestamp will have a default value of that system timestamp @@ -116,12 +116,7 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { this.dataBroker = dataBroker; this.computeNodeManager = computeNodeManager; this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); - this.itmTepClusteredListener = new ItmTepClusteredListener(dataBroker); - } - - @PostConstruct - public void init() { - itmTepClusteredListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + //this.itmTepClusteredListener = new ItmTepClusteredListener(dataBroker); } @Override @@ -132,8 +127,8 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { input.getScaleinComputeNames().forEach(s -> tombstoneTheNode(s, tx, true)); input.getScaleinComputeNames().forEach(s -> LOG.info("Cloudscaler scalein-start {}", s)); try { - tx.submit().checkedGet(); - } catch (TransactionCommitFailedException e) { + tx.commit().get(); + } catch (InterruptedException | ExecutionException e) { LOG.error("Failed to tombstone all the nodes ", e); ft.set(RpcResultBuilder.failed().withError(RpcError.ErrorType.APPLICATION, "Failed to tombstone all the nodes " + e.getMessage()).build()); @@ -151,8 +146,8 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { input.getRecoverComputeNames().forEach(s -> tombstoneTheNode(s, tx, false)); input.getRecoverComputeNames().forEach(s -> LOG.info("Cloudscaler scalein-recover {}", s)); try { - tx.submit().checkedGet(); - } catch (TransactionCommitFailedException e) { + tx.commit().get(); + } catch (InterruptedException | ExecutionException e) { LOG.error("Failed to recover all the nodes ", e); ft.set(RpcResultBuilder.failed().withError(RpcError.ErrorType.APPLICATION, "Failed to recover all the nodes " + e.getMessage()).build()); @@ -275,13 +270,13 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { @SuppressWarnings("checkstyle:IllegalCatch") public ListenableFuture> scaleinComputesTepDelete( ScaleinComputesTepDeleteInput input) { - ReadOnlyTransaction readTx = this.dataBroker.newReadOnlyTransaction(); + ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction(); SettableFuture> ft = SettableFuture.create(); Optional tz; try { tz = readTx.read(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(TransportZones.class)) - .checkedGet(); - } catch (ReadFailedException e) { + .get(); + } catch (InterruptedException | ExecutionException e) { LOG.error("Cloudscaler Failed to read the transport zone {}", e.getMessage()); ft.set(RpcResultBuilder.failed().withError(RpcError.ErrorType.APPLICATION, "Failed to read the transport zone " + e.getMessage()).build()); @@ -340,36 +335,26 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { return ft; } - class ItmTepClusteredListener extends AsyncClusteredDataTreeChangeListenerBase { + class ItmTepClusteredListener extends AbstractClusteredAsyncDataTreeChangeListener { @Inject ItmTepClusteredListener(DataBroker dataBroker) { - super(Vteps.class, ItmTepClusteredListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL,InstanceIdentifier.create(TransportZones.class) + .child(TransportZone.class).child(Vteps.class), + Executors.newSingleThreadExecutor("ItmTepClusteredListener", LOG)); } @Override - public InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(TransportZones.class) - .child(TransportZone.class) - .child(Vteps.class); - } - - @Override - protected void remove(InstanceIdentifier instanceIdentifier, Vteps tep) { + public void remove(InstanceIdentifier instanceIdentifier, Vteps tep) { tepDeleteTimeStamp.put(tep.getDpnId(), System.currentTimeMillis()); } @Override - protected void update(InstanceIdentifier instanceIdentifier, Vteps vteps, Vteps t1) { - } - - @Override - protected void add(InstanceIdentifier instanceIdentifier, Vteps vteps) { + public void update(InstanceIdentifier instanceIdentifier, Vteps vteps, Vteps t1) { } @Override - protected ItmTepClusteredListener getDataTreeChangeListener() { - return ItmTepClusteredListener.this; + public void add(InstanceIdentifier instanceIdentifier, Vteps vteps) { } } } diff --git a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java index 84943c60c..e30a19e8e 100644 --- a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java +++ b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java @@ -12,18 +12,18 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.ComputeNodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.compute.nodes.ComputeNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.compute.nodes.ComputeNodeBuilder; @@ -96,14 +96,14 @@ public class ComputeNodeManager { public ComputeNode getComputeNodeFromName(String computeName) throws ReadFailedException { InstanceIdentifier computeIid = buildComputeNodeIid(computeName); - return computeNodeCache.get(computeIid).orNull(); + return computeNodeCache.get(computeIid).orElse(null); } public void deleteComputeNode(ReadWriteTransaction tx, ComputeNode computeNode) { tx.delete(LogicalDatastoreType.CONFIGURATION, buildComputeNodeIid(computeNode.getComputeName())); } - public void add(@NonNull Node node) throws TransactionCommitFailedException { + public void add(@NonNull Node node) throws ExecutionException, InterruptedException { OvsdbBridgeAugmentation bridgeAugmentation = node.augmentation(OvsdbBridgeAugmentation.class); if (bridgeAugmentation != null && bridgeAugmentation.getBridgeOtherConfigs() != null) { Uint64 datapathid = getDpnIdFromBridge(bridgeAugmentation); @@ -123,7 +123,7 @@ public class ComputeNodeManager { .setDpnid(datapathid) .setNodeid(nodeId) .build(); - com.google.common.base.Optional computeNodeOptional = com.google.common.base.Optional.absent(); + Optional computeNodeOptional = Optional.empty(); try { computeNodeOptional = computeNodeCache.get(computeIid); } catch (ReadFailedException e) { @@ -154,17 +154,17 @@ public class ComputeNodeManager { } public void putComputeDetailsInConfigDatastore(InstanceIdentifier computeIid, - ComputeNode computeNode) throws TransactionCommitFailedException { + ComputeNode computeNode) + throws ExecutionException, InterruptedException { ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); tx.put(LogicalDatastoreType.CONFIGURATION, computeIid, computeNode); - tx.submit().checkedGet(); + tx.commit().get(); dpnIdVsComputeNode.put(computeNode.getDpnid(), computeNode); //LOG.info("Write comute node details {}", computeNode); } - private void logErrorIfComputeNodeIsAlreadyTaken(Uint64 datapathid, String nodeId, - com.google.common.base.Optional optional) { + private void logErrorIfComputeNodeIsAlreadyTaken(Uint64 datapathid, String nodeId, Optional optional) { ComputeNode existingNode = optional.get(); if (!Objects.equals(existingNode.getNodeid(), nodeId)) { LOG.error("ComputeNodeManager Compute is already connected by compute {}", existingNode); diff --git a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/TombstonedNodeManagerImpl.java b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/TombstonedNodeManagerImpl.java index c3d7ac214..685daea18 100644 --- a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/TombstonedNodeManagerImpl.java +++ b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/TombstonedNodeManagerImpl.java @@ -16,13 +16,12 @@ import java.util.stream.Collectors; import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.cloudscaler.api.TombstonedNodeManager; import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.ComputeNodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.compute.nodes.ComputeNode; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -78,7 +77,7 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { } @Override - public boolean isDpnTombstoned(Uint64 dpnId) throws ReadFailedException { + public boolean isDpnTombstoned(Uint64 dpnId) { if (dpnId == null) { return false; } @@ -95,14 +94,9 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { } @Override - public List filterTombStoned(List dpns) throws ReadFailedException { + public List filterTombStoned(List dpns) { return dpns.stream().filter((dpn) -> { - try { - return !isDpnTombstoned(dpn); - } catch (ReadFailedException e) { - LOG.error("Failed to read {}", dpn); - return true; - } + return !isDpnTombstoned(dpn); }).collect(Collectors.toList()); } } diff --git a/cloudscaler/impl/src/main/resources/OSGI-INF/blueprint/cloudscaler.xml b/cloudscaler/impl/src/main/resources/OSGI-INF/blueprint/cloudscaler.xml index b3fc35967..597c435a2 100644 --- a/cloudscaler/impl/src/main/resources/OSGI-INF/blueprint/cloudscaler.xml +++ b/cloudscaler/impl/src/main/resources/OSGI-INF/blueprint/cloudscaler.xml @@ -4,7 +4,7 @@ odl:use-default-for-reference-types="true"> > ft = scaleInRpcManager.scaleinComputesStart( new ScaleinComputesStartInputBuilder().setScaleinComputeNames( @@ -209,7 +208,7 @@ public class CloudScalerServiceTest { } @Test public void testScaleinComputesRecoverRpc() - throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { + throws ExecutionException, InterruptedException, TransactionCommitFailedException { testScaleinComputesStartRpc(); @@ -224,7 +223,7 @@ public class CloudScalerServiceTest { } @Test public void testIsDpnTombstonedApi() - throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { + throws ExecutionException, InterruptedException, TransactionCommitFailedException { testScaleinComputesStartRpc(); assertTrue("Dpn 1 should be marked as tombstoned", tombstonedNodeManager.isDpnTombstoned(DPN1)); @@ -232,7 +231,7 @@ public class CloudScalerServiceTest { } @Test public void testfilterTombstoned() - throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { + throws ExecutionException, InterruptedException, TransactionCommitFailedException { testScaleinComputesStartRpc(); List filtered = tombstonedNodeManager.filterTombStoned(Lists.newArrayList(DPN1, DPN2, DPN3, DPN4)); @@ -241,7 +240,7 @@ public class CloudScalerServiceTest { } @Test public void testRecoveryCallback() - throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { + throws ExecutionException, InterruptedException, TransactionCommitFailedException { Set nodesRecoverd = new HashSet<>(); tombstonedNodeManager.addOnRecoveryCallback((dpnId) -> { diff --git a/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTestModule.java b/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTestModule.java index 5e6cecede..70051b24e 100644 --- a/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTestModule.java +++ b/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTestModule.java @@ -7,20 +7,36 @@ */ package org.opendaylight.genius.cloudscaler.tests; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.concurrent.Executors; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.caches.baseimpl.CacheManagersRegistry; import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl; import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider; import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; public class CloudScalerServiceTestModule extends AbstractGuiceJsr250Module { @Override - protected void configureBindings() { - DataBroker dataBroker = DataBrokerTestModule.dataBroker(); + protected void configureBindings() throws Exception { + AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker(); bind(DataBroker.class).toInstance(dataBroker); bind(CacheManagersRegistry.class).to(CacheManagersRegistryImpl.class); bind(CacheProvider.class).to(GuavaCacheProvider.class); diff --git a/commons/testutils/pom.xml b/commons/testutils/pom.xml index cc3600dac..e12c57955 100644 --- a/commons/testutils/pom.xml +++ b/commons/testutils/pom.xml @@ -67,7 +67,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html mdsal-binding-test-utils compile - + org.opendaylight.genius mdsalutil-api diff --git a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestInterfaceManager.java b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestInterfaceManager.java index 62b995786..743a707ad 100644 --- a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestInterfaceManager.java +++ b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestInterfaceManager.java @@ -12,16 +12,16 @@ import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrExc import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.testutils.interfacemanager.InterfaceHelper; import org.opendaylight.genius.testutils.interfacemanager.InterfaceStateHelper; import org.opendaylight.genius.testutils.interfacemanager.TunnelInterfaceDetails; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yangtools.yang.common.Uint64; @@ -58,10 +58,10 @@ public abstract class TestInterfaceManager implements IInterfaceManager { } public void addInterfaceInfo(InterfaceInfo interfaceInfo) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { interfaceInfos.put(interfaceInfo.getInterfaceName(), interfaceInfo); if (optDataBroker.isPresent()) { - // Can't use ifPresent() here because of checked exception from tx.submit().checkedGet(); + // Can't use ifPresent() here because of checked exception from tx.commit().get(); DataBroker dataBroker = optDataBroker.get(); ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); @@ -75,7 +75,7 @@ public abstract class TestInterfaceManager implements IInterfaceManager { tx.put(LogicalDatastoreType.OPERATIONAL, InterfaceStateHelper.buildStateInterfaceIid(interfaceInfo.getInterfaceName()), InterfaceStateHelper.buildStateFromInterfaceInfo(interfaceInfo)); - tx.submit().checkedGet(); + tx.commit().get(); addInterface(iface); } } @@ -85,12 +85,12 @@ public abstract class TestInterfaceManager implements IInterfaceManager { } public void addTunnelInterface(TunnelInterfaceDetails tunnelInterfaceDetails) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { InterfaceInfo interfaceInfo = tunnelInterfaceDetails.getInterfaceInfo(); interfaceInfos.put(interfaceInfo.getInterfaceName(), interfaceInfo); if (optDataBroker.isPresent()) { - // Can't use ifPresent() here because of checked exception from tx.submit().checkedGet(); + // Can't use ifPresent() here because of checked exception from tx.commit().get(); DataBroker dataBroker = optDataBroker.get(); Interface iface = InterfaceHelper.buildVxlanTunnelInterfaceFromInfo(tunnelInterfaceDetails); @@ -103,7 +103,7 @@ public abstract class TestInterfaceManager implements IInterfaceManager { tx.put(LogicalDatastoreType.OPERATIONAL, InterfaceStateHelper.buildStateInterfaceIid(interfaceInfo.getInterfaceName()), InterfaceStateHelper.buildStateFromInterfaceInfo(interfaceInfo)); - tx.submit().checkedGet(); + tx.commit().get(); externalInterfaces.put(interfaceInfo.getInterfaceName(), true); addInterface(iface); } diff --git a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceHelper.java b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceHelper.java index 713476940..5bc908b00 100644 --- a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceHelper.java +++ b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceHelper.java @@ -8,12 +8,12 @@ package org.opendaylight.genius.testutils.interfacemanager; import java.util.Collections; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import java.util.concurrent.ExecutionException; +import org.opendaylight.genius.datastoreutils.ExpectedDataObjectNotFoundException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; @@ -44,7 +44,8 @@ public final class InterfaceHelper { } public static Interface readInterfaceFromConfigDs(String interfaceName, - DataBroker dataBroker) throws ReadFailedException { + DataBroker dataBroker) throws + ExecutionException, InterruptedException, ExpectedDataObjectNotFoundException { return SingleTransactionDataBroker.syncRead( dataBroker, LogicalDatastoreType.CONFIGURATION, diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/AvailableIdHolder.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/AvailableIdHolder.java index 057c312de..318ab83dc 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/AvailableIdHolder.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/AvailableIdHolder.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.idmanager; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPoolBuilder; @@ -34,7 +34,7 @@ public class AvailableIdHolder implements IdHolder { return Optional.of(id); } } - return Optional.absent(); + return Optional.empty(); } @Override diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdHolder.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdHolder.java index 6bfbf6dfd..70f95e723 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdHolder.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdHolder.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.idmanager; -import com.google.common.base.Optional; +import java.util.Optional; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPoolBuilder; public interface IdHolder { diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdManager.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdManager.java index f0c032248..302d885b1 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdManager.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdManager.java @@ -9,11 +9,10 @@ package org.opendaylight.genius.idmanager; import static java.util.Comparator.comparing; import static java.util.stream.Collectors.toCollection; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.yangtools.yang.binding.CodeHelpers.nonnull; -import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -24,6 +23,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.CompletableFuture; @@ -37,9 +37,6 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.daexim.DataImportBootReady; import org.opendaylight.genius.datastoreutils.ExpectedDataObjectNotFoundException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; @@ -56,6 +53,9 @@ import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.serviceutils.tools.rpc.FutureRpcResults; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput; @@ -157,7 +157,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { try { idPoolsOptional = singleTxDB.syncReadOptional(LogicalDatastoreType.CONFIGURATION, idPoolsInstance); break; - } catch (ReadFailedException e) { + } catch (ExecutionException e) { LOG.error("Failed to read the id pools due to error. Retrying again...", e); } Thread.sleep(2000); @@ -304,7 +304,8 @@ public class IdManager implements IdManagerService, IdManagerMonitor { } private List allocateIdFromLocalPool(String parentPoolName, String localPoolName, - String idKey, long size) throws OperationFailedException, IdManagerException { + String idKey, long size) throws OperationFailedException, IdManagerException, ExecutionException, + InterruptedException { LOG.debug("Allocating id from local pool {}. Parent pool {}. Idkey {}", localPoolName, parentPoolName, idKey); String uniqueIdKey = idUtils.getUniqueKey(parentPoolName, idKey); CompletableFuture> futureIdValues = new CompletableFuture<>(); @@ -562,7 +563,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { } private ReleaseIdOutputBuilder releaseIdFromLocalPool(String parentPoolName, String localPoolName, String idKey) - throws ReadFailedException, IdManagerException { + throws IdManagerException, ReadFailedException, ExecutionException, InterruptedException { String idLatchKey = idUtils.getUniqueKey(parentPoolName, idKey); LOG.debug("Releasing ID {} from pool {}", idKey, localPoolName); CountDownLatch latch = idUtils.getReleaseIdLatch(idLatchKey); @@ -687,7 +688,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { private List checkForIdInIdEntries(String parentPoolName, String idKey, String uniqueIdKey, CompletableFuture> futureIdValues, boolean hasExistingFutureIdValues) - throws IdManagerException, ReadFailedException { + throws IdManagerException, InterruptedException , ExecutionException { InstanceIdentifier parentIdPoolInstanceIdentifier = idUtils.getIdPoolInstance(parentPoolName); InstanceIdentifier existingId = idUtils.getIdEntry(parentIdPoolInstanceIdentifier, idKey); idUtils.lock(lockManager, uniqueIdKey); @@ -727,7 +728,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { updateLocalIdPoolCache(childIdPoolOpt.get(), parentPoolName); } } - catch (ReadFailedException ex) { + catch (ExecutionException | InterruptedException ex) { LOG.debug("Failed to read id pool {} due to {}", localPoolName, ex.getMessage()); } if (localPool.get(parentPoolName) == null) { diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdPoolListener.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdPoolListener.java index ce4cc9b99..994c744c9 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdPoolListener.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdPoolListener.java @@ -13,10 +13,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.infrautils.utils.concurrent.Executors; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredAsyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdPools; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdUtils.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdUtils.java index c733d6428..1fefd680d 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdUtils.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdUtils.java @@ -8,15 +8,15 @@ package org.opendaylight.genius.idmanager; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.net.InetAddresses; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/ReleasedIdHolder.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/ReleasedIdHolder.java index 6079c066c..509c7fe4b 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/ReleasedIdHolder.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/ReleasedIdHolder.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.idmanager; -import com.google.common.base.Optional; import java.io.Serializable; import java.util.List; +import java.util.Optional; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicLong; import org.eclipse.jdt.annotation.NonNull; @@ -65,7 +65,7 @@ public class ReleasedIdHolder implements IdHolder { @Override public Optional allocateId() { long curTimeSec = System.currentTimeMillis() / 1000; - Optional allocatedId = Optional.absent(); + Optional allocatedId = Optional.empty(); if (isIdAvailable(curTimeSec)) { Long count = availableIdCount.decrementAndGet(); if (count < 0L) { diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/CleanUpJob.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/CleanUpJob.java index f13df451f..4ec0b2155 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/CleanUpJob.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/CleanUpJob.java @@ -7,17 +7,14 @@ */ package org.opendaylight.genius.idmanager.jobs; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import java.util.concurrent.ExecutionException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.idmanager.IdLocalPool; import org.opendaylight.genius.idmanager.IdManagerException; @@ -25,6 +22,9 @@ import org.opendaylight.genius.idmanager.IdUtils; import org.opendaylight.genius.idmanager.ReleasedIdHolder; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolderBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; @@ -65,7 +65,7 @@ public class CleanUpJob implements Callable>> { } private void cleanupExcessIds() - throws IdManagerException, ReadFailedException, TransactionCommitFailedException { + throws IdManagerException, TransactionCommitFailedException, ExecutionException , InterruptedException { // We can update the availableCount here... and update it in DS using IdHolderSyncJob long totalAvailableIdCount = idLocalPool.getAvailableIds().getAvailableIdCount() + idLocalPool.getReleasedIds().getAvailableIdCount(); diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/IdHolderSyncJob.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/IdHolderSyncJob.java index 401c8ecf4..000c45269 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/IdHolderSyncJob.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/IdHolderSyncJob.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.idmanager.jobs; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/LocalPoolCreateJob.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/LocalPoolCreateJob.java index 47e2a3045..bf1911376 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/LocalPoolCreateJob.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/LocalPoolCreateJob.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.idmanager.jobs; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTest.java b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTest.java index 559558367..4c0b1c038 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTest.java +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTest.java @@ -15,12 +15,12 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import com.google.common.base.Optional; import com.google.common.collect.Sets; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; @@ -35,10 +35,6 @@ import org.junit.ComparisonFailure; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.testutils.AsyncEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorEventsWaiter; @@ -49,7 +45,11 @@ import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.binding.testutils.AssertDataObjects; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput; @@ -176,7 +176,7 @@ public class IdManagerTest { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(ID_POOL_NAME), parentIdPool); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(localPoolName), childPool); - tx.submit().get(); + tx.commit().get(); AllocateIdInput allocateIdInput2 = new AllocateIdInputBuilder().setIdKey(TEST_KEY1).setPoolName(ID_POOL_NAME) .build(); @@ -244,7 +244,7 @@ public class IdManagerTest { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(ID_POOL_NAME), parentIdPool); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(localPoolName), childPool); - tx.submit().get(); + tx.commit().get(); // Wait for the changes to be available on the caches. asyncEventsWaiter.awaitEventsConsumption(); requestIdsConcurrently(false); @@ -296,7 +296,7 @@ public class IdManagerTest { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(ID_POOL_NAME), parentIdPool); tx.merge(LogicalDatastoreType.CONFIGURATION, getIdPoolIdentifier(localPoolName), childPool); - tx.submit().get(); + tx.commit().get(); requestIdsConcurrently(true); coordinatorEventsWaiter.awaitEventsConsumption(); diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTestModule.java b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTestModule.java index dfd0f035b..19c2dc06a 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTestModule.java +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/IdManagerTestModule.java @@ -7,8 +7,6 @@ */ package org.opendaylight.genius.idmanager.test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; import org.opendaylight.daexim.DataImportBootReady; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.TestableJobCoordinatorEventsWaiter; @@ -19,6 +17,8 @@ import org.opendaylight.genius.lockmanager.impl.LockManagerServiceImpl; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.genius.mdsalutil.interfaces.testutils.TestIMdsalApiManager; import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; @@ -26,7 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041 public class IdManagerTestModule extends AbstractGuiceJsr250Module { @Override - protected void configureBindings() { + protected void configureBindings() throws Exception { bind(DataImportBootReady.class).toInstance(new DataImportBootReady() {}); bind(IdManagerService.class).to(IdManager.class); bind(LockManagerService.class).to(LockManagerServiceImpl.class); @@ -36,7 +36,24 @@ public class IdManagerTestModule extends AbstractGuiceJsr250Module { bind(LockListener.class); bind(IdPoolListener.class); bind(JobCoordinatorEventsWaiter.class).to(TestableJobCoordinatorEventsWaiter.class); - DataBroker dataBroker = DataBrokerTestModule.dataBroker(); + + /*AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker();*/ + /***************/ + AbstractConcurrentDataBrokerTest dataBrokerTest = new AbstractConcurrentDataBrokerTest(false) {}; + dataBrokerTest.setup(); + DataBroker dataBroker = dataBrokerTest.getDataBroker(); bind(DataBroker.class).toInstance(dataBroker); } } diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceServiceUtil.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceServiceUtil.java index f5e8befb9..18dce29cc 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceServiceUtil.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceServiceUtil.java @@ -7,14 +7,15 @@ */ package org.opendaylight.genius.interfacemanager.globals; -import com.google.common.base.Optional; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.Set; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; + +import java.util.concurrent.ExecutionException; +import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.FlowInfoKey; import org.opendaylight.genius.mdsalutil.GroupInfoKey; import org.opendaylight.genius.mdsalutil.MDSALUtil; @@ -24,6 +25,8 @@ import org.opendaylight.genius.mdsalutil.MetaDataUtil; import org.opendaylight.genius.mdsalutil.matches.MatchInPort; import org.opendaylight.genius.mdsalutil.matches.MatchMetadata; import org.opendaylight.genius.mdsalutil.matches.MatchVlanVid; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; @@ -40,7 +43,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.ser import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServicesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServicesKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint64; +import org.opendaylight.yangtools.yang.common.Uint8; public final class InterfaceServiceUtil { @@ -53,7 +58,7 @@ public final class InterfaceServiceUtil { * @deprecated Use {@link #buildServiceInfo(String, int)}. */ @Deprecated - public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, int servicePriority, + public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, Uint8 servicePriority, Uint64 cookie, List instructions) { return buildServiceInfo(serviceName, servicePriority); } @@ -64,20 +69,20 @@ public final class InterfaceServiceUtil { * @deprecated Use {@link #buildServiceInfo(String, int)}. */ @Deprecated - public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, int servicePriority, + public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, Uint8 servicePriority, Uint64 cookie) { return buildServiceInfo(serviceName, servicePriority); } - public static ServicesInfo buildServiceInfo(String serviceName, int servicePriority) { + public static ServicesInfo buildServiceInfo(String serviceName, Uint8 servicePriority) { List boundService = new ArrayList<>(); - boundService.add(new BoundServicesBuilder().setServicePriority((short) servicePriority) + boundService.add(new BoundServicesBuilder().setServicePriority(servicePriority) .setServiceName(serviceName).build()); return new ServicesInfoBuilder().setBoundServices(boundService) .withKey(new ServicesInfoKey(serviceName, ServiceModeIngress.class)).build(); } - public static BoundServices getBoundServices(String serviceName, short servicePriority, int flowPriority, + public static BoundServices getBoundServices(String serviceName, Uint8 servicePriority, Uint16 flowPriority, Uint64 cookie, List instructions) { StypeOpenflowBuilder augBuilder = new StypeOpenflowBuilder().setFlowCookie(cookie).setFlowPriority(flowPriority) .setInstruction(instructions); @@ -124,10 +129,12 @@ public final class InterfaceServiceUtil { matches.add(match); } - public static short getVlanId(String interfaceName, DataBroker broker) { + public static short getVlanId(String interfaceName, DataBroker broker) throws ExecutionException, + InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(Interfaces.class) .child(Interface.class, new InterfaceKey(interfaceName)).build(); - Optional ifInstance = MDSALUtil.read(LogicalDatastoreType.CONFIGURATION, id, broker); + Optional ifInstance = SingleTransactionDataBroker.syncReadOptional(broker, + LogicalDatastoreType.CONFIGURATION, id); if (ifInstance.isPresent()) { IfL2vlan vlanIface = ifInstance.get().augmentation(IfL2vlan.class); return vlanIface.getVlanId() == null ? 0 : vlanIface.getVlanId().getValue().shortValue(); diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/interfaces/IInterfaceManager.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/interfaces/IInterfaceManager.java index 70d205fcb..3822841c7 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/interfaces/IInterfaceManager.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/interfaces/IInterfaceManager.java @@ -10,13 +10,14 @@ package org.opendaylight.genius.interfacemanager.interfaces; import com.google.common.util.concurrent.ListenableFuture; import java.util.List; import java.util.Map; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import java.util.concurrent.ExecutionException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.interfacemanager.exceptions.InterfaceAlreadyExistsException; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; import org.opendaylight.genius.mdsalutil.ActionInfo; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase; @@ -74,7 +75,8 @@ public interface IInterfaceManager { * @return The interface information. * @throws ReadFailedException if an exception occurs while reading from the datastore. */ - Interface getInterfaceInfoFromConfigDataStore(ReadTransaction tx, String interfaceName) throws ReadFailedException; + Interface getInterfaceInfoFromConfigDataStore(ReadTransaction tx, String interfaceName) + throws ReadFailedException, ExecutionException, InterruptedException; /** * Create a VLAN interface. @@ -135,7 +137,8 @@ public interface IInterfaceManager { * @return The child interfaces. * @throws ReadFailedException if an exception occurs while reading from the datastore. */ - List getChildInterfaces(ReadTransaction tx, String parentInterface) throws ReadFailedException; + List getChildInterfaces(ReadTransaction tx, String parentInterface) + throws ReadFailedException, ExecutionException, InterruptedException; /** * Determine whether an interface is external. @@ -155,7 +158,8 @@ public interface IInterfaceManager { * @return {@code true} if the interface is external, {@code false} if it isn't. * @throws ReadFailedException if an exception occurs while reading from the datastore. */ - boolean isExternalInterface(ReadTransaction tx, String interfaceName) throws ReadFailedException; + boolean isExternalInterface(ReadTransaction tx, String interfaceName) + throws ReadFailedException, ExecutionException, InterruptedException; String getPortNameForInterface(NodeConnectorId nodeConnectorId, String interfaceName); diff --git a/interfacemanager/interfacemanager-impl/pom.xml b/interfacemanager/interfacemanager-impl/pom.xml index 8cf440b52..4ff6f974f 100644 --- a/interfacemanager/interfacemanager-impl/pom.xml +++ b/interfacemanager/interfacemanager-impl/pom.xml @@ -70,6 +70,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.serviceutils srm-api + + org.opendaylight.serviceutils + listener-api + org.opendaylight.ovsdb southbound-api diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmUtil.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmUtil.java index 1970ad782..0a48927cc 100755 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmUtil.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmUtil.java @@ -7,28 +7,25 @@ */ package org.opendaylight.genius.interfacemanager; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType.GRE_TRUNK_INTERFACE; import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType.LOGICAL_GROUP_INTERFACE; import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType.MPLS_OVER_GRE; import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType.VLAN_INTERFACE; import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.regex.Pattern; import org.apache.commons.lang3.BooleanUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -50,6 +47,9 @@ import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldVlanVid; import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelDestinationIp; import org.opendaylight.genius.mdsalutil.actions.ActionSetTunnelSourceIp; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; @@ -213,7 +213,7 @@ public final class IfmUtil { @Deprecated public static Optional read(LogicalDatastoreType datastoreType, InstanceIdentifier path, DataBroker broker) { - try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { + try (ReadTransaction tx = broker.newReadOnlyTransaction()) { return tx.read(datastoreType, path).get(); } catch (InterruptedException | ExecutionException e) { LOG.error("Cannot read identifier", e); diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java index 0900c2e22..906185bdb 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.interfacemanager; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; @@ -23,11 +23,7 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.genius.datastoreutils.ExpectedDataObjectNotFoundException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -47,6 +43,9 @@ import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.infrautils.diagstatus.ServiceState; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.eos.binding.api.Entity; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipCandidateRegistration; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService; @@ -376,7 +375,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { @Override public Interface getInterfaceInfoFromConfigDataStore(ReadTransaction tx, String interfaceName) - throws ReadFailedException { + throws ExecutionException, InterruptedException { return interfaceManagerCommonUtils.getInterfaceFromConfigDS(tx, new InterfaceKey(interfaceName)); } @@ -438,7 +437,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { try { return SingleTransactionDataBroker .syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, boundServicesIId).isPresent(); - } catch (ReadFailedException e) { + } catch (ExecutionException | InterruptedException e) { LOG.warn("Error while reading [{}]", boundServicesIId, e); return false; } @@ -535,16 +534,17 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { @Override public List getChildInterfaces(String parentInterface) { - try (ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction()) { + try (ReadTransaction tx = dataBroker.newReadOnlyTransaction()) { return getChildInterfaces(tx, parentInterface); - } catch (ReadFailedException e) { + } catch (ExecutionException | InterruptedException e) { LOG.error("Error retrieving child interfaces of {} from config", parentInterface, e); throw new RuntimeException("Error retrieving child interfaces of " + parentInterface + " from config", e); } } @Override - public List getChildInterfaces(ReadTransaction tx, String parentInterface) throws ReadFailedException { + public List getChildInterfaces(ReadTransaction tx, String parentInterface) throws + ExecutionException, InterruptedException { InterfaceParentEntry parentEntry = interfaceMetaUtils.getInterfaceParentEntryFromConfigDS(tx, parentInterface); if (parentEntry == null) { LOG.debug("No parent entry found for {}", parentInterface); @@ -579,7 +579,8 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { } @Override - public boolean isExternalInterface(ReadTransaction tx, String interfaceName) throws ReadFailedException { + public boolean isExternalInterface(ReadTransaction tx, String interfaceName) throws + ExecutionException, InterruptedException { return isExternalInterface(getInterfaceInfoFromConfigDataStore(tx, interfaceName)); } @@ -702,7 +703,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { try { node = SingleTransactionDataBroker.syncRead( dataBroker, LogicalDatastoreType.OPERATIONAL, nodeIid); - } catch (ReadFailedException e) { + } catch (ExpectedDataObjectNotFoundException e) { LOG.error("Failed to read Node for {} ", nodeIid, e); return null; } diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java index 56cb1cd4e..978f2a131 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java @@ -7,27 +7,27 @@ */ package org.opendaylight.genius.interfacemanager.commons; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TypedReadTransaction; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.AlivenessMonitorService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateInput; @@ -150,7 +150,7 @@ public final class AlivenessMonitorUtils { throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(MonitorIdInterfaceMap.class) .child(MonitorIdInterface.class, new MonitorIdInterfaceKey(monitorId)).build(); - return tx.read(id).get().toJavaUtil().map(MonitorIdInterface::getInterfaceName).orElse(null); + return tx.read(id).get().map(MonitorIdInterface::getInterfaceName).orElse(null); } private void removeMonitorIdInterfaceMap(TypedReadWriteTransaction tx, Uint32 monitorId) @@ -274,7 +274,7 @@ public final class AlivenessMonitorUtils { throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(InterfaceMonitorIdMap.class) .child(InterfaceMonitorId.class, new InterfaceMonitorIdKey(infName)).build(); - return tx.read(id).get().toJavaUtil().map(InterfaceMonitorId::getMonitorId).orElse(null); + return tx.read(id).get().map(InterfaceMonitorId::getMonitorId).orElse(null); } public Uint32 createMonitorProfile(MonitorProfileCreateInput monitorProfileCreateInput) { diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java index 1a7f8632b..5a388ed5f 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceManagerCommonUtils.java @@ -7,15 +7,15 @@ */ package org.opendaylight.genius.interfacemanager.commons; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.function.Consumer; @@ -29,11 +29,6 @@ import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.tuple.Pair; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -59,6 +54,9 @@ import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.genius.mdsalutil.matches.MatchInPort; import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchTunnelDestinationIp; import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchTunnelSourceIp; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Other; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; @@ -153,14 +151,15 @@ public final class InterfaceManagerCommonUtils { .child(Node.class, new NodeKey(nodeId)) .child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)).build(); - return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, ncIdentifier, dataBroker).orNull(); + return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, ncIdentifier, dataBroker).orElse(null); } - public boolean isNodePresent(ReadTransaction tx, NodeConnectorId nodeConnectorId) throws ReadFailedException { + public boolean isNodePresent(ReadTransaction tx, NodeConnectorId nodeConnectorId) throws + ExecutionException, InterruptedException { NodeId nodeID = IfmUtil.getNodeIdFromNodeConnectorId(nodeConnectorId); InstanceIdentifier nodeInstanceIdentifier = InstanceIdentifier.builder(Nodes.class) .child(Node.class, new NodeKey(nodeID)).build(); - return tx.exists(LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier).checkedGet(); + return tx.exists(LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier).get(); } public static InstanceIdentifier getInterfaceIdentifier(InterfaceKey interfaceKey) { @@ -192,22 +191,23 @@ public final class InterfaceManagerCommonUtils { @Deprecated @Nullable public Interface getInterfaceFromConfigDS(String interfaceName) { - try (ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction()) { + try (ReadTransaction tx = dataBroker.newReadOnlyTransaction()) { return getInterfaceFromConfigDS(tx, interfaceName); - } catch (ReadFailedException e) { + } catch (ExecutionException | InterruptedException e) { LOG.error("Error retrieving interface {} from config", interfaceName, e); throw new RuntimeException("Error retrieving interface " + interfaceName + " from config", e); } } @Nullable - public Interface getInterfaceFromConfigDS(ReadTransaction tx, String interfaceName) throws ReadFailedException { + public Interface getInterfaceFromConfigDS(ReadTransaction tx, String interfaceName) throws + ExecutionException, InterruptedException { Interface iface = interfaceConfigMap.get(interfaceName); if (iface != null) { return iface; } InstanceIdentifier interfaceId = getInterfaceIdentifier(new InterfaceKey(interfaceName)); - Optional interfaceOptional = tx.read(LogicalDatastoreType.CONFIGURATION, interfaceId).checkedGet(); + Optional interfaceOptional = tx.read(LogicalDatastoreType.CONFIGURATION, interfaceId).get(); if (interfaceOptional.isPresent()) { iface = interfaceOptional.get(); } @@ -220,7 +220,7 @@ public final class InterfaceManagerCommonUtils { } public Interface getInterfaceFromConfigDS(ReadTransaction tx, InterfaceKey interfaceKey) - throws ReadFailedException { + throws ExecutionException, InterruptedException { return getInterfaceFromConfigDS(tx, interfaceKey.getName()); } @@ -261,14 +261,14 @@ public final class InterfaceManagerCommonUtils { public org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS(String interfaceName) { return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, - IfmUtil.buildStateInterfaceId(interfaceName), dataBroker).orNull(); + IfmUtil.buildStateInterfaceId(interfaceName), dataBroker).orElse(null); } public org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS( TypedReadTransaction tx, String interfaceName) throws ExecutionException, InterruptedException { - return tx.read(IfmUtil.buildStateInterfaceId(interfaceName)).get().orNull(); + return tx.read(IfmUtil.buildStateInterfaceId(interfaceName)).get().orElse(null); } @Deprecated @@ -276,7 +276,7 @@ public final class InterfaceManagerCommonUtils { .ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS( InstanceIdentifier ifStateId) { - return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, ifStateId, dataBroker).orNull(); + return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, ifStateId, dataBroker).orElse(null); } public void addTunnelIngressFlow(TypedWriteTransaction tx, IfTunnel tunnel, Uint64 dpnId, diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceMetaUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceMetaUtils.java index 207ee1dc1..61f876c78 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceMetaUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/InterfaceMetaUtils.java @@ -7,22 +7,18 @@ */ package org.opendaylight.genius.interfacemanager.commons; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.TypedReadTransaction; @@ -30,6 +26,10 @@ import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.interfacemanager.IfmConstants; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.BatchingUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeInterfaceInfo; @@ -99,7 +99,7 @@ public final class InterfaceMetaUtils { InstanceIdentifier bridgeRefEntryIid = InterfaceMetaUtils .getBridgeRefEntryIdentifier(bridgeRefEntryKey); BridgeRefEntry bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, - bridgeRefEntryIid, dataBroker).orNull(); + bridgeRefEntryIid, dataBroker).orElse(null); if (bridgeRefEntry != null) { addBridgeRefEntryToCache(dpId, bridgeRefEntry); } @@ -114,7 +114,7 @@ public final class InterfaceMetaUtils { BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpId); InstanceIdentifier bridgeRefEntryIid = InterfaceMetaUtils .getBridgeRefEntryIdentifier(bridgeRefEntryKey); - bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker).orNull(); + bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker).orElse(null); if (bridgeRefEntry != null) { addBridgeRefEntryToCache(dpId, bridgeRefEntry); } @@ -181,7 +181,7 @@ public final class InterfaceMetaUtils { private BridgeEntry readBridgeEntryFromConfigDS( InstanceIdentifier bridgeEntryInstanceIdentifier) { - return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, bridgeEntryInstanceIdentifier, dataBroker).orNull(); + return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, bridgeEntryInstanceIdentifier, dataBroker).orElse(null); } public static InstanceIdentifier getBridgeInterfaceEntryIdentifier( @@ -227,7 +227,7 @@ public final class InterfaceMetaUtils { } public InterfaceParentEntry getInterfaceParentEntryFromConfigDS(ReadTransaction tx, String interfaceName) - throws ReadFailedException { + throws ExecutionException, InterruptedException { InterfaceParentEntryKey interfaceParentEntryKey = new InterfaceParentEntryKey(interfaceName); InterfaceParentEntry interfaceParentEntry = getInterfaceParentEntryFromConfigDS(tx, interfaceParentEntryKey); return interfaceParentEntry; @@ -242,7 +242,7 @@ public final class InterfaceMetaUtils { } public InterfaceParentEntry getInterfaceParentEntryFromConfigDS(ReadTransaction tx, - InterfaceParentEntryKey interfaceParentEntryKey) throws ReadFailedException { + InterfaceParentEntryKey interfaceParentEntryKey) throws ExecutionException, InterruptedException { InstanceIdentifier intfParentIid = getInterfaceParentEntryIdentifier(interfaceParentEntryKey); @@ -250,12 +250,12 @@ public final class InterfaceMetaUtils { } public InterfaceParentEntry getInterfaceParentEntryFromConfigDS(InstanceIdentifier intfId) { - return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfId, dataBroker).orNull(); + return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfId, dataBroker).orElse(null); } public InterfaceParentEntry getInterfaceParentEntryFromConfigDS(ReadTransaction tx, - InstanceIdentifier intfId) throws ReadFailedException { - return tx.read(LogicalDatastoreType.CONFIGURATION, intfId).checkedGet().orNull(); + InstanceIdentifier intfId) throws ExecutionException, InterruptedException { + return tx.read(LogicalDatastoreType.CONFIGURATION, intfId).get().orElse(null); } public InterfaceChildEntry getInterfaceChildEntryFromConfigDS( @@ -268,7 +268,7 @@ public final class InterfaceMetaUtils { public InterfaceChildEntry getInterfaceChildEntryFromConfigDS( InstanceIdentifier intfChildIid) { - return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfChildIid, dataBroker).orNull(); + return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfChildIid, dataBroker).orElse(null); } public void createLportTagInterfaceMap(String infName, Integer ifIndex) { @@ -366,7 +366,7 @@ public final class InterfaceMetaUtils { throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(TunnelInstanceInterfaceMap.class) .child(TunnelInstanceInterface.class, new TunnelInstanceInterfaceKey(tunnelInstanceId)).build(); - return tx.read(id).get().toJavaUtil().map(TunnelInstanceInterface::getInterfaceName).orElse(null); + return tx.read(id).get().map(TunnelInstanceInterface::getInterfaceName).orElse(null); } public void deleteBridgeInterfaceEntry(BridgeEntryKey bridgeEntryKey, @@ -397,7 +397,7 @@ public final class InterfaceMetaUtils { } InstanceIdentifier nodeIid = bridgeRefEntry.getBridgeReference().getValue().firstIdentifierOf(Node.class); - com.google.common.base.Optional optNode = + Optional optNode = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, nodeIid, dataBroker); if (optNode.isPresent()) { return optNode.get().getTerminationPoint(); diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/AlivenessMonitorListenerImpl.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/AlivenessMonitorListenerImpl.java index 0948f146d..7e121bd94 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/AlivenessMonitorListenerImpl.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/AlivenessMonitorListenerImpl.java @@ -16,13 +16,13 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.NotificationService; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.AlivenessMonitorUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.AlivenessMonitorListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.LivenessState; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeEntryConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeEntryConfigListener.java index 30146a53d..a9ec51c41 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeEntryConfigListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeEntryConfigListener.java @@ -14,13 +14,13 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeInterfaceInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -40,7 +40,7 @@ public class CacheBridgeEntryConfigListener implements ClusteredDataTreeChangeLi private final InterfaceMetaUtils interfaceMetaUtils; private final ListenerRegistration registration; - private final DataTreeIdentifier treeId = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + private final DataTreeIdentifier treeId = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(BridgeInterfaceInfo.class).child(BridgeEntry.class)); @Inject diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeRefEntryListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeRefEntryListener.java index ac509f49b..619d6b35a 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeRefEntryListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/CacheBridgeRefEntryListener.java @@ -14,13 +14,13 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeRefInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntry; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -39,7 +39,8 @@ public class CacheBridgeRefEntryListener implements ClusteredDataTreeChangeListe private final InterfaceMetaUtils interfaceMetaUtils; private final ListenerRegistration registration; - private final DataTreeIdentifier treeId = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + private final DataTreeIdentifier treeId = + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(BridgeRefInfo.class).child(BridgeRefEntry.class)); @Inject diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPConfigListener.java index ee9760fc5..c949c3737 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPConfigListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPConfigListener.java @@ -14,8 +14,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -24,7 +22,9 @@ import org.opendaylight.genius.interfacemanager.renderer.hwvtep.confighelpers.Hw import org.opendaylight.genius.interfacemanager.renderer.hwvtep.confighelpers.HwVTEPInterfaceConfigUpdateHelper; import org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities.SouthboundUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPTunnelsStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPTunnelsStateListener.java index 631fc41df..871e72e95 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPTunnelsStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/HwVTEPTunnelsStateListener.java @@ -11,8 +11,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -21,9 +19,11 @@ import org.opendaylight.genius.interfacemanager.renderer.hwvtep.statehelpers.HwV import org.opendaylight.genius.interfacemanager.renderer.hwvtep.statehelpers.HwVTEPInterfaceStateUpdateHelper; import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.PhysicalSwitchAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes.Tunnels; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/IfIndexInterfaceCache.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/IfIndexInterfaceCache.java index 2d2ac91e4..e9b6fcac9 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/IfIndexInterfaceCache.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/IfIndexInterfaceCache.java @@ -12,10 +12,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.mdsalutil.cache.DataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.IfIndexesInterfaceMap; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterfaceKey; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceChildCache.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceChildCache.java index deaa4ebf9..1b9c2fdfc 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceChildCache.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceChildCache.java @@ -8,18 +8,18 @@ package org.opendaylight.genius.interfacemanager.listeners; -import com.google.common.base.Optional; import java.util.Collections; import java.util.List; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.InterfaceChildInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntryKey; @@ -55,7 +55,7 @@ public class InterfaceChildCache { } catch (ReadFailedException ex) { LOG.error("ReadFailedException exception", ex); } - return Optional.absent(); + return Optional.empty(); } private InstanceIdentifier getInterfaceParentEntryIdentifier(String parentInterfaceName) { diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceConfigListener.java index d6e1fc719..e8c1bd2ea 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceConfigListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceConfigListener.java @@ -12,8 +12,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.interfacemanager.IfmConstants; import org.opendaylight.genius.interfacemanager.InterfacemgrProvider; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; @@ -24,9 +22,11 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.confighelpers.OvsIn import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredSyncDataTreeChangeListener; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java index b5dde272c..89b9d52d5 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceInventoryStateListener.java @@ -23,9 +23,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.checkerframework.checker.nullness.qual.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -42,9 +39,13 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.statehelpers.OvsInt import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortReason; @@ -61,6 +62,7 @@ import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** * This Class is a Data Change Listener for FlowCapableNodeConnector updates. * This creates an entry in the interface-state OperDS for every node-connector @@ -73,7 +75,7 @@ import org.slf4j.LoggerFactory; */ @Singleton public class InterfaceInventoryStateListener - extends AsyncClusteredDataTreeChangeListenerBase + extends AbstractClusteredAsyncDataTreeChangeListener implements RecoverableListener { private static final Logger LOG = LoggerFactory.getLogger(InterfaceInventoryStateListener.class); @@ -106,7 +108,10 @@ public class InterfaceInventoryStateListener final InterfaceServiceRecoveryHandler interfaceServiceRecoveryHandler, @Reference final ServiceRecoveryRegistry serviceRecoveryRegistry, final InterfacemgrProvider interfacemgrProvider) { - super(FlowCapableNodeConnector.class, InterfaceInventoryStateListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Nodes.class) + .child(Node.class).child(NodeConnector.class) + .augmentation(FlowCapableNodeConnector.class), + Executors.newSingleThreadExecutor("InterfaceInventoryStateListener", LOG)); this.dataBroker = dataBroker; this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); this.idManager = idManagerService; @@ -119,29 +124,22 @@ public class InterfaceInventoryStateListener this.interfaceMetaUtils = interfaceMetaUtils; this.portNameCache = portNameCache; this.interfacemgrProvider = interfacemgrProvider; - registerListener(); serviceRecoveryRegistry.addRecoverableListener(interfaceServiceRecoveryHandler.buildServiceRegistryKey(), this); } @Override public void registerListener() { - this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); - } - - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Nodes.class).child(Node.class).child(NodeConnector.class) - .augmentation(FlowCapableNodeConnector.class); + super.register(); } @Override - protected InterfaceInventoryStateListener getDataTreeChangeListener() { - return InterfaceInventoryStateListener.this; + public void deregisterListener() { + close(); } @Override - protected void remove(InstanceIdentifier key, + public void remove(InstanceIdentifier key, FlowCapableNodeConnector flowCapableNodeConnectorOld) { String interfaceName = flowCapableNodeConnectorOld.getName(); EVENT_LOGGER.debug("IFM-InterfaceInventoryState,REMOVE {}", interfaceName); @@ -182,7 +180,7 @@ public class InterfaceInventoryStateListener } @Override - protected void update(InstanceIdentifier key, FlowCapableNodeConnector fcNodeConnectorOld, + public void update(InstanceIdentifier key, FlowCapableNodeConnector fcNodeConnectorOld, FlowCapableNodeConnector fcNodeConnectorNew) { String interfaceName = fcNodeConnectorNew.getName(); EVENT_LOGGER.debug("IFM-InterfaceInventoryState,UPDATE {},{}", fcNodeConnectorNew.getName(), @@ -215,7 +213,7 @@ public class InterfaceInventoryStateListener } @Override - protected void add(InstanceIdentifier key, FlowCapableNodeConnector fcNodeConnectorNew) { + public void add(InstanceIdentifier key, FlowCapableNodeConnector fcNodeConnectorNew) { String interfaceName = fcNodeConnectorNew.getName(); EVENT_LOGGER.debug("IFM-InterfaceInventoryState,ADD {}", interfaceName); if (interfacemgrProvider.isItmDirectTunnelsEnabled() diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceStateListener.java index e41e27102..ea32d2da8 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceStateListener.java @@ -14,15 +14,16 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; @@ -32,7 +33,7 @@ import org.slf4j.LoggerFactory; @Singleton public class InterfaceStateListener - extends AsyncClusteredDataTreeChangeListenerBase { + extends AbstractClusteredAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(InterfaceStateListener.class); private final ManagedNewTransactionRunner txRunner; private final EntityOwnershipUtils entityOwnershipUtils; @@ -44,30 +45,32 @@ public class InterfaceStateListener final EntityOwnershipUtils entityOwnershipUtils, @Reference final JobCoordinator coordinator, final InterfaceManagerCommonUtils interfaceManagerCommonUtils) { + super(dataBroker, LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.create(InterfacesState.class).child(Interface.class), + Executors.newSingleThreadExecutor("NodeConnectorStatsImpl", LOG)); this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); this.entityOwnershipUtils = entityOwnershipUtils; this.coordinator = coordinator; this.interfaceManagerCommonUtils = interfaceManagerCommonUtils; - this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); } - @Override + /*@Override protected InstanceIdentifier getWildCardPath() { return InstanceIdentifier.create(InterfacesState.class).child(Interface.class); - } + }*/ @Override - protected void remove(InstanceIdentifier key, Interface interfaceStateOld) { + public void remove(InstanceIdentifier key, Interface interfaceStateOld) { interfaceManagerCommonUtils.removeFromInterfaceStateCache(interfaceStateOld); } @Override - protected void update(InstanceIdentifier key, Interface interfaceStateOld, Interface interfaceStateNew) { + public void update(InstanceIdentifier key, Interface interfaceStateOld, Interface interfaceStateNew) { interfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew); } @Override - protected void add(InstanceIdentifier key, Interface interfaceStateNew) { + public void add(InstanceIdentifier key, Interface interfaceStateNew) { interfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew); if (!Tunnel.class.equals(interfaceStateNew.getType()) || !entityOwnershipUtils.isEntityOwner(IfmConstants.INTERFACE_CONFIG_ENTITY, @@ -90,8 +93,8 @@ public class InterfaceStateListener }); } - @Override + /*@Override protected InterfaceStateListener getDataTreeChangeListener() { return InterfaceStateListener.this; - } + }*/ } diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceTopologyStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceTopologyStateListener.java index 6e03467bb..be715d53f 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceTopologyStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/InterfaceTopologyStateListener.java @@ -18,9 +18,6 @@ import java.util.concurrent.Callable; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -33,8 +30,12 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.statehelpers.OvsInt import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; @@ -49,7 +50,7 @@ import org.slf4j.LoggerFactory; @Singleton public class InterfaceTopologyStateListener - extends AsyncClusteredDataTreeChangeListenerBase + extends AbstractClusteredAsyncDataTreeChangeListener implements RecoverableListener { private static final Logger LOG = LoggerFactory.getLogger(InterfaceTopologyStateListener.class); private final DataBroker dataBroker; @@ -74,7 +75,9 @@ public class InterfaceTopologyStateListener final SouthboundUtils southboundUtils, final InterfaceServiceRecoveryHandler interfaceServiceRecoveryHandler, @Reference final ServiceRecoveryRegistry serviceRecoveryRegistry) { - super(OvsdbBridgeAugmentation.class, InterfaceTopologyStateListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.builder(NetworkTopology.class) + .child(Topology.class).child(Node.class).augmentation(OvsdbBridgeAugmentation.class).build(), + Executors.newSingleThreadExecutor("InterfaceTopologyStateListener", LOG)); this.dataBroker = dataBroker; this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); this.interfaceMgrProvider = interfaceMgrProvider; @@ -84,25 +87,18 @@ public class InterfaceTopologyStateListener this.ovsInterfaceTopologyStateUpdateHelper = ovsInterfaceTopologyStateUpdateHelper; this.interfaceMetaUtils = interfaceMetaUtils; this.southboundUtils = southboundUtils; - registerListener(); serviceRecoveryRegistry.addRecoverableListener(interfaceServiceRecoveryHandler.buildServiceRegistryKey(), this); } @Override public void registerListener() { - this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + super.register(); } @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class).child(Node.class) - .augmentation(OvsdbBridgeAugmentation.class).build(); - } - - @Override - protected InterfaceTopologyStateListener getDataTreeChangeListener() { - return InterfaceTopologyStateListener.this; + public void deregisterListener() { + close(); } private void runOnlyInOwnerNode(String jobDesc, Runnable job) { @@ -111,7 +107,7 @@ public class InterfaceTopologyStateListener } @Override - protected void remove(InstanceIdentifier identifier, + public void remove(InstanceIdentifier identifier, OvsdbBridgeAugmentation bridgeOld) { LOG.debug("Received Remove DataChange Notification for identifier: {}, ovsdbBridgeAugmentation: {}", identifier, bridgeOld); @@ -128,7 +124,7 @@ public class InterfaceTopologyStateListener } @Override - protected void update(InstanceIdentifier identifier, + public void update(InstanceIdentifier identifier, OvsdbBridgeAugmentation bridgeOld, OvsdbBridgeAugmentation bridgeNew) { LOG.debug( @@ -155,7 +151,7 @@ public class InterfaceTopologyStateListener } @Override - protected void add(InstanceIdentifier identifier, + public void add(InstanceIdentifier identifier, OvsdbBridgeAugmentation bridgeNew) { LOG.debug("Received Add DataChange Notification for identifier: {}, ovsdbBridgeAugmentation: {}", identifier, bridgeNew); diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/TerminationPointStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/TerminationPointStateListener.java index 8b7ed72cb..fec697e48 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/TerminationPointStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/TerminationPointStateListener.java @@ -15,9 +15,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.interfacemanager.IfmConstants; import org.opendaylight.genius.interfacemanager.InterfacemgrProvider; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; @@ -25,9 +22,13 @@ import org.opendaylight.genius.interfacemanager.recovery.impl.InterfaceServiceRe import org.opendaylight.genius.interfacemanager.renderer.ovs.statehelpers.OvsInterfaceTopologyStateUpdateHelper; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; @@ -39,7 +40,7 @@ import org.slf4j.LoggerFactory; @Singleton public class TerminationPointStateListener extends - AsyncClusteredDataTreeChangeListenerBase + AbstractClusteredAsyncDataTreeChangeListener implements RecoverableListener { private static final Logger LOG = LoggerFactory.getLogger(TerminationPointStateListener.class); private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("GeniusEventLogger"); @@ -61,35 +62,32 @@ public class TerminationPointStateListener extends ovsInterfaceTopologyStateUpdateHelper, final InterfaceServiceRecoveryHandler interfaceServiceRecoveryHandler, @Reference final ServiceRecoveryRegistry serviceRecoveryRegistry) { + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.builder(NetworkTopology.class) + .child(Topology.class).child(Node.class) + .child(TerminationPoint.class).augmentation(OvsdbTerminationPointAugmentation.class).build(), + Executors.newSingleThreadExecutor("TerminationPointStateListener", LOG)); this.interfaceMgrProvider = interfaceMgrProvider; this.entityOwnershipUtils = entityOwnershipUtils; this.coordinator = coordinator; this.interfaceManagerCommonUtils = interfaceManagerCommonUtils; this.ovsInterfaceTopologyStateUpdateHelper = ovsInterfaceTopologyStateUpdateHelper; this.dataBroker = dataBroker; - registerListener(); serviceRecoveryRegistry.addRecoverableListener(interfaceServiceRecoveryHandler.buildServiceRegistryKey(), this); } @Override public void registerListener() { - this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + super.register(); } @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class).child(Node.class) - .child(TerminationPoint.class).augmentation(OvsdbTerminationPointAugmentation.class).build(); + public void deregisterListener() { + close(); } @Override - protected TerminationPointStateListener getDataTreeChangeListener() { - return TerminationPointStateListener.this; - } - - @Override - protected void remove(InstanceIdentifier identifier, + public void remove(InstanceIdentifier identifier, OvsdbTerminationPointAugmentation tpOld) { // No ItmDirectTunnels or Internal Tunnel checking is done here as this DTCN only results in removal // of interface entry from BFD internal cache. For internal tunnels when ItmDirectTunnel is enabled, @@ -114,7 +112,7 @@ public class TerminationPointStateListener extends } @Override - protected void update(InstanceIdentifier identifier, + public void update(InstanceIdentifier identifier, OvsdbTerminationPointAugmentation tpOld, OvsdbTerminationPointAugmentation tpNew) { if (interfaceMgrProvider.isItmDirectTunnelsEnabled() @@ -171,7 +169,7 @@ public class TerminationPointStateListener extends } @Override - protected void add(InstanceIdentifier identifier, + public void add(InstanceIdentifier identifier, OvsdbTerminationPointAugmentation tpNew) { if (interfaceMgrProvider.isItmDirectTunnelsEnabled() && InterfaceManagerCommonUtils.isTunnelPort(tpNew.getName()) diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/VlanMemberConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/VlanMemberConfigListener.java index f156085c7..1d9067655 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/VlanMemberConfigListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/listeners/VlanMemberConfigListener.java @@ -12,8 +12,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -23,7 +21,9 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.confighelpers.OvsVl import org.opendaylight.genius.interfacemanager.renderer.ovs.confighelpers.OvsVlanMemberConfigRemoveHelper; import org.opendaylight.genius.interfacemanager.renderer.ovs.confighelpers.OvsVlanMemberConfigUpdateHelper; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/pmcounters/NodeConnectorStatsImpl.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/pmcounters/NodeConnectorStatsImpl.java index ce2fde359..0007c725e 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/pmcounters/NodeConnectorStatsImpl.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/pmcounters/NodeConnectorStatsImpl.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.interfacemanager.pmcounters; import static org.opendaylight.infrautils.utils.concurrent.Executors.newListeningScheduledThreadPool; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -17,6 +16,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; @@ -27,9 +27,6 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.interfacemanager.IfmConstants; import org.opendaylight.genius.interfacemanager.listeners.InterfaceChildCache; import org.opendaylight.genius.interfacemanager.listeners.PortNameCache; @@ -39,6 +36,10 @@ import org.opendaylight.infrautils.metrics.Labeled; import org.opendaylight.infrautils.metrics.MetricDescriptor; import org.opendaylight.infrautils.metrics.MetricProvider; import org.opendaylight.infrautils.utils.UncheckedCloseable; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsOutput; @@ -62,7 +63,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListenerBase { +public class NodeConnectorStatsImpl extends AbstractClusteredAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(NodeConnectorStatsImpl.class); @@ -88,27 +89,18 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener final InterfaceChildCache interfaceChildCache, final IfmConfig ifmConfigObj, final @Reference MetricProvider metricProvider) { - super(Node.class, NodeConnectorStatsImpl.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL, + InstanceIdentifier.create(Nodes.class).child(Node.class), + Executors.newSingleThreadExecutor("NodeConnectorStatsImpl", LOG)); this.opendaylightDirectStatisticsService = opendaylightDirectStatisticsService; this.entityOwnershipUtils = entityOwnershipUtils; this.portNameCache = portNameCache; this.interfaceChildCache = interfaceChildCache; this.ifmConfig = ifmConfigObj; this.metricProvider = metricProvider; - registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); portStatExecutorService = newListeningScheduledThreadPool(THREAD_POOL_SIZE, "Port Stats Request Task", LOG); } - @Override - public InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Nodes.class).child(Node.class); - } - - @Override - protected NodeConnectorStatsImpl getDataTreeChangeListener() { - return NodeConnectorStatsImpl.this; - } - @Override @PreDestroy public void close() { @@ -414,7 +406,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener } @Override - protected void remove(InstanceIdentifier identifier, Node node) { + public void remove(InstanceIdentifier identifier, Node node) { NodeId nodeId = node.getId(); String dpId = nodeId.getValue().split(":")[1]; if (nodes.contains(dpId)) { @@ -435,12 +427,12 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener } @Override - protected void update(InstanceIdentifier identifier, Node original, Node update) { + public void update(InstanceIdentifier identifier, Node original, Node update) { // TODO Auto-generated method stub } @Override - protected void add(InstanceIdentifier identifier, Node node) { + public void add(InstanceIdentifier identifier, Node node) { NodeId nodeId = node.getId(); if (entityOwnershipUtils.isEntityOwner(IfmConstants.SERVICE_ENTITY_TYPE, nodeId.getValue())) { LOG.trace("Locally connected switch {}",nodeId.getValue()); diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/recovery/impl/InterfaceInstanceRecoveryHandler.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/recovery/impl/InterfaceInstanceRecoveryHandler.java index 8889e0838..c08c0d81a 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/recovery/impl/InterfaceInstanceRecoveryHandler.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/recovery/impl/InterfaceInstanceRecoveryHandler.java @@ -15,8 +15,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -25,6 +23,8 @@ import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.ServiceRecoveryInterface; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigAddHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigAddHelper.java index 4b95432cd..30eed7fd7 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigAddHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigAddHelper.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.interfacemanager.renderer.hwvtep.confighelpers; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigUpdateHelper.java index 364083b66..67b14ae0f 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/confighelpers/HwVTEPInterfaceConfigUpdateHelper.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.interfacemanager.renderer.hwvtep.confighelpers; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/statehelpers/HwVTEPInterfaceStateUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/statehelpers/HwVTEPInterfaceStateUpdateHelper.java index 845a065f8..c29aff14d 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/statehelpers/HwVTEPInterfaceStateUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/statehelpers/HwVTEPInterfaceStateUpdateHelper.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.interfacemanager.renderer.hwvtep.statehelpers; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/utilities/SouthboundUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/utilities/SouthboundUtils.java index 7aeaa7542..a55c9e1d0 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/utilities/SouthboundUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/hwvtep/utilities/SouthboundUtils.java @@ -7,17 +7,17 @@ */ package org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.interfacemanager.IfmUtil; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java index 63e3cc379..7a0445330 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java @@ -23,8 +23,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; @@ -41,6 +39,8 @@ import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilit import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeRefInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java index 9d195a93b..889e718c0 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java @@ -18,7 +18,6 @@ import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -34,6 +33,7 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.Southboun import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntry; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigUpdateHelper.java index 5b0255b09..59b3d1d8e 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsInterfaceConfigUpdateHelper.java @@ -20,7 +20,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -32,6 +31,7 @@ import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUt import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java index 7e4404c90..c2b53ca72 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java @@ -16,10 +16,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java index ae4eaa11e..4c7a0b531 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java @@ -17,13 +17,13 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntryKey; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigUpdateHelper.java index a896af2dc..c14568b14 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/confighelpers/OvsVlanMemberConfigUpdateHelper.java @@ -17,12 +17,12 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java index d81560254..9c8738e0d 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateAddHelper.java @@ -20,7 +20,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -28,6 +27,7 @@ import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.AlivenessMonitorUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateUpdateHelper.java index dea8a6660..5564a1f2f 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceStateUpdateHelper.java @@ -17,7 +17,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -25,6 +24,7 @@ import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.AlivenessMonitorUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceTopologyStateUpdateHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceTopologyStateUpdateHelper.java index 8aa4f8fe4..852cdc4fe 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceTopologyStateUpdateHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/statehelpers/OvsInterfaceTopologyStateUpdateHelper.java @@ -15,7 +15,6 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -25,6 +24,7 @@ import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/BatchingUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/BatchingUtils.java index 4307cb55a..7c30d43ab 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/BatchingUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/BatchingUtils.java @@ -14,11 +14,11 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.utils.batching.ActionableResource; import org.opendaylight.genius.utils.batching.ActionableResources; import org.opendaylight.genius.utils.batching.ResourceBatchingManager; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/InterfaceBatchHandler.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/InterfaceBatchHandler.java index f7df41ef7..b35033135 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/InterfaceBatchHandler.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/InterfaceBatchHandler.java @@ -9,12 +9,12 @@ package org.opendaylight.genius.interfacemanager.renderer.ovs.utilities; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.utils.batching.ResourceHandler; import org.opendaylight.genius.utils.batching.SubTransaction; import org.opendaylight.genius.utils.batching.SubTransactionImpl; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -45,6 +45,12 @@ class InterfaceBatchHandler implements ResourceHandler { buildSubTransactions(transactionObjects, identifier, update, SubTransaction.UPDATE); } + @Override + public void updateContainer(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier + identifier, Object original, Object update, List transactionObjects) { + //no-op + } + @Override public void create(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifier, Object data, List transactionObjects) { diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java index bc4d1b560..fbb166341 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.interfacemanager.renderer.ovs.utilities; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.collect.Maps; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -21,9 +21,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.apache.commons.lang3.BooleanUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedWriteTransaction; @@ -34,6 +31,9 @@ import org.opendaylight.infrautils.caches.Cache; import org.opendaylight.infrautils.caches.CacheConfigBuilder; import org.opendaylight.infrautils.caches.CachePolicyBuilder; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/rpcservice/InterfaceManagerServiceImpl.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/rpcservice/InterfaceManagerServiceImpl.java index d197aa665..eeb992998 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/rpcservice/InterfaceManagerServiceImpl.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/rpcservice/InterfaceManagerServiceImpl.java @@ -7,23 +7,23 @@ */ package org.opendaylight.genius.interfacemanager.rpcservice; -import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils; import org.opendaylight.genius.interfacemanager.interfaces.InterfaceManagerService; import org.opendaylight.genius.interfacemanager.listeners.IfIndexInterfaceCache; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigBindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigBindHelper.java index 9b5b9aba6..9ae897466 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigBindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigBindHelper.java @@ -14,13 +14,13 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.utils.ServiceIndex; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.bound.services.state.list.BoundServicesState; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigUnbindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigUnbindHelper.java index 66d317b40..455eb90ac 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigUnbindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedEgressServicesConfigUnbindHelper.java @@ -14,12 +14,12 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.bound.services.state.list.BoundServicesState; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigBindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigBindHelper.java index e7bffff4b..b77ecf5a9 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigBindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigBindHelper.java @@ -16,13 +16,13 @@ import java.util.concurrent.ConcurrentHashMap; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.MatchInfo; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigUnbindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigUnbindHelper.java index 9fbd83b68..2355c733a 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigUnbindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/config/helpers/FlowBasedIngressServicesConfigUnbindHelper.java @@ -16,13 +16,13 @@ import java.util.concurrent.ConcurrentHashMap; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.MatchInfo; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesConfigListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesConfigListener.java index cc9301c3e..61f51c27c 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesConfigListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesConfigListener.java @@ -22,12 +22,6 @@ import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -40,6 +34,12 @@ import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilit import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; @@ -100,7 +100,7 @@ public class FlowBasedServicesConfigListener implements ClusteredDataTreeChangeL } public void registerListener(final LogicalDatastoreType dsType, final DataBroker db) { - final DataTreeIdentifier treeId = new DataTreeIdentifier<>(dsType, getWildCardPath()); + final DataTreeIdentifier treeId = DataTreeIdentifier.create(dsType, getWildCardPath()); listenerRegistration = db.registerDataTreeChangeListener(treeId, FlowBasedServicesConfigListener.this); } diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesInterfaceStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesInterfaceStateListener.java index 87fb817b1..683a0f581 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesInterfaceStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesInterfaceStateListener.java @@ -20,8 +20,6 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -31,9 +29,11 @@ import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state. import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.serviceutils.srm.RecoverableListener; import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredSyncDataTreeChangeListener; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Other; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesNodeStateListener.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesNodeStateListener.java index c9dcb3f06..4a1e10597 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesNodeStateListener.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/listeners/FlowBasedServicesNodeStateListener.java @@ -15,13 +15,13 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.factory.FlowBasedServicesStateAddable; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.factory.FlowBasedServicesStateRendererFactoryResolver; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.ServiceModeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/AbstractFlowBasedServicesStateBindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/AbstractFlowBasedServicesStateBindHelper.java index 11f8d3565..66c4b3473 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/AbstractFlowBasedServicesStateBindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/AbstractFlowBasedServicesStateBindHelper.java @@ -11,12 +11,12 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.factory.FlowBasedServicesStateAddable; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedEgressServicesStateBindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedEgressServicesStateBindHelper.java index 565ff9dea..c7747680a 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedEgressServicesStateBindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedEgressServicesStateBindHelper.java @@ -13,13 +13,13 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils; import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedIngressServicesStateBindHelper.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedIngressServicesStateBindHelper.java index 68b8cb90f..263e86566 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedIngressServicesStateBindHelper.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/helpers/FlowBasedIngressServicesStateBindHelper.java @@ -13,7 +13,6 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.interfacemanager.IfmUtil; @@ -21,6 +20,7 @@ import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUt import org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities.FlowBasedServicesUtils; import org.opendaylight.genius.mdsalutil.MatchInfo; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/utilities/FlowBasedServicesUtils.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/utilities/FlowBasedServicesUtils.java index c29354368..0a05be44c 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/utilities/FlowBasedServicesUtils.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/utilities/FlowBasedServicesUtils.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.utilities; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; @@ -22,9 +22,6 @@ import java.util.concurrent.ExecutionException; import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -47,6 +44,8 @@ import org.opendaylight.genius.mdsalutil.matches.MatchMetadata; import org.opendaylight.genius.mdsalutil.matches.MatchVlanVid; import org.opendaylight.genius.mdsalutil.nxmatches.NxMatchRegister; import org.opendaylight.genius.utils.ServiceIndex; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; @@ -118,7 +117,7 @@ public final class FlowBasedServicesUtils { ServicesInfoKey servicesInfoKey = new ServicesInfoKey(interfaceName, serviceMode); InstanceIdentifier.InstanceIdentifierBuilder servicesInfoIdentifierBuilder = InstanceIdentifier .builder(ServiceBindings.class).child(ServicesInfo.class, servicesInfoKey); - return tx.read(servicesInfoIdentifierBuilder.build()).get().orNull(); + return tx.read(servicesInfoIdentifierBuilder.build()).get().orElse(null); } public static NodeConnectorId getNodeConnectorIdFromInterface(String interfaceName, @@ -720,17 +719,17 @@ public final class FlowBasedServicesUtils { public static BoundServicesState getBoundServicesState(ReadTransaction tx, String interfaceName, Class serviceMode) - throws ReadFailedException { + throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(BoundServicesStateList.class) .child(BoundServicesState.class, new BoundServicesStateKey(interfaceName, serviceMode)).build(); - return tx.read(LogicalDatastoreType.OPERATIONAL, id).checkedGet().orNull(); + return tx.read(LogicalDatastoreType.OPERATIONAL, id).get().orElse(null); } public static BoundServicesState getBoundServicesState(TypedReadTransaction tx, String interfaceName, Class serviceMode) throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(BoundServicesStateList.class) .child(BoundServicesState.class, new BoundServicesStateKey(interfaceName, serviceMode)).build(); - return tx.read(id).get().orNull(); + return tx.read(id).get().orElse(null); } public static void addBoundServicesState(TypedWriteTransaction tx, String interfaceName, diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java index 38eac9da1..200187a80 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java @@ -8,8 +8,6 @@ package org.opendaylight.genius.interfacemanager.test; import static java.util.concurrent.TimeUnit.MINUTES; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; import static org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.BatchingUtils.EntityType.DEFAULT_OPERATIONAL; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.DPN_ID_1; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.DPN_ID_2; @@ -26,11 +24,14 @@ import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTest import static org.opendaylight.genius.mdsalutil.NwConstants.DEFAULT_EGRESS_SERVICE_INDEX; import static org.opendaylight.genius.mdsalutil.NwConstants.VLAN_INTERFACE_INGRESS_TABLE; import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; -import com.google.common.base.Optional; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Optional; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import org.junit.After; @@ -40,10 +41,6 @@ import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.testutils.AsyncEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorCountedEventsWaiter; @@ -81,6 +78,9 @@ import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; import org.opendaylight.infrautils.testutils.concurrent.TestableQueues; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType; @@ -189,7 +189,7 @@ public class InterfaceManagerConfigurationTest { SingleTransactionDataBroker db; @Before - public void start() throws InterruptedException, TransactionCommitFailedException { + public void start() throws InterruptedException, ExecutionException { db = new SingleTransactionDataBroker(dataBroker); // Create the bridge and make sure it is ready @@ -197,18 +197,18 @@ public class InterfaceManagerConfigurationTest { } @After - public void stop() throws InterruptedException, TransactionCommitFailedException { + public void stop() throws InterruptedException, ExecutionException { setupAndAssertBridgeDeletion(); } - private void setupAndAssertBridgeDeletion() throws InterruptedException, TransactionCommitFailedException { + private void setupAndAssertBridgeDeletion() throws InterruptedException, ExecutionException { OvsdbSouthboundTestUtil.deleteBridge(dataBroker); InterfaceManagerTestUtil.waitTillOperationCompletes("bridge deletion", coordinatorEventsWaiter,2, asyncEventsWaiter); assertEqualBeans(interfaceMetaUtils.getBridgeRefEntryFromOperationalDS(DPN_ID_1), null); } - private void setupAndAssertBridgeCreation() throws InterruptedException, TransactionCommitFailedException { + private void setupAndAssertBridgeCreation() throws InterruptedException, ExecutionException { OvsdbSouthboundTestUtil.createBridge(dataBroker); // a) Check bridgeRefEntry in cache and OperDS are same and use the // right DPN_ID @@ -219,7 +219,7 @@ public class InterfaceManagerConfigurationTest { coordinatorEventsWaiter,3, asyncEventsWaiter); BridgeRefEntry bridgeRefEntry = IfmUtil .read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker) - .orNull(); + .orElse(null); assertEqualBeans(bridgeRefEntry.getDpid(), DPN_ID_1); // FIXME AsyncEventsWaiter does not help in this case, need to enhance -- TODO //assertEqualBeans(interfaceMetaUtils.getBridgeRefEntryFromCache(DPN_ID_1), bridgeRefEntry); @@ -256,14 +256,14 @@ public class InterfaceManagerConfigurationTest { new InterfaceChildEntryKey(INTERFACE_NAME)); assertEqualBeans(ExpectedInterfaceChildEntry.interfaceChildEntry(INTERFACE_NAME), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, - interfaceChildEntryInstanceIdentifier).checkedGet().get()); + interfaceChildEntryInstanceIdentifier).get()); // Then // a) check if operational/ietf-interfaces-state is populated for the vlan interface org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508 .interfaces.state.Interface ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), INTERFACE_NAME, Interface.OperStatus.Up, L2vlan.class, DPN_ID_1.toString(), @@ -276,7 +276,7 @@ public class InterfaceManagerConfigurationTest { .builder(IfIndexesInterfaceMap.class) .child(IfIndexInterface.class, new IfIndexInterfaceKey(ifaceState.getIfIndex())).build(); Assert.assertEquals(INTERFACE_NAME, dataBroker.newReadOnlyTransaction() - .read(OPERATIONAL, ifIndexInterfaceInstanceIdentifier).checkedGet().get().getInterfaceName());*/ + .read(OPERATIONAL, ifIndexInterfaceInstanceIdentifier).get().getInterfaceName());*/ // c) check expected flow entries were created in Interface Ingress // Table @@ -290,7 +290,7 @@ public class InterfaceManagerConfigurationTest { .build(); flowAssertTestUtils.assertFlowsInAnyOrder(ExpectedFlowEntries.newIngressFlow(), - dataBroker.newReadOnlyTransaction().read(CONFIGURATION, ingressFlowInstanceId).checkedGet().get()); + dataBroker.newReadOnlyTransaction().read(CONFIGURATION, ingressFlowInstanceId).get().get()); // d) check if default egress service is bound on the interface InstanceIdentifier boundServicesInstanceIdentifier = InstanceIdentifier @@ -298,7 +298,7 @@ public class InterfaceManagerConfigurationTest { .child(ServicesInfo.class, new ServicesInfoKey(INTERFACE_NAME, ServiceModeEgress.class)) .child(BoundServices.class, new BoundServicesKey(DEFAULT_EGRESS_SERVICE_INDEX)).build(); assertEqualBeans(ExpectedServicesInfo.newboundService(), dataBroker.newReadOnlyTransaction() - .read(CONFIGURATION, boundServicesInstanceIdentifier).checkedGet().get()); + .read(CONFIGURATION, boundServicesInstanceIdentifier).get()); // Test all RPCs related to vlan-interfaces checkVlanRpcs(); @@ -315,7 +315,7 @@ public class InterfaceManagerConfigurationTest { // Then // a) check if operational/ietf-interfaces-state is updated for vlan interface ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), INTERFACE_NAME, Interface .OperStatus.Down, L2vlan.class, DPN_ID_1.toString(), ifaceState.getStatistics().getDiscontinuityTime()), ifaceState); @@ -332,7 +332,7 @@ public class InterfaceManagerConfigurationTest { waitTillOperationCompletes("disable interface op state", coordinatorEventsWaiter, 2, asyncEventsWaiter); ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get().get(); // Verify if operational/ietf-interface-state is marked down assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), INTERFACE_NAME, Interface.OperStatus.Down, L2vlan.class, DPN_ID_1.toString(), @@ -344,9 +344,9 @@ public class InterfaceManagerConfigurationTest { coordinatorEventsWaiter, 5, asyncEventsWaiter); // Verify if interfaces are deleted from oper/ietf-interfaces-state - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(PARENT_INTERFACE)).get()); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get()); // 3. Re-create the OF port to proceeed with vlan-member tests @@ -367,17 +367,17 @@ public class InterfaceManagerConfigurationTest { // TODO Later use nicer abstraction for DB access here.. see // ElanServiceTest - Assert.assertEquals(Optional.absent(), + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, interfaceChildEntryInstanceIdentifier).get()); // Then // a) check if operational/ietf-interfaces-state is deleted for the vlan // interface - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(OPERATIONAL, IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get()); // b) check if lport-tag to interface mapping is deleted - /*Assert.assertEquals(Optional.absent(), + /*Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, ifIndexInterfaceInstanceIdentifier).get());*/ } @@ -392,7 +392,7 @@ public class InterfaceManagerConfigurationTest { .getBridgeRefEntryIdentifier(bridgeRefEntryKey); // Verify if DPN-ID is updated in corresponding DS and cache BridgeRefEntry bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker) - .orNull(); + .orElse(null); assertEqualBeans(interfaceMetaUtils.getBridgeRefEntryFromCache(DPN_ID_2), bridgeRefEntry); // 1. Given @@ -416,7 +416,7 @@ public class InterfaceManagerConfigurationTest { // TODO Later use nicer abstraction for DB access here.. see // ElanServiceTest assertEqualBeans(InterfaceMeta.newBridgeInterface(), - dataBroker.newReadOnlyTransaction().read(CONFIGURATION, bridgeInterfaceEntryIid).checkedGet().get()); + dataBroker.newReadOnlyTransaction().read(CONFIGURATION, bridgeInterfaceEntryIid).get()); // Then // a) check if termination end point is created in @@ -441,7 +441,7 @@ public class InterfaceManagerConfigurationTest { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508 .interfaces.state.Interface ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TUNNEL_INTERFACE_NAME, Interface.OperStatus.Up, Tunnel.class, DPN_ID_2.toString(), ifaceState.getStatistics().getDiscontinuityTime()), ifaceState); @@ -466,7 +466,7 @@ public class InterfaceManagerConfigurationTest { waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get().get(); // Verify if operational/ietf-interface-state is still up assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TUNNEL_INTERFACE_NAME, Interface.OperStatus.Up, Tunnel.class, DPN_ID_2.toString(), @@ -477,7 +477,7 @@ public class InterfaceManagerConfigurationTest { waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get().get(); // Verify if operational/ietf-interface-state is marked down assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TUNNEL_INTERFACE_NAME, Interface.OperStatus.Down, Tunnel.class, DPN_ID_2.toString(), @@ -488,7 +488,7 @@ public class InterfaceManagerConfigurationTest { InterfaceManagerTestUtil.removeNode(dataBroker); waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get().get(); // Verify if operational/ietf-interface-state is marked unknown assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TUNNEL_INTERFACE_NAME, Interface.OperStatus.Unknown, Tunnel.class, DPN_ID_2.toString(), @@ -504,9 +504,9 @@ public class InterfaceManagerConfigurationTest { waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); // Verify if operational-states are deleted - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get()); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get()); // Delete test @@ -516,12 +516,12 @@ public class InterfaceManagerConfigurationTest { // Then // a) check if tunnel is deleted from bridge-interface-info - Assert.assertEquals(Optional.absent(), + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, bridgeInterfaceEntryIid).get()); // b) check if termination end point is deleted in // config/network-topology - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, tpIid).get()); + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, tpIid).get()); waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); } @@ -607,7 +607,7 @@ public class InterfaceManagerConfigurationTest { .child(Table.class, new TableKey(NwConstants.LPORT_DISPATCHER_TABLE)).child(Flow.class, lportDispatcherFlowKey).build(); flowAssertTestUtils.assertFlowsInAnyOrder(ExpectedFlowEntries.newLportDispatcherFlow(), - dataBroker.newReadOnlyTransaction().read(CONFIGURATION, lportDispatcherFlowId).checkedGet().get()); + dataBroker.newReadOnlyTransaction().read(CONFIGURATION, lportDispatcherFlowId).get().get()); // check whether service-binding state cache is populated assertEqualBeans(ExpectedBoundServiceState.newBoundServiceState(), FlowBasedServicesUtils @@ -622,7 +622,7 @@ public class InterfaceManagerConfigurationTest { waitTillOperationCompletes("test unbind ingress service api", coordinatorEventsWaiter, 2, asyncEventsWaiter); - Assert.assertEquals(Optional.absent(), + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, lportDispatcherFlowId).get()); // check service-state cache is cleaned up @@ -646,10 +646,10 @@ public class InterfaceManagerConfigurationTest { // FIXME the extend file getting generated had some import issues, will revist later //assertEqualBeans(null, - // dataBroker.newReadOnlyTransaction().read(CONFIGURATION, egressDispatcherFlowId).checkedGet().get()); + // dataBroker.newReadOnlyTransaction().read(CONFIGURATION, egressDispatcherFlowId).get()); Assert.assertNotNull(dataBroker.newReadOnlyTransaction().read(CONFIGURATION, - egressDispatcherFlowId).checkedGet().get()); + egressDispatcherFlowId).get()); //10. test check whether service is bound on egress Assert.assertTrue(interfaceManager.isServiceBoundOnInterfaceForEgress(NwConstants.EGRESS_ACL_SERVICE_INDEX, @@ -659,7 +659,7 @@ public class InterfaceManagerConfigurationTest { interfaceManager.unbindService(INTERFACE_NAME, ServiceModeEgress.class, serviceInfo); waitTillOperationCompletes("test unbind egress service api", coordinatorEventsWaiter, 2, asyncEventsWaiter); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, egressDispatcherFlowId).get()); // 12. Test fetching child interfaces of an interface @@ -687,7 +687,7 @@ public class InterfaceManagerConfigurationTest { //assertEqualBeans(ExpectedInterfaceConfig.newVlanInterfaceConfig(INTERFACE_NAME_1, null), // dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, IfmUtil.buildId( - // INTERFACE_NAME_1)).checkedGet().get()); + // INTERFACE_NAME_1)).get()); // 17. Update Parent Refs for VLAN interface // FIXME Make IInterfaceManager truly async @@ -697,7 +697,7 @@ public class InterfaceManagerConfigurationTest { assertEqualBeans(ExpectedInterfaceConfig.newVlanInterfaceConfig(INTERFACE_NAME_1, PARENT_INTERFACE_1), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, IfmUtil - .buildId(INTERFACE_NAME_1)).checkedGet().get()); + .buildId(INTERFACE_NAME_1)).get()); // 18. Test creation of external l2vlan interfaces // FIXME Make IInterfaceManager truly async @@ -709,7 +709,7 @@ public class InterfaceManagerConfigurationTest { // to do proper assertion //Assert.assertNotNull(dataBroker // .newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, IfmUtil - // .buildId(INTERFACE_NAME_2)).checkedGet().get().augmentation(IfExternal.class)); + // .buildId(INTERFACE_NAME_2)).get().augmentation(IfExternal.class)); // 19. update parent-refs //interfaceManager.updateInterfaceParentRef(INTERFACE_NAME_2, PARENT_INTERFACE_2, true); @@ -717,7 +717,7 @@ public class InterfaceManagerConfigurationTest { coordinatorEventsWaiter, 4, asyncEventsWaiter); Assert.assertEquals(PARENT_INTERFACE_2, dataBroker .newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, IfmUtil - .buildId(INTERFACE_NAME_2)).checkedGet().get().augmentation(ParentRefs.class).getParentInterface()); + .buildId(INTERFACE_NAME_2)).get().get().augmentation(ParentRefs.class).getParentInterface()); // 20. get list of vlan interfaces // FIXME need to wait for https://git.opendaylight.org/gerrit/#/c/54811/ this to land @@ -856,14 +856,14 @@ public class InterfaceManagerConfigurationTest { new InterfaceChildEntryKey(TRUNK_INTERFACE_NAME)); assertEqualBeans(ExpectedInterfaceChildEntry.interfaceChildEntry(TRUNK_INTERFACE_NAME), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, interfaceChildEntryInstanceIdentifier) - .checkedGet().get()); + .get()); // Then // a) check if operational/ietf-interfaces-state is populated for the vlan interface org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508 .interfaces.state.Interface ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).get().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TRUNK_INTERFACE_NAME, Interface.OperStatus.Up, L2vlan.class, DPN_ID_1.toString(), ifaceState.getStatistics().getDiscontinuityTime()), ifaceState); @@ -874,7 +874,7 @@ public class InterfaceManagerConfigurationTest { IfIndexesInterfaceMap.class).child( IfIndexInterface.class, new IfIndexInterfaceKey(ifaceState.getIfIndex())).build(); Assert.assertEquals(TRUNK_INTERFACE_NAME, dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - ifIndexInterfaceInstanceIdentifier).checkedGet().get().getInterfaceName());*/ + ifIndexInterfaceInstanceIdentifier).get().getInterfaceName());*/ //Update test // i) vlan member interface admin-state updated @@ -886,7 +886,7 @@ public class InterfaceManagerConfigurationTest { //Then // a) check if operational/ietf-interfaces-state is updated for vlan interface ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, - IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).checkedGet().get(); + IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).get().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TRUNK_INTERFACE_NAME, Interface.OperStatus.Down, L2vlan.class, DPN_ID_1.toString(), ifaceState.getStatistics().getDiscontinuityTime()), ifaceState); @@ -896,16 +896,16 @@ public class InterfaceManagerConfigurationTest { coordinatorEventsWaiter, 7, asyncEventsWaiter); // 1. Then // a) - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(CONFIGURATION, interfaceChildEntryInstanceIdentifier).get()); // b) check if operational/ietf-interfaces-state is deleted for the vlan interface - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).get()); // FIXME can assert this only once ResourceBatchingManager becomes testable // c) check if lport-tag to interface mapping is deleted - /*Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + /*Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, ifIndexInterfaceInstanceIdentifier).get());*/ } @@ -940,6 +940,6 @@ public class InterfaceManagerConfigurationTest { entryBuilder.setInterfaceType(interfaceType); } tx.put(LogicalDatastoreType.OPERATIONAL, intfid, entryBuilder.build(), true); - tx.submit().checkedGet(); + tx.commit().get(); } } diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestModule.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestModule.java index 489d4a8c9..fbcb67f76 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestModule.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestModule.java @@ -9,10 +9,10 @@ package org.opendaylight.genius.interfacemanager.test; import static org.mockito.Mockito.mock; -import java.net.UnknownHostException; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; +import java.util.concurrent.Executors; import org.opendaylight.daexim.DataImportBootReady; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.datastoreutils.testutils.AbstractTestableListener; @@ -47,6 +47,9 @@ import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService; import org.opendaylight.mdsal.eos.binding.dom.adapter.BindingDOMEntityOwnershipServiceAdapter; import org.opendaylight.mdsal.eos.dom.simple.SimpleDOMEntityOwnershipService; @@ -69,13 +72,24 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041 public class InterfaceManagerTestModule extends AbstractGuiceJsr250Module { @Override - protected void configureBindings() throws UnknownHostException { + protected void configureBindings() throws Exception { // Bindings for services from this project // Bindings for external services to "real" implementations // Bindings to test infra (fakes & mocks) - DataBrokerTestModule dataBrokerTestModule = new DataBrokerTestModule(false); - DataBroker dataBroker = dataBrokerTestModule.getDataBroker(); + AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker(); bind(DataBroker.class).toInstance(dataBroker); bind(DataTreeEventCallbackRegistrar.class).toInstance(mock(DataTreeEventCallbackRegistrar.class)); bind(ManagedNewTransactionRunner.class).toInstance(mock(ManagedNewTransactionRunner.class)); @@ -94,7 +108,8 @@ public class InterfaceManagerTestModule extends AbstractGuiceJsr250Module { bind(InterfaceManagerService.class).to(InterfaceManagerServiceImpl.class); bind(ServiceRecoveryRegistry.class).toInstance(mock(ServiceRecoveryRegistry.class)); EntityOwnershipService entityOwnershipService = new BindingDOMEntityOwnershipServiceAdapter( - new SimpleDOMEntityOwnershipService(), dataBrokerTestModule.getBindingToNormalizedNodeCodec()); + new SimpleDOMEntityOwnershipService(), + test.getDataBrokerTestCustomizer().getBindingToNormalized()); bind(EntityOwnershipService.class).toInstance(entityOwnershipService); bind(EntityOwnershipUtils.class); bind(AlivenessMonitorService.class).toInstance(mock(AlivenessMonitorService.class)); diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java index f28b0e683..b0117cd31 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java @@ -7,17 +7,16 @@ */ package org.opendaylight.genius.interfacemanager.test; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.ExecutionException; + import org.awaitility.core.ConditionTimeoutException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.testutils.AsyncEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorCountedEventsWaiter; import org.opendaylight.genius.interfacemanager.IfmConstants; @@ -26,6 +25,8 @@ import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.Southboun import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.mdsalutil.MetaDataUtil; import org.opendaylight.genius.mdsalutil.NwConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; @@ -220,26 +221,27 @@ public final class InterfaceManagerTestUtil { return tpIid; } - static void deleteInterfaceConfig(DataBroker dataBroker, String ifaceName) throws TransactionCommitFailedException { + static void deleteInterfaceConfig(DataBroker dataBroker, String ifaceName) + throws ExecutionException, InterruptedException { InstanceIdentifier vlanInterfaceEnabledInterfaceInstanceIdentifier = IfmUtil.buildId( ifaceName); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.delete(CONFIGURATION, vlanInterfaceEnabledInterfaceInstanceIdentifier); - tx.submit().checkedGet(); + tx.commit().get(); } static void updateInterfaceAdminState(DataBroker dataBroker, String ifaceName, boolean isEnabled) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { InstanceIdentifier vlanInterfaceEnabledInterfaceInstanceIdentifier = IfmUtil.buildId(ifaceName); InterfaceBuilder builder = new InterfaceBuilder().withKey(new InterfaceKey(ifaceName)).setName(ifaceName) .setEnabled(isEnabled); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(CONFIGURATION, vlanInterfaceEnabledInterfaceInstanceIdentifier, builder.build()); - tx.submit().checkedGet(); + tx.commit().get(); } static void updateTunnelMonitoringAttributes(DataBroker dataBroker, String ifaceName) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { InstanceIdentifier tunnelInstanceIdentifier = IfmUtil.buildId(ifaceName); InterfaceBuilder builder = new InterfaceBuilder().withKey(new InterfaceKey(ifaceName)).setName(ifaceName); IfTunnel tunnel = new IfTunnelBuilder().setMonitorProtocol(TunnelMonitoringTypeBfd.class) @@ -247,13 +249,13 @@ public final class InterfaceManagerTestUtil { builder.addAugmentation(IfTunnel.class, tunnel); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(CONFIGURATION, tunnelInstanceIdentifier, builder.build()); - tx.submit().checkedGet(); + tx.commit().get(); } static void putInterfaceConfig(DataBroker dataBroker, String ifaceName, ParentRefs parentRefs, Class ifType) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { Interface interfaceInfo; if (!Tunnel.class.equals(ifType)) { interfaceInfo = InterfaceManagerTestUtil.buildInterface(ifaceName, ifaceName, true, ifType, @@ -265,58 +267,59 @@ public final class InterfaceManagerTestUtil { InstanceIdentifier interfaceInstanceIdentifier = IfmUtil.buildId(ifaceName); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(CONFIGURATION, interfaceInstanceIdentifier, interfaceInfo, true); - tx.submit().checkedGet(); + tx.commit().get(); } static void putVlanInterfaceConfig(DataBroker dataBroker, String ifaceName, String parentRefs, - IfL2vlan.L2vlanMode l2vlanMode) throws TransactionCommitFailedException { + IfL2vlan.L2vlanMode l2vlanMode) + throws ExecutionException, InterruptedException { Interface interfaceInfo = InterfaceManagerTestUtil.buildInterface(ifaceName, ifaceName, true, L2vlan.class, parentRefs, l2vlanMode); InstanceIdentifier interfaceInstanceIdentifier = IfmUtil.buildId(ifaceName); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(CONFIGURATION, interfaceInstanceIdentifier, interfaceInfo, true); - tx.submit().checkedGet(); + tx.commit().get(); } static void createFlowCapableNodeConnector(DataBroker dataBroker, String interfaceName, Class ifType) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); Uint64 dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; NodeConnector nodeConnector = InterfaceManagerTestUtil .buildFlowCapableNodeConnector(buildNodeConnectorId(dpnId, portNo), interfaceName, true); tx.put(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo), nodeConnector, true); - tx.submit().checkedGet(); + tx.commit().get(); } static void updateFlowCapableNodeConnectorState(DataBroker dataBroker, String interfaceName, - Class ifType, boolean isLive) throws TransactionCommitFailedException { + Class ifType, boolean isLive) throws ExecutionException, InterruptedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); Uint64 dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; NodeConnector nodeConnector = InterfaceManagerTestUtil .buildFlowCapableNodeConnector(buildNodeConnectorId(dpnId, portNo), interfaceName, isLive); tx.merge(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo), nodeConnector, true); - tx.submit().checkedGet(); + tx.commit().get(); } static void removeFlowCapableNodeConnectorState(DataBroker dataBroker, Class ifType) - throws TransactionCommitFailedException { + throws ExecutionException, InterruptedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); Uint64 dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; tx.delete(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo)); - tx.submit().checkedGet(); + tx.commit().get(); } - static void removeNode(DataBroker dataBroker) throws TransactionCommitFailedException { + static void removeNode(DataBroker dataBroker) throws ExecutionException, InterruptedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); InstanceIdentifier nodeInstanceIdentifier = InstanceIdentifier.builder(Nodes.class) .child(Node.class, new NodeKey(IfmUtil.buildDpnNodeId(DPN_ID_2))).build(); tx.delete(OPERATIONAL,nodeInstanceIdentifier); - tx.submit().checkedGet(); + tx.commit().get(); } static void waitTillOperationCompletes(JobCoordinatorCountedEventsWaiter coordinatorEventsWaiter, diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java index 07992775b..9f58417cb 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.interfacemanager.test; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; import com.google.common.collect.ImmutableBiMap; import java.net.Inet4Address; @@ -18,10 +18,10 @@ import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; @@ -100,7 +100,7 @@ public class OvsdbSouthboundTestUtil { return new NodeId(uri); } - public static void createBridge(DataBroker dataBroker) throws TransactionCommitFailedException { + public static void createBridge(DataBroker dataBroker) throws ExecutionException, InterruptedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); final InstanceIdentifier ovsdbBridgeIid = bridgeIid.builder() @@ -115,10 +115,11 @@ public class OvsdbSouthboundTestUtil { LOG.debug("Built with the intent to store bridge data {}", bridgeCreateAugmentationBuilder.toString()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(LogicalDatastoreType.OPERATIONAL, ovsdbBridgeIid, bridgeCreateAugmentationBuilder.build(), true); - tx.submit().checkedGet(); + tx.commit().get(); } - public static void updateBridge(DataBroker dataBroker, String datapathId) throws TransactionCommitFailedException { + public static void updateBridge(DataBroker dataBroker, String datapathId) + throws ExecutionException, InterruptedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); final InstanceIdentifier ovsdbBridgeIid = bridgeIid.builder() @@ -133,10 +134,10 @@ public class OvsdbSouthboundTestUtil { LOG.debug("Built with the intent to store bridge data {}", bridgeCreateAugmentationBuilder.toString()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(LogicalDatastoreType.OPERATIONAL, ovsdbBridgeIid, bridgeCreateAugmentationBuilder.build(), true); - tx.submit().checkedGet(); + tx.commit().get(); } - public static void deleteBridge(DataBroker dataBroker) throws TransactionCommitFailedException { + public static void deleteBridge(DataBroker dataBroker) throws ExecutionException, InterruptedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); final InstanceIdentifier ovsdbBridgeIid = bridgeIid.builder() @@ -144,7 +145,7 @@ public class OvsdbSouthboundTestUtil { LOG.debug("Built with the intent to delete bridge data {}", bridgeIid.toString()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.delete(LogicalDatastoreType.OPERATIONAL, ovsdbBridgeIid); - tx.submit().checkedGet(); + tx.commit().get(); } public static InstanceIdentifier createInstanceIdentifier(NodeId nodeId) { @@ -199,7 +200,7 @@ public class OvsdbSouthboundTestUtil { public static void createTerminationPoint(DataBroker dataBroker, String interfaceName, Class type, String externalId) throws - TransactionCommitFailedException { + ExecutionException, InterruptedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); @@ -223,12 +224,12 @@ public class OvsdbSouthboundTestUtil { tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(OPERATIONAL, tpId, tpBuilder.build(), true); - tx.submit().checkedGet(); + tx.commit().get(); } public static void updateTerminationPoint(DataBroker dataBroker, String interfaceName, Class type) throws - TransactionCommitFailedException { + ExecutionException, InterruptedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); @@ -249,7 +250,7 @@ public class OvsdbSouthboundTestUtil { tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(OPERATIONAL, tpId, tpBuilder.build(), true); - tx.submit().checkedGet(); + tx.commit().get(); } public static NodeKey createNodeKey(String ip, Integer port) { diff --git a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowOvsPorts.java b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowOvsPorts.java index 1f904b260..45aaf4646 100644 --- a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowOvsPorts.java +++ b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowOvsPorts.java @@ -12,8 +12,8 @@ import java.util.List; import org.apache.karaf.shell.commands.Argument; import org.apache.karaf.shell.commands.Command; import org.apache.karaf.shell.console.OsgiCommandSupport; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; diff --git a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowVxlan.java b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowVxlan.java index 1b24aec32..95ffdd6ea 100644 --- a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowVxlan.java +++ b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/ShowVxlan.java @@ -10,9 +10,9 @@ package org.opendaylight.genius.interfacemanager.shell; import java.util.List; import org.apache.karaf.shell.commands.Command; import org.apache.karaf.shell.console.OsgiCommandSupport; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java index 72818855e..82c8508c0 100644 --- a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java +++ b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java @@ -7,12 +7,12 @@ */ package org.opendaylight.genius.itm.api; -import com.google.common.base.Optional; import java.util.Collection; import java.util.List; import java.util.Map; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import java.util.Optional; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase; diff --git a/itm/itm-impl/pom.xml b/itm/itm-impl/pom.xml index 9d4c89808..78a9a076a 100644 --- a/itm/itm-impl/pom.xml +++ b/itm/itm-impl/pom.xml @@ -39,6 +39,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.serviceutils rpc-api + + org.opendaylight.serviceutils + tools-api + org.opendaylight.genius mdsalutil-api @@ -52,10 +56,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html blueprint-maven-plugin-annotation true - + org.opendaylight.mdsal.binding.model.ietf rfc7223 diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java index 8602c0de0..421181070 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java @@ -13,8 +13,6 @@ import java.util.List; import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.itm.globals.ITMConstants; @@ -28,6 +26,8 @@ import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; import org.opendaylight.infrautils.utils.concurrent.NamedSimpleReentrantLock.Acquired; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnEndpoints; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DpnTepStateCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DpnTepStateCache.java index 9f1ae7a5b..323c5330b 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DpnTepStateCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DpnTepStateCache.java @@ -11,14 +11,11 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -37,6 +34,10 @@ import org.opendaylight.genius.mdsalutil.cache.DataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; import org.opendaylight.infrautils.utils.concurrent.NamedSimpleReentrantLock.Acquired; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnTepsState; @@ -178,7 +179,7 @@ public class DpnTepStateCache extends DataObjectCache { DpnTepInterfaceInfo dpnTepInterfaceInfo = dpnTepInterfaceMap.get(getDpnId(srcDpnId, dstDpnId)); if (dpnTepInterfaceInfo == null) { try { - com.google.common.base.Optional dpnsTeps = super.get(srcDpnId); + Optional dpnsTeps = super.get(srcDpnId); if (dpnsTeps.isPresent()) { DpnsTeps teps = dpnsTeps.get(); teps.nonnullRemoteDpns().forEach(remoteDpns -> { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeEntryCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeEntryCache.java index 1058681ec..11efe77dd 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeEntryCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeEntryCache.java @@ -9,10 +9,10 @@ package org.opendaylight.genius.itm.cache; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.mdsalutil.cache.DataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.BridgeTunnelInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.bridge.tunnel.info.OvsBridgeEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.bridge.tunnel.info.OvsBridgeEntryKey; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeRefEntryCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeRefEntryCache.java index fa04f33ea..7dcb3eb5f 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeRefEntryCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OvsBridgeRefEntryCache.java @@ -9,10 +9,10 @@ package org.opendaylight.genius.itm.cache; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.mdsalutil.cache.DataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.OvsBridgeRefInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.ovs.bridge.ref.info.OvsBridgeRefEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.ovs.bridge.ref.info.OvsBridgeRefEntryKey; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java index a265ec110..79facf2ab 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java @@ -7,16 +7,16 @@ */ package org.opendaylight.genius.itm.cache; -import com.google.common.base.Optional; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Service; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TepTypeInternal; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelsState; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java index 9c7f21b73..e9fb7aef2 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.itm.cli; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; -import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; import java.util.ArrayList; @@ -20,6 +19,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.PostConstruct; @@ -27,14 +27,13 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.commons.lang3.StringUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner; import org.opendaylight.genius.itm.cache.UnprocessedTunnelsStateCache; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ItmUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase; @@ -151,7 +150,7 @@ public class TepCommandHelper { public TransportZone getTransportZone(String transportZoneName) { InstanceIdentifier tzonePath = InstanceIdentifier.builder(TransportZones.class) .child(TransportZone.class, new TransportZoneKey(transportZoneName)).build(); - return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, tzonePath, dataBroker).orNull(); + return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, tzonePath, dataBroker).orElse(null); } /** @@ -161,7 +160,7 @@ public class TepCommandHelper { */ public TransportZones getAllTransportZones() { InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class).build(); - return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker).orNull(); + return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker).orElse(null); } @@ -509,7 +508,8 @@ public class TepCommandHelper { tunType = ItmUtils.TUNNEL_TYPE_MAP.get(tunnelType); - InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class).build(); + InstanceIdentifier path = InstanceIdentifier.create(TransportZones.class); + Optional tzones = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); TransportZone tzone = new TransportZoneBuilder().withKey(new TransportZoneKey(transportZoneName)) @@ -523,13 +523,21 @@ public class TepCommandHelper { } tzList.add(tzone); TransportZones transportZones = new TransportZonesBuilder().setTransportZone(tzList).build(); + + /*InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class). + child(TransportZone.class, new TransportZoneKey(transportZoneName)).build(); + + TransportZone transportZone = new TransportZoneBuilder().setZoneName(transportZoneName) + .setTunnelType(tunType) + .withKey(new TransportZoneKey(transportZoneName)).build();*/ + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.put(LogicalDatastoreType.CONFIGURATION, - path, transportZones, WriteTransaction.CREATE_MISSING_PARENTS)).get(); + path, transportZones)).get(); } public void configureTunnelMonitorParams(boolean monitorEnabled, String monitorProtocol) { - InstanceIdentifier path = InstanceIdentifier.builder(TunnelMonitorParams.class).build(); + InstanceIdentifier path = InstanceIdentifier.create(TunnelMonitorParams.class); Optional storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); Class monitorType ; @@ -546,7 +554,7 @@ public class TepCommandHelper { TunnelMonitorParams tunnelMonitor = new TunnelMonitorParamsBuilder().setEnabled(monitorEnabled) .setMonitorProtocol(monitorType).build(); Futures.addCallback(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, - tx -> tx.merge(path, tunnelMonitor, true)), ItmUtils.DEFAULT_WRITE_CALLBACK, + tx -> tx.merge(path, tunnelMonitor)), ItmUtils.DEFAULT_WRITE_CALLBACK, MoreExecutors.directExecutor()); } } diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java index 8c4c87f2d..e16300cb5 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java @@ -7,11 +7,11 @@ */ package org.opendaylight.genius.itm.confighelpers; -import com.google.common.base.Optional; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collection; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; @@ -92,6 +92,8 @@ public class ItmExternalTunnelAddWorker { ExternalTunnel tnl = ItmUtils.buildExternalTunnel(teps.getDPNID().toString(), extIp.stringValue(), tunType, trunkInterfaceName); tx.merge(path, tnl, true); + ItmUtils.ITM_CACHE.addExternalTunnel(tnl); + } } } diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java index 516f5d368..eafc097d7 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java @@ -7,10 +7,10 @@ */ package org.opendaylight.genius.itm.confighelpers; -import com.google.common.base.Optional; import java.util.Collection; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java index 5a150c96d..bb8c5d14e 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java @@ -8,10 +8,9 @@ package org.opendaylight.genius.itm.confighelpers; import static java.util.Collections.singletonList; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.time.Duration; import java.util.ArrayList; @@ -19,11 +18,9 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -40,6 +37,9 @@ import org.opendaylight.genius.itm.impl.TunnelMonitoringConfig; import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.DirectTunnelUtils; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; @@ -142,7 +142,7 @@ public final class ItmInternalTunnelAddWorker { private static void updateDpnTepInfoToConfig(TypedWriteTransaction tx, DPNTEPsInfo dpn, DirectTunnelUtils directTunnelUtils) throws ExecutionException, InterruptedException, OperationFailedException { LOG.debug("Updating CONFIGURATION datastore with DPN {} ", dpn); - InstanceIdentifier dep = InstanceIdentifier.builder(DpnEndpoints.class).build() ; + InstanceIdentifier dep = InstanceIdentifier.create(DpnEndpoints.class) ; List dpnList = new ArrayList<>() ; dpnList.add(new DPNTEPsInfoBuilder(dpn) .setDstId(directTunnelUtils.allocateId(ITMConstants.ITM_IDPOOL_NAME, dpn.getDPNID().toString())).build()); @@ -382,8 +382,8 @@ public final class ItmInternalTunnelAddWorker { private static void updateDpnTepInterfaceInfoToConfig(DpnTepsState dpnTeps) { LOG.debug("Updating CONFIGURATION datastore with DPN-Teps {} ", dpnTeps); - InstanceIdentifier dpnTepsII = InstanceIdentifier.builder(DpnTepsState.class).build() ; - ITMBatchingUtils.update(dpnTepsII, dpnTeps, ITMBatchingUtils.EntityType.DEFAULT_CONFIG); + InstanceIdentifier dpnTepsII = InstanceIdentifier.create(DpnTepsState.class); + ITMBatchingUtils.updateContainer(dpnTepsII, dpnTeps, ITMBatchingUtils.EntityType.DEFAULT_CONFIG); } private void addTunnelConfiguration(Interface iface, String ofTunnelPortName) diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelDeleteWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelDeleteWorker.java index 2ffaf6cee..afabf2c3e 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelDeleteWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelDeleteWorker.java @@ -10,17 +10,14 @@ package org.opendaylight.genius.itm.confighelpers; import static java.util.Collections.singletonList; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.cloudscaler.api.TombstonedNodeManager; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -40,6 +37,9 @@ import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.Direc import org.opendaylight.genius.itm.utils.DpnTepInterfaceInfo; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorIntervalWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorIntervalWorker.java index f7f564507..fdbe0a9c9 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorIntervalWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorIntervalWorker.java @@ -11,12 +11,12 @@ import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.impl.ItmUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnelBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorIntervalBuilder; @@ -52,10 +52,10 @@ public class ItmMonitorIntervalWorker implements Callable> futures = new ArrayList<>(); List tunnelList = ItmUtils.getInternalTunnelInterfaces(dataBroker); LOG.debug("ItmMonitorIntervalWorker toggleTunnelMonitoring: List of tunnel interfaces: {}" , tunnelList); - InstanceIdentifier iid = InstanceIdentifier.builder(TunnelMonitorInterval.class).build(); + InstanceIdentifier iid = InstanceIdentifier.create(TunnelMonitorInterval.class); TunnelMonitorInterval monitorInterval = new TunnelMonitorIntervalBuilder().setInterval(interval).build(); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.OPERATIONAL, - tx -> tx.merge(iid, monitorInterval, true))); + tx -> tx.merge(iid, monitorInterval))); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> tunnelList.forEach(tunnel -> toggle(tunnel, tx)))); return futures; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorToggleWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorToggleWorker.java index 36d77b3e6..b4eb04fcb 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorToggleWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorToggleWorker.java @@ -11,12 +11,12 @@ import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.impl.ItmUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnelBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase; @@ -55,13 +55,13 @@ public class ItmMonitorToggleWorker implements Callable> toggleTunnelMonitoring() { List tunnelList = ItmUtils.getInternalTunnelInterfaces(dataBroker); LOG.debug("toggleTunnelMonitoring: TunnelList size {}", tunnelList.size()); - InstanceIdentifier iid = InstanceIdentifier.builder(TunnelMonitorParams.class).build(); + InstanceIdentifier iid = InstanceIdentifier.create(TunnelMonitorParams.class); TunnelMonitorParams monitorParams = new TunnelMonitorParamsBuilder() .setEnabled(enabled).setMonitorProtocol(monitorProtocol).build(); LOG.debug("toggleTunnelMonitoring: Updating Operational DS"); List> futures = new ArrayList<>(); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.OPERATIONAL, - tx -> tx.merge(iid, monitorParams, true))); + tx -> tx.merge(iid, monitorParams))); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> tunnelList.forEach(tunnel -> toggle(tunnel, tx)))); return futures; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorWorker.java index 095c1c953..96059249e 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmMonitorWorker.java @@ -7,15 +7,12 @@ */ package org.opendaylight.genius.itm.confighelpers; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -23,6 +20,8 @@ import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.cache.DpnTepStateCache; import org.opendaylight.genius.itm.cache.OvsBridgeRefEntryCache; import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.DirectTunnelUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorIntervalBuilder; @@ -120,7 +119,7 @@ public class ItmMonitorWorker implements Callable>> private void toggleForDirectEnabled(DpnsTeps dpnTeps, TypedWriteTransaction tx) - throws ReadFailedException, InterruptedException, ExecutionException { + throws ReadFailedException { List remoteDpnTepNewList = new ArrayList<>(); RemoteDpns remoteDpnNew = null; Optional ovsBridgeRefEntry = ovsBridgeRefEntryCache.get(dpnTeps.getSourceDpnId()); diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepAddWorker.java index 65d9ba14e..7ffd38ffd 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepAddWorker.java @@ -9,18 +9,18 @@ package org.opendaylight.genius.itm.confighelpers; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.itm.impl.ItmUtils; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.DcGatewayIpList; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepRemoveWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepRemoveWorker.java index 1b19f29af..5974116a4 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepRemoveWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepRemoveWorker.java @@ -9,11 +9,11 @@ package org.opendaylight.genius.itm.confighelpers; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedAddWorker.java index 69a1921c2..f006142c6 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedAddWorker.java @@ -8,16 +8,13 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; - import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.tepsinnothostedtransportzone.UnknownVteps; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedRemoveWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedRemoveWorker.java index abf5d72d8..efeae668e 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedRemoveWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedRemoveWorker.java @@ -11,9 +11,9 @@ import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelAggregationHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelAggregationHelper.java index d005effa6..9a654ba32 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelAggregationHelper.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelAggregationHelper.java @@ -8,22 +8,21 @@ package org.opendaylight.genius.itm.confighelpers; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -40,6 +39,7 @@ import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus; @@ -493,7 +493,7 @@ public class ItmTunnelAggregationHelper { InstanceIdentifier.builder(InterfaceChildInfo.class) .child(InterfaceParentEntry.class, interfaceParentEntryKey); InstanceIdentifier intfId = intfIdBuilder.build(); - return tx.read(intfId).get().orNull(); + return tx.read(intfId).get().orElse(null); } } } diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateAddHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateAddHelper.java index 5a817a2ad..9945edd56 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateAddHelper.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateAddHelper.java @@ -10,10 +10,10 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.itm.impl.ITMBatchingUtils; import org.opendaylight.genius.itm.impl.ItmUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddConfigHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddConfigHelper.java index 965d1ef8d..0b6ed5598 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddConfigHelper.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddConfigHelper.java @@ -12,13 +12,13 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ItmUtils; import org.opendaylight.genius.mdsalutil.MDSALUtil; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.NotHostedTransportZones; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddWorker.java index 5d72a38db..496a76151 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepAddWorker.java @@ -10,9 +10,9 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; import java.util.List; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveConfigHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveConfigHelper.java index f0d0515a4..cbaaba500 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveConfigHelper.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveConfigHelper.java @@ -11,13 +11,13 @@ import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ItmUtils; import org.opendaylight.genius.mdsalutil.MDSALUtil; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.NotHostedTransportZones; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveWorker.java index d886e0849..4aeb75b1a 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/OvsdbTepRemoveWorker.java @@ -10,9 +10,9 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; import java.util.List; import java.util.concurrent.Callable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/diagstatus/ItmDiagStatusProvider.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/diagstatus/ItmDiagStatusProvider.java index 6416c51ef..dbd8211c0 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/diagstatus/ItmDiagStatusProvider.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/diagstatus/ItmDiagStatusProvider.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.itm.diagstatus; import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; - import org.apache.aries.blueprint.annotation.service.Service; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.infrautils.diagstatus.DiagStatusService; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMBatchingUtils.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMBatchingUtils.java index 738409ed1..fb8069609 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMBatchingUtils.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMBatchingUtils.java @@ -10,12 +10,12 @@ package org.opendaylight.genius.itm.impl; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.utils.batching.ActionableResource; import org.opendaylight.genius.utils.batching.ActionableResources; import org.opendaylight.genius.utils.batching.DefaultBatchHandler; import org.opendaylight.genius.utils.batching.ResourceBatchingManager; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -71,6 +71,13 @@ public final class ITMBatchingUtils { getQueue(entityType).add(ActionableResources.update(path, data)); } + public static void updateContainer(InstanceIdentifier path, T data, + EntityType entityType) { + LOG.debug("Adding to the Queue to batch the update DS Operation - Id {} data {}", path, data); + getQueue(entityType).add(ActionableResources.updateContainer(path, data)); + } + + public static void write(InstanceIdentifier path, T data, EntityType entityType) { LOG.debug("Adding to the Queue to batch the write DS Operation - Id {} data {}", path, data); getQueue(entityType).add(ActionableResources.create(path, data)); diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmCache.java index 92727acec..4fe191b47 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmCache.java @@ -12,7 +12,6 @@ import java.util.Collection; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; - import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnelKey; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java index b798ad394..d6761a2cf 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java @@ -7,12 +7,12 @@ */ package org.opendaylight.genius.itm.impl; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -21,9 +21,6 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Service; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.genius.itm.api.IITMProvider; import org.opendaylight.genius.itm.cache.DpnTepStateCache; import org.opendaylight.genius.itm.cache.TunnelStateCache; @@ -41,6 +38,9 @@ import org.opendaylight.genius.itm.rpc.ItmManagerRpcService; import org.opendaylight.infrautils.diagstatus.ServiceState; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; import org.opendaylight.infrautils.utils.concurrent.LoggingFutures; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.eos.binding.api.Entity; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipCandidateRegistration; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipChange; @@ -83,7 +83,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi private final InterfaceStateListener ifStateListener; private final EntityOwnershipService entityOwnershipService; private final ItmDiagStatusProvider itmStatusProvider; - private RpcProviderRegistry rpcProviderRegistry; + private RpcProviderService rpcProviderService; private final ItmTunnelEventListener itmStateListener; private final OvsdbNodeListener ovsdbChangeListener; static short flag = 0; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java index 13c03419f..da4cd4d16 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java @@ -9,14 +9,11 @@ package org.opendaylight.genius.itm.impl; import static java.util.Collections.emptyList; -import com.google.common.base.Optional; import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableMap; import com.google.common.net.InetAddresses; import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.MoreExecutors; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.net.InetAddress; import java.nio.charset.StandardCharsets; @@ -25,17 +22,12 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; -import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.interfacemanager.globals.IfmConstants; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; @@ -53,6 +45,11 @@ import org.opendaylight.genius.mdsalutil.actions.ActionPuntToController; import org.opendaylight.genius.mdsalutil.instructions.InstructionApplyActions; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.genius.mdsalutil.matches.MatchTunnelId; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.Tunnel; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; @@ -133,7 +130,7 @@ import org.slf4j.LoggerFactory; public final class ItmUtils { private static final Logger LOG = LoggerFactory.getLogger(ItmUtils.class); - private static final String ITM_LLDP_FLOW_ENTRY = "ITM Flow Entry ::" + ITMConstants.LLDP_SERVICE_ID; + private static final String ITM_LLDP_FLOW_ENTRY = "ITM Flow Entry ::" + ITMConstants.LLDP_SERVICE_ID; private static final String TUNNEL = "tun"; private static final IpPrefix DUMMY_IP_PREFIX = IpPrefixBuilder.getDefaultInstance(ITMConstants.DUMMY_PREFIX); private static final long DEFAULT_MONITORING_INTERVAL = 100L; @@ -147,10 +144,10 @@ public final class ItmUtils { .put(ITMConstants.TUNNEL_TYPE_VXLAN, TunnelTypeVxlan.class) .build(); - private static final BiMap> STRING_CLASS_IMMUTABLE_BI_MAP = + private static final BiMap> STRING_CLASS_IMMUTABLE_BI_MAP = ImmutableBiMap.copyOf(TUNNEL_TYPE_MAP); private static final Uint64 COOKIE_ITM_LLD = Uint64.fromLongBits( - ITMConstants.COOKIE_ITM.longValue() + ITMConstants.LLDP_SERVICE_ID).intern(); + ITMConstants.COOKIE_ITM.longValue() + ITMConstants.LLDP_SERVICE_ID).intern(); private ItmUtils() { } @@ -172,16 +169,16 @@ public final class ItmUtils { * * @deprecated Use * {@link SingleTransactionDataBroker#syncReadOptional(DataBroker, LogicalDatastoreType, InstanceIdentifier)} - * instead of this. */ @Deprecated @SuppressWarnings("checkstyle:IllegalCatch") public static Optional read(LogicalDatastoreType datastoreType, InstanceIdentifier path, DataBroker broker) { - try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { + try (ReadTransaction tx = broker.newReadOnlyTransaction()) { return tx.read(datastoreType, path).get(); - } catch (Exception e) { - throw new RuntimeException(e); + } catch (InterruptedException | ExecutionException e) { + LOG.error("Read failed ", e); + return Optional.empty(); } } @@ -191,49 +188,49 @@ public final class ItmUtils { * * @deprecated Use {@link ManagedNewTransactionRunner} instead of this. */ - @Deprecated + /*@Deprecated public static void asyncWrite(LogicalDatastoreType datastoreType, InstanceIdentifier path, T data, DataBroker broker, FutureCallback callback) { WriteTransaction tx = broker.newWriteOnlyTransaction(); tx.put(datastoreType, path, data, true); - Futures.addCallback(tx.submit(), callback, MoreExecutors.directExecutor()); - } + Futures.addCallback(tx.commit(),callback, MoreExecutors.directExecutor()); + }*/ /** * Asynchronous non-blocking update to data store. * * @deprecated Use {@link ManagedNewTransactionRunner} instead of this. */ - @Deprecated + /*@Deprecated public static void asyncUpdate(LogicalDatastoreType datastoreType, InstanceIdentifier path, T data, DataBroker broker, FutureCallback callback) { WriteTransaction tx = broker.newWriteOnlyTransaction(); tx.merge(datastoreType, path, data, true); - Futures.addCallback(tx.submit(), callback, MoreExecutors.directExecutor()); - } + Futures.addCallback(tx.commit(), callback, MoreExecutors.directExecutor()); + }*/ /** * Asynchronous non-blocking single delete to data store. * * @deprecated Use {@link ManagedNewTransactionRunner} instead of this. */ - @Deprecated + /*@Deprecated public static void asyncDelete(LogicalDatastoreType datastoreType, InstanceIdentifier path, DataBroker broker, FutureCallback callback) { WriteTransaction tx = broker.newWriteOnlyTransaction(); tx.delete(datastoreType, path); - Futures.addCallback(tx.submit(), callback, MoreExecutors.directExecutor()); - } + Futures.addCallback(tx.commit(), callback, MoreExecutors.directExecutor()); + }*/ /** * Asynchronous non-blocking bulk delete to data store. * * @deprecated Use {@link ManagedNewTransactionRunner} instead of this. */ - @Deprecated + /*@Deprecated public static void asyncBulkRemove(final DataBroker broker, final LogicalDatastoreType datastoreType, List> pathList, @@ -243,9 +240,9 @@ public final class ItmUtils { for (InstanceIdentifier path : pathList) { tx.delete(datastoreType, path); } - Futures.addCallback(tx.submit(), callback ,MoreExecutors.directExecutor()); + Futures.addCallback(tx.commit(), callback ,MoreExecutors.directExecutor()); } - } + }*/ //ITM cleanup:portname and vlanId are removed, causes change in generated //interface name: This has upgrade impact @@ -264,7 +261,7 @@ public final class ItmUtils { tunnelTypeStr = ITMConstants.TUNNEL_TYPE_VXLAN; } String trunkInterfaceName = trunkInterfaceName(parentInterfaceName, localHostName, remoteHostName, - tunnelTypeStr); + tunnelTypeStr); LOG.trace("trunk interface name is {}", trunkInterfaceName); return TUNNEL + getUniqueIdString(trunkInterfaceName); } @@ -279,19 +276,19 @@ public final class ItmUtils { } if (LOG.isTraceEnabled()) { LOG.trace("Releasing Id for trunkInterface - {}", trunkInterfaceName(parentInterfaceName, localHostName, - remoteHostName, tunnelTypeStr)); + remoteHostName, tunnelTypeStr)); } } private static String trunkInterfaceName(String parentInterfaceName, String localHostName, String remoteHostName, - String tunnelType) { + String tunnelType) { return parentInterfaceName + ":" + localHostName + ":" + remoteHostName + ":" + tunnelType; } public static String getLogicalTunnelGroupName(Uint64 srcDpnId, Uint64 destDpnId) { String groupName = srcDpnId + ":" + destDpnId + ":" + ITMConstants.TUNNEL_TYPE_LOGICAL_GROUP_VXLAN; LOG.trace("logical tunnel group name is {}", groupName); - return TUNNEL + getUniqueIdString(groupName); + return TUNNEL + getUniqueIdString(groupName); } public static InetAddress getInetAddressFromIpAddress(IpAddress ip) { @@ -309,7 +306,7 @@ public final class ItmUtils { public static TunnelEndPoints createTunnelEndPoints(Uint64 dpnId, IpAddress ipAddress, String portName, boolean isOfTunnel, int vlanId, List zones, - Class tunnelType, + Class tunnelType, String tos) { // when Interface Mgr provides support to take in Dpn Id return new TunnelEndPointsBuilder().withKey(new TunnelEndPointsKey(ipAddress, tunnelType)) @@ -322,10 +319,10 @@ public final class ItmUtils { public static TunnelEndPoints createDummyTunnelEndPoints(Uint64 dpnID, IpAddress ipAddress, boolean ofTunnel, String tos, List zones, - Class tunnelType, + Class tunnelType, String port, int vlanID) { - return ItmUtils.createTunnelEndPoints(dpnID, ipAddress, port, ofTunnel,vlanID, zones, + return ItmUtils.createTunnelEndPoints(dpnID, ipAddress, port, ofTunnel, vlanID, zones, tunnelType, tos); } @@ -363,7 +360,7 @@ public final class ItmUtils { List tunOptions) { return buildTunnelInterface(dpn, ifName, desc, enabled, tunType, localIp, remoteIp, internal, - monitorEnabled, monitorProtocol, monitorInterval, useOfTunnel, null, + monitorEnabled, monitorProtocol, monitorInterval, useOfTunnel, null, tunOptions); } @@ -381,7 +378,7 @@ public final class ItmUtils { builder.addAugmentation(ParentRefs.class, parentRefs); Long monitoringInterval = null; LOG.debug("buildTunnelInterface: monitorProtocol = {} and monitorInterval = {}", - monitorProtocol.getName(),monitorInterval); + monitorProtocol.getName(), monitorInterval); if (monitorInterval != null) { monitoringInterval = monitorInterval.longValue(); @@ -528,7 +525,6 @@ public final class ItmUtils { * * @deprecated Use * {@link SingleTransactionDataBroker#syncWrite(DataBroker, LogicalDatastoreType, InstanceIdentifier, DataObject)} - * instead of this. */ @Deprecated public static void syncWrite(LogicalDatastoreType datastoreType, @@ -536,7 +532,7 @@ public final class ItmUtils { WriteTransaction tx = broker.newWriteOnlyTransaction(); tx.put(datastoreType, path, data, true); try { - tx.submit().get(); + tx.commit().get(); } catch (InterruptedException | ExecutionException e) { LOG.error("ITMUtils:SyncWrite , Error writing to datastore (path, data) : ({}, {})", path, data); throw new RuntimeException(e.getMessage(), e); @@ -560,8 +556,7 @@ public final class ItmUtils { List tunnelList = new ArrayList<>(); if (internalInterfaces.isEmpty()) { tunnelList = getAllInternalTunnlInterfacesFromDS(dataBroker); - } - else { + } else { LOG.debug("Internal Interfaces from Cache size: {}", internalInterfaces.size()); tunnelList.addAll(internalInterfaces); } @@ -576,8 +571,7 @@ public final class ItmUtils { if (internalInterfaces.isEmpty()) { LOG.trace("ItmUtils.getInternalTunnelsFromCache invoking getAllInternalTunnlInterfacesFromDS"); tunnelList = getAllInternalTunnels(dataBroker); - } - else { + } else { LOG.debug("No. of Internal Tunnel Interfaces in cache: {} ", internalInterfaces.size()); tunnelList.addAll(internalInterfaces); } @@ -586,7 +580,7 @@ public final class ItmUtils { } @SuppressFBWarnings("RV_CHECK_FOR_POSITIVE_INDEXOF") - public static ExternalTunnelKey getExternalTunnelKey(String dst , String src, + public static ExternalTunnelKey getExternalTunnelKey(String dst, String src, Class tunType) { final int srcIndex = src.indexOf("physicalswitch"); if (srcIndex > 0) { @@ -650,7 +644,7 @@ public final class ItmUtils { private static ExternalTunnel getExternalTunnelFromDS(String interfaceName, DataBroker broker) { List externalTunnels = getAllExternalTunnels(broker); - if (externalTunnels != null) { + if (externalTunnels != null) { for (ExternalTunnel tunnel : externalTunnels) { String tunnelInterfaceName = tunnel.getTunnelInterfaceName(); if (tunnelInterfaceName != null && tunnelInterfaceName.equalsIgnoreCase(interfaceName)) { @@ -687,9 +681,9 @@ public final class ItmUtils { public static String convertTunnelTypetoString(Class tunType) { String tunnelType = ITMConstants.TUNNEL_TYPE_VXLAN; if (tunType.equals(TunnelTypeVxlan.class)) { - tunnelType = ITMConstants.TUNNEL_TYPE_VXLAN ; + tunnelType = ITMConstants.TUNNEL_TYPE_VXLAN; } else if (tunType.equals(TunnelTypeGre.class)) { - tunnelType = ITMConstants.TUNNEL_TYPE_GRE ; + tunnelType = ITMConstants.TUNNEL_TYPE_GRE; } else if (tunType.equals(TunnelTypeMplsOverGre.class)) { tunnelType = ITMConstants.TUNNEL_TYPE_MPLSoGRE; } else if (tunType.equals(TunnelTypeLogicalGroup.class)) { @@ -743,7 +737,7 @@ public final class ItmUtils { zones.add(new TzMembershipBuilder().setZoneName(zoneName).build()); } - public static List createTransportZoneMembership(String zoneName) { + public static List createTransportZoneMembership(String zoneName) { List zones = new ArrayList<>(); zones.add(new TzMembershipBuilder().setZoneName(zoneName).build()); return zones; @@ -752,10 +746,8 @@ public final class ItmUtils { /** * Gets the transport zone in TepsNotHosted list in the Operational Datastore, based on transport zone name. * - * @param unknownTz transport zone name - * + * @param unknownTz transport zone name * @param dataBroker data broker handle to perform read operations on Oper datastore - * * @return the TepsInNotHostedTransportZone object in the TepsNotHosted list in Oper DS */ public static TepsInNotHostedTransportZone getUnknownTransportZoneFromITMOperDS( @@ -775,12 +767,9 @@ public final class ItmUtils { /** * Gets the bridge datapath ID from Network topology Node's OvsdbBridgeAugmentation, in the Operational DS. * - * @param node Network Topology Node - * - * @param bridge bridge name - * + * @param node Network Topology Node + * @param bridge bridge name * @param dataBroker data broker handle to perform operations on datastore - * * @return the datapath ID of bridge in string form */ public static String getBridgeDpid(Node node, String bridge, DataBroker dataBroker) { @@ -797,7 +786,7 @@ public final class ItmUtils { InstanceIdentifier .create(NetworkTopology.class) .child(Topology.class, new TopologyKey(IfmConstants.OVSDB_TOPOLOGY_ID)) - .child(Node.class,new NodeKey(brNodeId)); + .child(Node.class, new NodeKey(brNodeId)); Optional opBridgeNode = ItmUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker); @@ -819,15 +808,13 @@ public final class ItmUtils { * based on Bridge Augmentation. * * @param bridgeAugmentation bridge augmentation of OVSDB node - * - * @param dataBroker data broker handle to perform operations on datastore - * + * @param dataBroker data broker handle to perform operations on datastore * @return the Network Topology Node i.e. OVSDB node which is managing the specified bridge */ public static Node getOvsdbNode(OvsdbBridgeAugmentation bridgeAugmentation, DataBroker dataBroker) { Node ovsdbNode = null; - Optional opOvsdbNode = Optional.absent(); + Optional opOvsdbNode = Optional.empty(); if (bridgeAugmentation != null) { InstanceIdentifier ovsdbNodeIid = (InstanceIdentifier) bridgeAugmentation.getManagedBy().getValue(); @@ -844,7 +831,6 @@ public final class ItmUtils { * Network topology Node's OvsdbBridgeAugmentation in the Operational DS. * * @param augmentedNode Ovsdb Augmented Network Topology Node - * * @return the datapath ID of bridge in string form */ public static String getStrDatapathId(OvsdbBridgeAugmentation augmentedNode) { @@ -867,7 +853,7 @@ public final class ItmUtils { /** * Deletes the transport zone from Configuration datastore. * - * @param tzName transport zone name + * @param tzName transport zone name * @param dataBroker data broker handle to perform operations on datastore */ public static void deleteTransportZoneFromConfigDS(String tzName, DataBroker dataBroker) { @@ -891,7 +877,6 @@ public final class ItmUtils { * corresponding to tunnelType obtained in String format. * * @param tunnelType type of tunnel in string form - * * @return tunnel-type in TunnelTypeBase object */ public static Class getTunnelType(String tunnelType) { @@ -912,7 +897,7 @@ public final class ItmUtils { public static List removeTransportZoneMembership(TunnelEndPoints endPts, List zones) { LOG.trace(" RemoveTransportZoneMembership TEPs {}, Membership to be removed {} ", endPts, zones); - List existingTzList = new ArrayList<>(endPts.nonnullTzMembership()) ; + List existingTzList = new ArrayList<>(endPts.nonnullTzMembership()); for (TzMembership membership : zones) { existingTzList.remove(new TzMembershipBuilder().setZoneName(membership.getZoneName()).build()); } @@ -929,7 +914,7 @@ public final class ItmUtils { for (TunnelEndPoints tep : dstDpn.nonnullTunnelEndPoints()) { if (Objects.equals(tep.getIpAddress(), srcTep.getIpAddress())) { List tzMemberships = tep.nonnullTzMembership(); - LOG.debug("Original Membership size {}", tzMemberships.size()) ; + LOG.debug("Original Membership size {}", tzMemberships.size()); return tzMemberships; } } @@ -939,7 +924,7 @@ public final class ItmUtils { } public static StateTunnelList buildStateTunnelList(StateTunnelListKey tlKey, String name, boolean state, - TunnelOperStatus tunOpStatus, IInterfaceManager ifaceManager, + TunnelOperStatus tunOpStatus, IInterfaceManager ifaceManager, DataBroker broker) { StateTunnelListBuilder stlBuilder = new StateTunnelListBuilder(); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface iface = @@ -997,9 +982,9 @@ public final class ItmUtils { } @NonNull - public static Optional getInternalTunnelFromDS(Uint64 srcDpn, Uint64 destDpn, - Class type, - DataBroker dataBroker) { + public static Optional getInternalTunnelFromDS(Uint64 srcDpn, Uint64 destDpn, + Class type, + DataBroker dataBroker) { InstanceIdentifier pathLogicTunnel = InstanceIdentifier.create(TunnelList.class) .child(InternalTunnel.class, new InternalTunnelKey(destDpn, srcDpn, type)); @@ -1088,7 +1073,7 @@ public final class ItmUtils { /** * Returns the transport zone from Configuration datastore. * - * @param tzName transport zone name + * @param tzName transport zone name * @param dataBroker data broker handle to perform operations on datastore * @return the TransportZone object in Config DS */ @@ -1108,7 +1093,7 @@ public final class ItmUtils { if (STRING_CLASS_IMMUTABLE_BI_MAP.containsKey(tunnelType)) { tunType = STRING_CLASS_IMMUTABLE_BI_MAP.get(tunnelType); } - return tunType ; + return tunType; } public static List getDpIdFromTransportzone(DataBroker dataBroker, String tzone) { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java index ec9c300ef..54429f8db 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java @@ -7,16 +7,16 @@ */ package org.opendaylight.genius.itm.impl; -import com.google.common.base.Optional; +import java.util.Optional; import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.mdsalutil.cache.InstanceIdDataObjectCache; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParams; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InterfaceConfigListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InterfaceConfigListener.java index fc301dce3..2f2b6f049 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InterfaceConfigListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InterfaceConfigListener.java @@ -12,12 +12,12 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ITMBatchingUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InternalTunnelListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InternalTunnelListener.java index 6a3b4bebd..7ffc987ac 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InternalTunnelListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/InternalTunnelListener.java @@ -13,12 +13,12 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ITMBatchingUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnel; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TerminationPointStateListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TerminationPointStateListener.java index 25d13ae51..fac0b8eda 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TerminationPointStateListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TerminationPointStateListener.java @@ -7,16 +7,13 @@ */ package org.opendaylight.genius.itm.itmdirecttunnels.listeners; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.itm.cache.BfdStateCache; @@ -27,7 +24,10 @@ import org.opendaylight.genius.itm.impl.ItmUtils; import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.DirectTunnelUtils; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelInventoryStateListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelInventoryStateListener.java index 0d4efde69..af3b77a78 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelInventoryStateListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelInventoryStateListener.java @@ -20,9 +20,6 @@ import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore.Operational; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; @@ -45,7 +42,10 @@ import org.opendaylight.genius.itm.utils.TunnelStateInfo; import org.opendaylight.genius.itm.utils.TunnelStateInfoBuilder; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; import org.opendaylight.infrautils.utils.concurrent.NamedSimpleReentrantLock.Acquired; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelListenerCreator.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelListenerCreator.java index 6915ce53f..d2ac45553 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelListenerCreator.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelListenerCreator.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.itm.itmdirecttunnels.listeners; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.itm.cache.BfdStateCache; import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache; @@ -22,6 +21,7 @@ import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.Direc import org.opendaylight.genius.itm.listeners.RemoteDpnListener; import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelTopologyStateListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelTopologyStateListener.java index 14b5d9f30..eda5893d3 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelTopologyStateListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/listeners/TunnelTopologyStateListener.java @@ -7,16 +7,13 @@ */ package org.opendaylight.genius.itm.itmdirecttunnels.listeners; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.Callable; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.itm.cache.DpnTepStateCache; @@ -24,7 +21,10 @@ import org.opendaylight.genius.itm.cache.OvsBridgeEntryCache; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities.DirectTunnelUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.bridge.tunnel.info.OvsBridgeEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.bridge.tunnel.info.OvsBridgeEntryBuilder; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java index 341356c0d..eb5743fb0 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java @@ -569,7 +569,7 @@ public final class DirectTunnelUtils { } public void updateBfdConfiguration(Uint64 srcDpnId, RemoteDpns remoteDpn, - com.google.common.base.@NonNull Optional ovsBridgeRefEntry) { + Optional ovsBridgeRefEntry) { if (ovsBridgeRefEntry.isPresent()) { LOG.debug("creating bridge interface on dpn {}", srcDpnId); InstanceIdentifier bridgeIid = diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceChildInfoListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceChildInfoListener.java index b0f8e712a..ee21ce235 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceChildInfoListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceChildInfoListener.java @@ -11,10 +11,10 @@ package org.opendaylight.genius.itm.listeners; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.itm.confighelpers.ItmTunnelAggregationHelper; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.InterfaceChildInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java index 36834bd2e..309e5dbc8 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java @@ -8,17 +8,14 @@ package org.opendaylight.genius.itm.listeners; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.itm.cache.TunnelStateCache; import org.opendaylight.genius.itm.cache.UnprocessedTunnelsStateCache; @@ -29,7 +26,10 @@ import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ITMBatchingUtils; import org.opendaylight.genius.itm.impl.ItmUtils; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractSyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.serviceutils.tools.listener.AbstractSyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; @@ -150,7 +150,7 @@ public class InterfaceStateListener extends AbstractSyncDataTreeChangeListener resultBld = null; Uint64 sourceDpn = input.getSourceDpid(); Uint64 destinationDpn = input.getDestinationDpid(); - Optional optTunnel = Optional.absent(); + Optional optTunnel = Optional.empty(); if (interfaceManager.isItmDirectTunnelsEnabled()) { DpnTepInterfaceInfo interfaceInfo = dpnTepStateCache.getDpnTepInterface(sourceDpn, destinationDpn); @@ -670,7 +670,7 @@ public class ItmManagerRpcService implements ItmRpcService { for (DPNTEPsInfo teps : meshedDpnList) { TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0); if (dstIp.equals(firstEndPt.getIpAddress())) { - Optional optTunnel = Optional.absent(); + Optional optTunnel = Optional.empty(); if (interfaceManager.isItmDirectTunnelsEnabled()) { DpnTepInterfaceInfo interfaceInfo = dpnTepStateCache.getDpnTepInterface(srcDpn, teps.getDPNID()); @@ -821,8 +821,8 @@ public class ItmManagerRpcService implements ItmRpcService { .setNodeId(nodeId).setTopologyId(input.getTopologyId()).build(); //TO DO: add retry if it fails FluentFuture future = retryingTxRunner - .callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> tx.put(path, deviceVtep, - true)); + .callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> tx.put(path, + deviceVtep, true)); future.addCallback(new FutureCallback() { diff --git a/itm/itm-impl/src/main/resources/OSGI-INF/blueprint/itm.xml b/itm/itm-impl/src/main/resources/OSGI-INF/blueprint/itm.xml index 4287e3bd1..425b4ad63 100644 --- a/itm/itm-impl/src/main/resources/OSGI-INF/blueprint/itm.xml +++ b/itm/itm-impl/src/main/resources/OSGI-INF/blueprint/itm.xml @@ -14,7 +14,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html interface="org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService" /> + interface="org.opendaylight.mdsal.binding.api.DataBroker" /> diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/cli/TepCommandHelperTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/cli/TepCommandHelperTest.java index 04feddf2c..586eccf37 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/cli/TepCommandHelperTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/cli/TepCommandHelperTest.java @@ -14,14 +14,13 @@ import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; -import com.google.common.util.concurrent.Futures; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.junit.After; import org.junit.Before; @@ -29,14 +28,14 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.itm.cache.UnprocessedTunnelsStateCache; import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.genius.itm.impl.ItmUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev170119.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; @@ -68,6 +67,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transp import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Vteps; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsKey; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; @@ -120,7 +120,7 @@ public class TepCommandHelperTest { private final java.lang.Class tunnelType2 = TunnelTypeGre.class; private final InstanceIdentifier transportZoneIdentifier = InstanceIdentifier - .builder(TransportZones.class).child(TransportZone.class, new TransportZoneKey(transportZone1)).build(); + .create(TransportZones.class).child(TransportZone.class, new TransportZoneKey(transportZone1)); private final InstanceIdentifier transportZonesIdentifier = InstanceIdentifier.builder(TransportZones.class).build(); private final InstanceIdentifier tunnelMonitorIntervalIdentifier = @@ -142,7 +142,7 @@ public class TepCommandHelperTest { @Mock private ItmConfig itmConfig; @Mock - private ReadOnlyTransaction mockReadTx; + private ReadTransaction mockReadTx; @Mock private WriteTransaction mockWriteTx; @@ -165,19 +165,19 @@ public class TepCommandHelperTest { .Interface> ifStateOptionalNew = Optional.of(interfaceTestNew); - doReturn(Futures.immediateCheckedFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZoneIdentifier); - doReturn(Futures.immediateCheckedFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZonesIdentifier); - doReturn(Futures.immediateCheckedFuture(optionalTunnelMonitorInterval)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(optionalTunnelMonitorInterval)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION,tunnelMonitorIntervalIdentifier); - doReturn(Futures.immediateCheckedFuture(optionalTunnelMonitorParams)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(optionalTunnelMonitorParams)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION,tunnelMonitorParamsIdentifier); - doReturn(Futures.immediateCheckedFuture(optionalVteps)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(optionalVteps)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION,vtepsIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(ifStateOptional)).when(mockReadTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(ifStateOptional)).when(mockReadTx) .read(LogicalDatastoreType.OPERATIONAL,interfaceIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(ifStateOptionalNew)).when(mockReadTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(ifStateOptionalNew)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION,interfaceIdentifierNew); unprocessedTunnelsStateCache = new UnprocessedTunnelsStateCache(); @@ -231,8 +231,8 @@ public class TepCommandHelperTest { interval, false, null); doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); - lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); - doReturn(FluentFuture.from(Futures.immediateCheckedFuture(CommitInfo.empty()))).when(mockWriteTx).commit(); + lenient().doReturn(FluentFutures.immediateNullFluentFuture()).when(mockWriteTx).commit(); + doReturn(FluentFuture.from(FluentFutures.immediateFluentFuture(CommitInfo.empty()))).when(mockWriteTx).commit(); } @Test @@ -254,10 +254,10 @@ public class TepCommandHelperTest { transportZoneNew = new TransportZoneBuilder().setZoneName(transportZone1).setTunnelType(tunnelType2) .setDeviceVteps(deviceVtepsList).setVteps(vtepsList).build(); - doReturn(Futures.immediateCheckedFuture(Optional.of(transportZoneNew))).when(mockReadTx).read( + doReturn(FluentFutures.immediateFluentFuture(Optional.of(transportZoneNew))).when(mockReadTx).read( LogicalDatastoreType.CONFIGURATION,transportZoneIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType - .CONFIGURATION,transportZonesIdentifier); + lenient().doReturn(FluentFutures.immediateFluentFuture(Optional.empty())) + .when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,transportZonesIdentifier); try { tepCommandHelper.createLocalCache(dpId1,tepIp1,transportZone1); @@ -278,12 +278,10 @@ public class TepCommandHelperTest { Optional optionalTransportZone = Optional.of(transportZoneNew); - doReturn(Futures.immediateCheckedFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZoneIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType - .CONFIGURATION,transportZonesIdentifier); - - + lenient().doReturn(FluentFutures.immediateFluentFuture(Optional.empty())) + .when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,transportZonesIdentifier); try { tepCommandHelper.createLocalCache(dpId1,tepIp1,transportZone1); tepCommandHelper.createLocalCache(dpId2,tepIp1,transportZone1); @@ -309,7 +307,7 @@ public class TepCommandHelperTest { @Test public void testConfigureTunnelType() throws ExecutionException, InterruptedException { - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(Optional.empty())).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZoneIdentifier); tepCommandHelper.configureTunnelType(transportZone1, "VXLAN"); @@ -321,7 +319,7 @@ public class TepCommandHelperTest { .setTunnelType(TunnelTypeVxlan.class).build()); verify(mockWriteTx).put(LogicalDatastoreType.CONFIGURATION, transportZonesIdentifier, - new TransportZonesBuilder().setTransportZone(newList).build(),true); + new TransportZonesBuilder().setTransportZone(newList).build()); } @Test @@ -345,7 +343,8 @@ public class TepCommandHelperTest { tepCommandHelper.configureTunnelMonitorParams(enabled, "BFD"); verify(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,tunnelMonitorParamsIdentifier); - verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,tunnelMonitorParamsIdentifier,tunnelMonitor,true); + verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,tunnelMonitorParamsIdentifier, + tunnelMonitor); } @SuppressWarnings("checkstyle:IllegalCatch") @@ -394,7 +393,7 @@ public class TepCommandHelperTest { @Test public void testBuildTepsTunnelTypeGre() { - doReturn(Futures.immediateCheckedFuture(Optional.of(transportZoneNew))).when(mockReadTx).read( + doReturn(FluentFutures.immediateFluentFuture(Optional.of(transportZoneNew))).when(mockReadTx).read( LogicalDatastoreType.CONFIGURATION, transportZoneIdentifier); try { @@ -413,7 +412,7 @@ public class TepCommandHelperTest { @Test public void testBuildTepsTransportZoneAbsent() throws TepException { - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(Optional.empty())).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZoneIdentifier); tepCommandHelper.createLocalCache(dpId1,tepIp1,transportZone1); @@ -442,7 +441,7 @@ public class TepCommandHelperTest { optionalTransportZones = Optional.of(transportZonesNew); - doReturn(Futures.immediateCheckedFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZonesIdentifier); String output = null; @@ -465,7 +464,7 @@ public class TepCommandHelperTest { transportZones = new TransportZonesBuilder().setTransportZone(transportZoneList).build(); optionalTransportZones = Optional.of(transportZones); - doReturn(Futures.immediateCheckedFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(optionalTransportZones)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZonesIdentifier); try { diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java index 87f846dc4..66798a020 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java @@ -12,10 +12,9 @@ import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.Future; import org.junit.After; import org.junit.Before; @@ -24,9 +23,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; @@ -40,6 +36,9 @@ import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl; import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -163,7 +162,7 @@ public class ItmExternalTunnelAddTest { @Mock DataBroker dataBroker; @Mock JobCoordinator jobCoordinator; - @Mock ReadOnlyTransaction mockReadTx; + @Mock ReadTransaction mockReadTx; @Mock WriteTransaction mockWriteTx; @Mock TypedWriteTransaction typedWriteTransaction; @Mock TypedReadWriteTransaction typedReadWriteTransaction; @@ -284,7 +283,7 @@ public class ItmExternalTunnelAddTest { lenient().doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); lenient().doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); - lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); + lenient().doReturn(FluentFutures.immediateNullFluentFuture()).when(mockWriteTx).commit(); doReturn("phy0").when(itmConfig).getPortname(); doReturn(Uint16.valueOf(100)).when(itmConfig).getVlanId(); } diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java index 70e8f7a70..bb6f61899 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java @@ -14,10 +14,10 @@ import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import junit.framework.TestCase; @@ -27,15 +27,15 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.confighelpers.HwVtep; import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelDeleteWorker; import org.opendaylight.genius.itm.globals.ITMConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -141,7 +141,7 @@ public class ItmExternalTunnelDeleteTest { InstanceIdentifier path ; @Mock DataBroker dataBroker; - @Mock ReadOnlyTransaction mockReadTx; + @Mock ReadTransaction mockReadTx; @Mock WriteTransaction mockWriteTx; @Mock IdManagerService idManagerService; @Mock TypedWriteTransaction typedWriteTransaction; @@ -257,7 +257,7 @@ public class ItmExternalTunnelDeleteTest { lenient().doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); lenient().doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); - lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); + lenient().doReturn(FluentFutures.immediateNullFluentFuture()).when(mockWriteTx).commit(); doReturn("phy0").when(itmConfig).getPortname(); doReturn(Uint16.valueOf(100)).when(itmConfig).getVlanId(); } diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java index a7d4983e0..c6e90c4c4 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java @@ -10,10 +10,9 @@ package org.opendaylight.genius.itm.impl; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import org.junit.After; @@ -21,10 +20,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.itm.cache.OfEndPointCache; @@ -37,6 +32,10 @@ import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl; import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -66,6 +65,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.dpn.teps.info.TunnelEndPointsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnelKey; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -151,7 +151,7 @@ public class ItmInternalTunnelAddTest { Future> dstId2Output; @Mock DataBroker dataBroker; - @Mock ReadOnlyTransaction mockReadTx; + @Mock ReadTransaction mockReadTx; @Mock ReadWriteTransaction mockReadWriteTx; @Mock IMdsalApiManager mdsalApiManager; @Mock IdManagerService idManagerService; @@ -180,13 +180,13 @@ public class ItmInternalTunnelAddTest { dstId1Output = RpcResultBuilder.success(expectedDstID1).buildFuture(); dstId2Output = RpcResultBuilder.success(expectedDstID2).buildFuture(); - doReturn(Futures.immediateCheckedFuture(tunnelMonitorParamsOptional)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorParamsOptional)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorParamsInstanceIdentifier); - doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorIntervalOptional)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier); - doReturn(Futures.immediateCheckedFuture(tunnelMonitorParamsOptional)).when(mockReadWriteTx) + doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorParamsOptional)).when(mockReadWriteTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorParamsInstanceIdentifier); - doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional)).when(mockReadWriteTx) + doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorIntervalOptional)).when(mockReadWriteTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier); directTunnelUtils = new DirectTunnelUtils(idManagerService, mdsalApiManager, entityOwnershipUtils, itmConfig); @@ -248,7 +248,7 @@ public class ItmInternalTunnelAddTest { doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); doReturn(mockReadWriteTx).when(dataBroker).newReadWriteTransaction(); - doReturn(Futures.immediateCheckedFuture(null)).when(mockReadWriteTx).submit(); + doReturn(FluentFutures.immediateNullFluentFuture()).when(mockReadWriteTx).commit(); doReturn(true).when(mockReadWriteTx).cancel(); } @@ -284,9 +284,9 @@ public class ItmInternalTunnelAddTest { //Add some verifications verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierVxlan1, - internalTunnel1,true); + internalTunnel1, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierVxlan2, - internalTunnel2,true); + internalTunnel2, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, dpnEndpointsIdentifier, dpnEndpointsVxlan); } @@ -321,9 +321,9 @@ public class ItmInternalTunnelAddTest { itmInternalTunnelAddWorker.buildAllTunnels(mdsalApiManager, cfgdDpnListGre, meshDpnListGre); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierGre1, - internalTunnel1,true); + internalTunnel1, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierGre2, - internalTunnel2,true); + internalTunnel2, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, dpnEndpointsIdentifier, dpnEndpointsGre); } @@ -359,9 +359,9 @@ public class ItmInternalTunnelAddTest { itmInternalTunnelAddWorker.buildAllTunnels(mdsalApiManager, cfgdDpnListVxlan, meshDpnListGre); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierVxlan1, - internalTunnel1,true); + internalTunnel1, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifierGre2, - internalTunnel2,true); + internalTunnel2, true); verify(mockReadWriteTx).merge(LogicalDatastoreType.CONFIGURATION, dpnEndpointsIdentifier, dpnEndpointsVxlan); } diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java index 384902ed3..b60e9b54a 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java @@ -11,20 +11,15 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.cloudscaler.api.TombstonedNodeManager; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache; @@ -41,6 +36,10 @@ import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl; import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -67,6 +66,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnelBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnelKey; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; @@ -114,7 +114,7 @@ public class ItmInternalTunnelDeleteTest { .build(); @Mock DataBroker dataBroker; - @Mock ReadOnlyTransaction mockReadTx; + @Mock ReadTransaction mockReadTx; @Mock ReadWriteTransaction mockReadWriteTx; @Mock IdManagerService idManagerService; @Mock IMdsalApiManager mdsalApiManager; @@ -142,21 +142,21 @@ public class ItmInternalTunnelDeleteTest { tunnelMonitorIntervalOptional = Optional.of(tunnelMonitorInterval); internalTunnelOptional = Optional.of(internalTunnel); - doReturn(Futures.immediateCheckedFuture(tunnelMonitorParamsOptional)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorParamsOptional)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorParamsInstanceIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(tunnelMonitorParamsOptional)).when(mockReadWriteTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorParamsOptional)).when(mockReadWriteTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorParamsInstanceIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional)).when(mockReadTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorIntervalOptional)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional)).when(mockReadWriteTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(tunnelMonitorIntervalOptional)).when(mockReadWriteTx) .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier); - doReturn(Futures.immediateCheckedFuture(internalTunnelOptional)).when(mockReadTx) + doReturn(FluentFutures.immediateFluentFuture(internalTunnelOptional)).when(mockReadTx) .read(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(internalTunnelOptional)).when(mockReadWriteTx) + lenient().doReturn(FluentFutures.immediateFluentFuture(internalTunnelOptional)).when(mockReadWriteTx) .read(LogicalDatastoreType.CONFIGURATION, internalTunnelIdentifier); DPNTEPsInfoCache dpntePsInfoCache = @@ -211,7 +211,7 @@ public class ItmInternalTunnelDeleteTest { doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); doReturn(mockReadWriteTx).when(dataBroker).newReadWriteTransaction(); - lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockReadWriteTx).submit(); + lenient().doReturn(FluentFutures.immediateNullFluentFuture()).when(mockReadWriteTx).commit(); doReturn(true).when(mockReadWriteTx).cancel(); lenient().doReturn(false).when(itmConfig).isUseOfTunnels(); } @@ -230,7 +230,7 @@ public class ItmInternalTunnelDeleteTest { Optional dpnEndpointsOptional = Optional.of(dpnEndpoints); - lenient().doReturn(Futures.immediateCheckedFuture(dpnEndpointsOptional)).when(mockReadTx).read( + lenient().doReturn(FluentFutures.immediateFluentFuture(dpnEndpointsOptional)).when(mockReadTx).read( LogicalDatastoreType.CONFIGURATION,dpnEndpointsIdentifier); itmInternalTunnelDeleteWorker.deleteTunnels(mdsalApiManager, cfgdDpnListVxlan,meshDpnListVxlan); diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java index 480aea477..4bba968f0 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java @@ -11,11 +11,10 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import org.junit.After; import org.junit.Before; import org.junit.Ignore; @@ -23,10 +22,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.interfacemanager.interfaces.InterfaceManagerService; @@ -44,6 +39,10 @@ import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl; import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -102,6 +101,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.R import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInputBuilder; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; @@ -178,7 +178,7 @@ public class ItmManagerRpcServiceTest { @Mock DataBroker dataBroker; @Mock JobCoordinator jobCoordinator; - @Mock ReadOnlyTransaction mockReadTx; + @Mock ReadTransaction mockReadTx; @Mock WriteTransaction mockWriteTx; @Mock IMdsalApiManager mdsalApiManager; @Mock ItmConfig itmConfig; @@ -206,17 +206,17 @@ public class ItmManagerRpcServiceTest { dpnEndpointsOptional = Optional.of(dpnEndpoints); transportZonesOptional = Optional.of(transportZones); - doReturn(Futures.immediateCheckedFuture(externalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(externalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,externalTunnelIdentifier); - doReturn(Futures.immediateCheckedFuture(externalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(externalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,externalTunnelIdentifier1); - doReturn(Futures.immediateCheckedFuture(internalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(internalTunnelOptional)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,internalTunnelIdentifier); - lenient().doReturn(Futures.immediateCheckedFuture(internalTunnelOptional)).when(mockReadTx).read( + lenient().doReturn(FluentFutures.immediateFluentFuture(internalTunnelOptional)).when(mockReadTx).read( LogicalDatastoreType.CONFIGURATION,internalTunnelIdentifierNew); - lenient().doReturn(Futures.immediateCheckedFuture(dpnEndpointsOptional)).when(mockReadTx).read( + lenient().doReturn(FluentFutures.immediateFluentFuture(dpnEndpointsOptional)).when(mockReadTx).read( LogicalDatastoreType.CONFIGURATION,dpnEndpointsIdentifier); - doReturn(Futures.immediateCheckedFuture(transportZonesOptional)).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(transportZonesOptional)).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZonesIdentifier); DPNTEPsInfoCache dpntePsInfoCache = @@ -302,7 +302,7 @@ public class ItmManagerRpcServiceTest { transportZones = new TransportZonesBuilder().setTransportZone(transportZoneList).build(); doReturn(mockReadTx).when(dataBroker).newReadOnlyTransaction(); doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); - lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); + lenient().doReturn(FluentFutures.immediateNullFluentFuture()).when(mockWriteTx).commit(); } @Test @@ -315,7 +315,7 @@ public class ItmManagerRpcServiceTest { @Ignore @Test public void testGetInternalOrExternalInterfaceNameExtTunnelAbsent() { - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType + doReturn(FluentFutures.immediateFluentFuture(Optional.empty())).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,externalTunnelIdentifier); itmManagerRpcService.getInternalOrExternalInterfaceName(getInternalOrExternalInterfaceNameInput); diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java index 8762eb2b9..ea357387b 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java @@ -10,20 +10,19 @@ package org.opendaylight.genius.itm.tests; import static com.google.common.truth.Truth.assertThat; import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import org.junit.Before; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule; import org.opendaylight.genius.datastoreutils.testutils.TestableDataTreeChangeListenerModule; @@ -38,10 +37,11 @@ import org.opendaylight.genius.itm.tests.xtend.ExpectedInternalTunnelIdentifierO import org.opendaylight.infrautils.caches.testutils.CacheModule; import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnEndpoints; -import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnEndpointsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.ExternalTunnelList; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelList; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo; @@ -57,7 +57,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tun import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnelBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnel.list.InternalTunnelKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones; -import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZonesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneKey; @@ -156,9 +155,17 @@ public class ItmManagerRpcServiceTest { InstanceIdentifier internalTunnelIdentifier = InstanceIdentifier.create(TunnelList.class) .child(InternalTunnel.class, new InternalTunnelKey(ItmTestConstants.DP_ID_2, ItmTestConstants.DP_ID_1, ItmTestConstants.TUNNEL_TYPE_VXLAN)); - InstanceIdentifier dpnEndpointsIdentifier = InstanceIdentifier.builder(DpnEndpoints.class).build(); + //InstanceIdentifier dpnEndpointsIdentifier = InstanceIdentifier.builder(DpnEndpoints.class).build(); + + + InstanceIdentifier dpnEndpointsIdentifier = InstanceIdentifier.builder(DpnEndpoints.class) + .child(DPNTEPsInfo.class, new DPNTEPsInfoKey(ItmTestConstants.DP_ID_1)).build(); + InstanceIdentifier interfaceIdentifier; - InstanceIdentifier transportZonesIdentifier = InstanceIdentifier.create(TransportZones.class); + + InstanceIdentifier transportZonesIdentifier = InstanceIdentifier.builder(TransportZones.class) + .child(TransportZone.class, new TransportZoneKey(ItmTestConstants.TZ_NAME)).build(); + InstanceIdentifier deviceVtepsIdentifier = InstanceIdentifier.builder(TransportZones.class) .child(TransportZone.class, new TransportZoneKey(ItmTestConstants.TZ_NAME)) .child(DeviceVteps.class, deviceVtepKey).build(); @@ -173,7 +180,17 @@ public class ItmManagerRpcServiceTest { @Before public void setUp() throws Exception { + //////db,txrunner + this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker); + + + /*if (dataBroker != null) + { + String errMsg = "present db :" + txRunner; + throw new NullPointerException(errMsg); + }*/ + deviceVteps = new DeviceVtepsBuilder().setIpAddress(ItmTestConstants.IP_ADDRESS_3).withKey(new DeviceVtepsKey( ItmTestConstants.IP_ADDRESS_3,ItmTestConstants.SOURCE_DEVICE)) .setNodeId(ItmTestConstants.SOURCE_DEVICE).setTopologyId(ItmTestConstants.DESTINATION_DEVICE).build(); @@ -197,8 +214,9 @@ public class ItmManagerRpcServiceTest { dpntePsInfoVxlan = new DPNTEPsInfoBuilder().setDPNID(ItmTestConstants.DP_ID_1) .withKey(new DPNTEPsInfoKey(ItmTestConstants.DP_ID_1)).setUp(true) .setTunnelEndPoints(tunnelEndPointsListVxlan).build(); - cfgdDpnListVxlan.add(dpntePsInfoVxlan); - dpnEndpoints = new DpnEndpointsBuilder().setDPNTEPsInfo(cfgdDpnListVxlan).build(); + //cfgdDpnListVxlan.add(dpntePsInfoVxlan); + //dpnEndpoints = new DpnEndpointsBuilder().setDPNTEPsInfo(cfgdDpnListVxlan).build(); + internalTunnel = new InternalTunnelBuilder() .setTunnelInterfaceNames(Collections.singletonList(ItmTestConstants.PARENT_INTERFACE_NAME)) .setDestinationDPN(ItmTestConstants.DP_ID_2).setSourceDPN(ItmTestConstants.DP_ID_1) @@ -250,8 +268,8 @@ public class ItmManagerRpcServiceTest { transportZone = new TransportZoneBuilder().setZoneName(ItmTestConstants.TZ_NAME) .setTunnelType(ItmTestConstants.TUNNEL_TYPE_VXLAN) .withKey(new TransportZoneKey(ItmTestConstants.TZ_NAME)).build(); - transportZoneList.add(transportZone); - transportZones = new TransportZonesBuilder().setTransportZone(transportZoneList).build(); + //transportZoneList.add(transportZone); + //transportZones = new TransportZonesBuilder().setTransportZone(transportZoneList).build(); // build external tunnel objects externalTunnel = new ExternalTunnelBuilder().setSourceDevice(ItmTestConstants.DP_ID_1.toString()) @@ -271,16 +289,25 @@ public class ItmManagerRpcServiceTest { syncWrite(externalTunnelIdentifier, externalTunnel); syncWrite(externalTunnelIdentifier2, externalTunnel2); - // commit internal tunnel into config DS + /*if (dataBroker != null) + { + String errMsg = "present db :" + internalTunnelIdentifier + " present 2" + internalTunnel ; + throw new NullPointerException(errMsg); + }*/ + + // commit internal tunnel into config DS. syncWrite(internalTunnelIdentifier, internalTunnel); + // commit dpnEndpoints into config DS - syncWrite(dpnEndpointsIdentifier, dpnEndpoints); + + syncWrite(dpnEndpointsIdentifier, dpntePsInfoVxlan); // wait for completion of ITM config DS default-TZ creation task of DJC coordinatorEventsWaiter.awaitEventsConsumption(); // commit TZ into config DS - syncWrite(transportZonesIdentifier, transportZones); + + syncWrite(transportZonesIdentifier, transportZone); } @Test @@ -314,7 +341,7 @@ public class ItmManagerRpcServiceTest { // check ExternalTunnelEndpoint is added in config DS assertEqualBeans(ExpectedExternalTunnelObjects.newExternalTunnelForRpcTest(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifierNew).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifierNew).get().get()); } @Test @@ -322,27 +349,35 @@ public class ItmManagerRpcServiceTest { ListenableFuture> rpcRes = itmManagerRpcService.addL2GwDevice(addL2GwDeviceInput); + coordinatorEventsWaiter.awaitEventsConsumption(); + Thread.sleep(5000); + // check RPC response is SUCCESS assertThat(rpcRes.get().isSuccessful()).isTrue(); // check L2GwDevice is added in config DS assertEqualBeans(ExpectedDeviceVtepsObjects.newDeviceVtepsObject(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).get().get()); } + @Ignore @Test public void testAddL2GwMlagDevice() throws Exception { ListenableFuture> rpcRes = itmManagerRpcService.addL2GwMlagDevice(addL2GwMlagDeviceInput); + coordinatorEventsWaiter.awaitEventsConsumption(); + Thread.sleep(8000); + + // check RPC response is SUCCESS assertThat(rpcRes.get().isSuccessful()).isTrue(); // check L2GwMlagDevice is added in config DS assertEqualBeans(ExpectedDeviceVtepsObjects.newDeviceVtepsObject(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).get().get()); assertEqualBeans(ExpectedDeviceVtepsObjects.newDeviceVtepsObject2(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier2).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier2).get().get()); } @Test @@ -354,7 +389,7 @@ public class ItmManagerRpcServiceTest { assertThat(rpcRes.get().isSuccessful()).isTrue(); // check L2GwDevice is deleted from config DS - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).get()); } @@ -367,9 +402,9 @@ public class ItmManagerRpcServiceTest { assertThat(rpcRes.get().isSuccessful()).isTrue(); // check L2GwMlagDevice is deleted from config DS - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).get()); - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier2).get()); } @@ -384,7 +419,7 @@ public class ItmManagerRpcServiceTest { // check ExternalTunnel From Dpns is added in config DS assertEqualBeans(ExpectedExternalTunnelObjects.newExternalTunnelForRpcTest(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifierNew).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifierNew).get().get()); } @Test @@ -396,10 +431,10 @@ public class ItmManagerRpcServiceTest { assertThat(rpcRes.get().isSuccessful()).isTrue(); // check ExternalTunnel From Dpns is deleted from config DS - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, externalTunnelIdentifierNew).get()); // check iface is removed - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier).get()); } @@ -419,10 +454,10 @@ public class ItmManagerRpcServiceTest { assertThat(removeExternalTunnelEndpoint.get().isSuccessful()).isTrue(); // check ExternalTunnelEndpoint is deleted from config DS - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, externalTunnelIdentifierNew).get()); // check iface is removed - assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction() + assertThat(Optional.empty()).isEqualTo(dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, interfaceIdentifier).get()); } @@ -436,7 +471,7 @@ public class ItmManagerRpcServiceTest { // check ExternalTunnel From Dpns is added in config DS assertEqualBeans(ExpectedInternalTunnelIdentifierObjects.newInternalTunnelObjVxLanOneToTwo(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION,internalTunnelIdentifier).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION,internalTunnelIdentifier).get().get()); } @Test @@ -450,7 +485,7 @@ public class ItmManagerRpcServiceTest { // check ExternalTunnel From Dpns is added in config DS assertEqualBeans(ExpectedExternalTunnelObjects.newExternalTunnel2ForRpcTest(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType - .CONFIGURATION,externalTunnelIdentifier2).checkedGet().get()); + .CONFIGURATION,externalTunnelIdentifier2).get().get()); // check for interfaceName assertThat(ItmTestConstants.PARENT_INTERFACE_NAME).isEqualTo(rpcRes.get().getResult().getInterfaceName()); diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTest.java index 1c0fd09a1..b08757cc8 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTest.java @@ -10,22 +10,19 @@ package org.opendaylight.genius.itm.tests; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import javax.inject.Inject; +import org.eclipse.jdt.annotation.NonNull; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule; @@ -40,7 +37,13 @@ import org.opendaylight.genius.itm.tests.xtend.ExpectedTransportZoneObjects; import org.opendaylight.infrautils.caches.testutils.CacheModule; import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; +import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre; +import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfigBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.TepsInNotHostedTransportZone; @@ -112,10 +115,13 @@ public class ItmTepAutoConfigTest { ItmConfig itmConfigObj = new ItmConfigBuilder().setDefTzEnabled(false).build(); // write into config DS - txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> tx.put(iid, itmConfigObj, true)).get(); + + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + iid,itmConfigObj)); + coordinatorEventsWaiter.awaitEventsConsumption(); // read from config DS - boolean defTzEnabled = SingleTransactionDataBroker.syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional( + boolean defTzEnabled = SingleTransactionDataBroker.syncReadOptional( dataBroker, LogicalDatastoreType.CONFIGURATION, iid).get().isDefTzEnabled(); Assert.assertEquals(defTzEnabled, false); } @@ -127,10 +133,16 @@ public class ItmTepAutoConfigTest { ItmConfig itmConfigObj = new ItmConfigBuilder().setDefTzEnabled(true).build(); // write into config DS - txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, - tx -> tx.put(iid, itmConfigObj, true)).get(); + //txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, + // tx -> tx.put(iid, itmConfigObj, true)); + + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + iid,itmConfigObj)).get(); + + coordinatorEventsWaiter.awaitEventsConsumption(); + // read from config DS - boolean defTzEnabled = SingleTransactionDataBroker.syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional( + boolean defTzEnabled = SingleTransactionDataBroker.syncReadOptional( dataBroker, LogicalDatastoreType.CONFIGURATION, iid).get().isDefTzEnabled(); Assert.assertEquals(defTzEnabled, true); } @@ -142,13 +154,21 @@ public class ItmTepAutoConfigTest { // set def-tz-tunnel-type to VXLAN String defTzTunnelType = ITMConstants.TUNNEL_TYPE_VXLAN; + /*InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(ItmTestConstants.TUNNEL_TYPE_VXLAN) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get();*/ + InstanceIdentifier tzonePath = processDefTzOnItmConfig(defTzEnabledFlag, defTzTunnelType); Assert.assertNotNull(tzonePath); assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithVxlanTunnelType(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); } @Test @@ -158,13 +178,22 @@ public class ItmTepAutoConfigTest { // set def-tz-tunnel-type to GRE String defTzTunnelType = ITMConstants.TUNNEL_TYPE_GRE; + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(TunnelTypeGre.class) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + + InstanceIdentifier tzonePath = processDefTzOnItmConfig(defTzEnabledFlag, defTzTunnelType); Assert.assertNotNull(tzonePath); assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithGreTunnelType(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); } @Test @@ -178,7 +207,7 @@ public class ItmTepAutoConfigTest { defTzTunnelType); Assert.assertNotNull(tzonePath); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get()); } @@ -189,6 +218,14 @@ public class ItmTepAutoConfigTest { // set def-tz-tunnel-type to VXLAN String defTzTunnelType = ITMConstants.TUNNEL_TYPE_VXLAN; + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(TunnelTypeVxlan.class) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + InstanceIdentifier tzonePath = processDefTzOnItmConfig(defTzEnabledFlag, defTzTunnelType); Assert.assertNotNull(tzonePath); @@ -196,18 +233,26 @@ public class ItmTepAutoConfigTest { // check default-TZ is created with VXLAN tunnel type assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithVxlanTunnelType().getTunnelType(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzonePath) - .checkedGet().get().getTunnelType()); + .get().get().getTunnelType()); // now, change def-tz-tunnel-type to GRE defTzTunnelType = ITMConstants.TUNNEL_TYPE_GRE; + + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(TunnelTypeGre.class) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + + tzonePath = processDefTzOnItmConfig(defTzEnabledFlag, defTzTunnelType); Assert.assertNotNull(tzonePath); // check default-TZ is re-created with GRE tunnel type assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithGreTunnelType().getTunnelType(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzonePath) - .checkedGet().get().getTunnelType()); + .get().get().getTunnelType()); } @Test @@ -223,13 +268,21 @@ public class ItmTepAutoConfigTest { itmProvider.createDefaultTransportZone(itmConfigObj); coordinatorEventsWaiter.awaitEventsConsumption(); + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(TunnelTypeGre.class) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + InstanceIdentifier tzonePath = ItmTepAutoConfigTestUtil.getTzIid( ITMConstants.DEFAULT_TRANSPORT_ZONE); Assert.assertNotNull(tzonePath); assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithGreTunnelType(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // now delete default-TZ first by setting def-tz-enabled flag to false itmConfigObj = new ItmConfigBuilder().setDefTzEnabled(false).build(); @@ -238,7 +291,7 @@ public class ItmTepAutoConfigTest { itmProvider.createDefaultTransportZone(itmConfigObj); coordinatorEventsWaiter.awaitEventsConsumption(); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get()); } @@ -247,6 +300,14 @@ public class ItmTepAutoConfigTest { // wait for start-up default-TZ creation task to get over coordinatorEventsWaiter.awaitEventsConsumption(); + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(TunnelTypeVxlan.class) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + InstanceIdentifier tzonePath = ItmTepAutoConfigTestUtil.getTzIid( ITMConstants.DEFAULT_TRANSPORT_ZONE); Assert.assertNotNull(tzonePath); @@ -267,7 +328,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into default-TZ assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithTep(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // remove tep from default-TZ futures = ItmTepAutoConfigTestUtil.deleteTep(ItmTestConstants.DEF_TZ_TEP_IP, ItmTestConstants.DEF_BR_DPID, @@ -275,7 +336,7 @@ public class ItmTepAutoConfigTest { futures.get(); // check TEP is deleted from default-TZ - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, vtepPath).get()); } @@ -295,7 +356,7 @@ public class ItmTepAutoConfigTest { // check TZ is created with correct TZ name Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get().getZoneName()); // add tep ListenableFuture futures = ItmTepAutoConfigTestUtil.addTep(ItmTestConstants.NB_TZ_TEP_IP, @@ -311,7 +372,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into TZ that is already created. assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // remove tep futures = ItmTepAutoConfigTestUtil.deleteTep(ItmTestConstants.NB_TZ_TEP_IP, ItmTestConstants.DEF_BR_DPID, @@ -319,12 +380,12 @@ public class ItmTepAutoConfigTest { futures.get(); // check TEP is deleted - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, vtepPath).get()); // for safe side, check TZ is present Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get().getZoneName()); } @Test @@ -337,10 +398,19 @@ public class ItmTepAutoConfigTest { // OvsdbNodeListener would be automatically listen on Node to add TEP ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = + FluentFuture future = OvsdbTestUtil.createNode(connInfo,tepIp,ITMConstants.DEFAULT_TRANSPORT_ZONE,dataBroker); future.get(); + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(ItmTestConstants.TUNNEL_TYPE_VXLAN) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + + // add bridge into node future = OvsdbTestUtil.addBridgeIntoNode(connInfo, ItmTestConstants.DEF_BR_NAME, ItmTestConstants.DEF_BR_DPID, dataBroker); @@ -355,7 +425,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into default-TZ assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithTep(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzonePath) - .checkedGet().get()); + .get().get()); // test TEP delete now, // pass tep-ip with NULL value, tep-ip paramtere in external_ids will not be set. @@ -374,7 +444,7 @@ public class ItmTepAutoConfigTest { Assert.assertNotNull(vtepPath); // check TEP is deleted from default-TZ when TEP-Ip is removed from southbound - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, vtepPath).get()); } @@ -385,7 +455,7 @@ public class ItmTepAutoConfigTest { // OvsdbNodeListener would be automatically listen on Node to add TEP ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = OvsdbTestUtil.createNode( + FluentFuture future = OvsdbTestUtil.createNode( connInfo, tepIp, ItmTestConstants.TZ_NAME, dataBroker); future.get(); @@ -408,7 +478,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into NB configured TZ assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzonePath) - .checkedGet().get()); + .get().get()); IpPrefix subnetMaskObj = ItmUtils.getDummySubnet(); @@ -425,7 +495,7 @@ public class ItmTepAutoConfigTest { coordinatorEventsWaiter.awaitEventsConsumption(); // check TEP is deleted from default-TZ when TEP-Ip is removed from southbound - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, vtepPath).get()); } @@ -434,7 +504,7 @@ public class ItmTepAutoConfigTest { // create Network topology node ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = OvsdbTestUtil.createNode( + FluentFuture future = OvsdbTestUtil.createNode( connInfo, ItmTestConstants.NOT_HOSTED_TZ_TEP_IP, ItmTestConstants.NOT_HOSTED_TZ_NAME, dataBroker); future.get(); @@ -453,7 +523,7 @@ public class ItmTepAutoConfigTest { // check not hosted assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL, - notHostedtzPath).checkedGet().get()); + notHostedtzPath).get().get()); future = OvsdbTestUtil.updateNode(connInfo, ItmTestConstants.NOT_HOSTED_TZ_TEP_IP, null, ItmTestConstants.DEF_BR_NAME, dataBroker); @@ -461,7 +531,7 @@ public class ItmTepAutoConfigTest { // wait for OvsdbNodeListener to perform config DS update through transaction coordinatorEventsWaiter.awaitEventsConsumption(); - Assert.assertEquals(Optional.absent(),dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(),dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.OPERATIONAL, notHostedtzPath).get()); } @@ -475,26 +545,45 @@ public class ItmTepAutoConfigTest { // OvsdbNodeListener would be automatically listen on Node to add TEP ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = OvsdbTestUtil.createNode( + FluentFuture future = OvsdbTestUtil.createNode( connInfo, tepIp, ITMConstants.DEFAULT_TRANSPORT_ZONE, dataBroker); future.get(); + InstanceIdentifier tzPath = + ItmUtils.getTZInstanceIdentifier(ITMConstants.DEFAULT_TRANSPORT_ZONE); + txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, + tzPath, new TransportZoneBuilder().setZoneName(ITMConstants.DEFAULT_TRANSPORT_ZONE) + .setTunnelType(ItmTestConstants.TUNNEL_TYPE_VXLAN) + .withKey(new TransportZoneKey(ITMConstants.DEFAULT_TRANSPORT_ZONE)) + .build(), WriteTransaction.CREATE_MISSING_PARENTS)).get(); + // add bridge into node future = OvsdbTestUtil.addBridgeIntoNode(connInfo, ItmTestConstants.DEF_BR_NAME, ItmTestConstants.DEF_BR_DPID, dataBroker); future.get(); // wait for OvsdbNodeListener to perform config DS update through transaction coordinatorEventsWaiter.awaitEventsConsumption(); + //Thread.sleep(5000); // iid for default-TZ InstanceIdentifier defTzonePath = ItmTepAutoConfigTestUtil.getTzIid( ITMConstants.DEFAULT_TRANSPORT_ZONE); Assert.assertNotNull(defTzonePath); + // check TEP is added into default-TZ + + /*if (dataBroker != null) + { + String errMsg = "present db :" + dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.CONFIGURATION, defTzonePath); + throw new NullPointerException(errMsg); + }*/ + + assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithTep(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, defTzonePath) - .checkedGet().get()); + .get().get()); // update OVSDB node with tep-ip in local_ip list tepIp = ItmTestConstants.NB_TZ_TEP_IP; @@ -507,7 +596,7 @@ public class ItmTepAutoConfigTest { // when local_ip is updated from southbound assertEqualBeans(ExpectedDefTransportZoneObjects.defTzWithUpdatedTepIp(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION,defTzonePath) - .checkedGet().get()); + .get().get()); } @Ignore @@ -520,7 +609,7 @@ public class ItmTepAutoConfigTest { // OvsdbNodeListener would be automatically listen on Node to add TEP ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = OvsdbTestUtil.createNode( + FluentFuture future = OvsdbTestUtil.createNode( connInfo, tepIp, ITMConstants.DEFAULT_TRANSPORT_ZONE, dataBroker); future.get(); @@ -539,7 +628,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into default-TZ assertEqualBeans(ExpectedDefTransportZoneObjects.newDefTzWithTep(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, defTzonePath) - .checkedGet().get()); + .get().get()); IpPrefix subnetMaskObj = ItmUtils.getDummySubnet(); InstanceIdentifier oldVTepPath = ItmTepAutoConfigTestUtil.getTepIid(subnetMaskObj, @@ -564,14 +653,14 @@ public class ItmTepAutoConfigTest { coordinatorEventsWaiter.awaitEventsConsumption(); // check old TEP which was in default-TZ is deleted - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, oldVTepPath).get()); // check TEP is updated and now it is added into TZA transport-zone when tzname is updated // to TZA from southbound assertEqualBeans(ExpectedTransportZoneObjects.updatedTransportZone(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION,tzaTzonePath) - .checkedGet().get()); + .get().get()); } @Test @@ -581,7 +670,7 @@ public class ItmTepAutoConfigTest { // OvsdbNodeListener would be automatically listen on Node to add TEP ConnectionInfo connInfo = OvsdbTestUtil.getConnectionInfo(ItmTestConstants.OVSDB_CONN_PORT, ItmTestConstants.LOCALHOST_IP); - CheckedFuture future = OvsdbTestUtil.createNode( + FluentFuture future = OvsdbTestUtil.createNode( connInfo, tepIp, ItmTestConstants.TZ_NAME, dataBroker); future.get(); @@ -602,9 +691,16 @@ public class ItmTepAutoConfigTest { ItmTestConstants.TZ_NAME); Assert.assertNotNull(tzonePath); + /*if (dataBroker != null) + { + String errMsg = "present db :" + dataBroker.newReadOnlyTransaction(). + read(LogicalDatastoreType.CONFIGURATION, tzonePath); + throw new NullPointerException(errMsg); + }*/ + // check TEP is added into TZ assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); IpPrefix subnetMaskObj = ItmUtils.getDummySubnet(); @@ -632,12 +728,12 @@ public class ItmTepAutoConfigTest { Assert.assertNotNull(newVTepPath); // check old TEP having default-bridge-DPID is deleted - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.CONFIGURATION, oldVTepPath).get()); // check TEP is updated with dpnId of br2 when br-name is updated to br2 from southbound Assert.assertEquals(ItmTestConstants.INT_BR2_DPID, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, newVTepPath).checkedGet().get().getDpnId()); + .read(LogicalDatastoreType.CONFIGURATION, newVTepPath).get().get().getDpnId()); } @Test @@ -653,7 +749,7 @@ public class ItmTepAutoConfigTest { assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL, notHostedPath) - .checkedGet().get()); + .get().get()); } @Test @@ -669,14 +765,14 @@ public class ItmTepAutoConfigTest { assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get()); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get()); //delete from not hosted list future = ItmTepAutoConfigTestUtil.deleteTep(ItmTestConstants.NOT_HOSTED_TZ_TEP_IP, ItmTestConstants.NOT_HOSTED_TZ_TEPDPN_ID, ItmTestConstants.NOT_HOSTED_TZ_NAME, dataBroker, txRunner); future.get(); - Assert.assertEquals(Optional.absent(), + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get()); } @@ -694,7 +790,7 @@ public class ItmTepAutoConfigTest { assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get()); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get()); // create the same TZ TransportZone transportZoneNorth = new TransportZoneBuilder().setZoneName(ItmTestConstants.NOT_HOSTED_TZ_NAME) @@ -717,19 +813,19 @@ public class ItmTepAutoConfigTest { assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects .newTepNotHostedTransportZone().getUnknownVteps().get(0).getIpAddress().stringValue(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzPath) - .checkedGet().get().getVteps().get(0).getIpAddress().stringValue()); + .get().get().getVteps().get(0).getIpAddress().stringValue()); assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone().getUnknownVteps() .get(0).getDpnId(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzPath).checkedGet().get() - .getVteps().get(0).getDpnId()); + .read(LogicalDatastoreType.CONFIGURATION, tzPath).get() + .get().getVteps().get(0).getDpnId()); assertEqualBeans(ExpectedTepNotHostedTransportZoneObjects.newTepNotHostedTransportZone().getZoneName(), dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, tzPath) - .checkedGet().get().getZoneName()); + .get().get().getZoneName()); // check TZ is removed - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get()); } @@ -747,7 +843,7 @@ public class ItmTepAutoConfigTest { // check TZ is created Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get().getZoneName()); // add tep ListenableFuture futures = @@ -764,7 +860,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into TZ that is already created. assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // remove Transport Zone txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.delete(LogicalDatastoreType.CONFIGURATION, @@ -774,15 +870,16 @@ public class ItmTepAutoConfigTest { // for TEP movement through transaction coordinatorEventsWaiter.awaitEventsConsumption(); //verify delete - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet()); + + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get()); //check deleted tz moved to notHosted InstanceIdentifier notHostedPath = ItmTepAutoConfigTestUtil.getTepNotHostedInTZIid(ItmTestConstants.TZ_NAME); Assert.assertNotNull(notHostedPath); Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get().getZoneName()); //readd the same tz txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(LogicalDatastoreType.CONFIGURATION, @@ -791,11 +888,12 @@ public class ItmTepAutoConfigTest { // for TEP movement through transaction coordinatorEventsWaiter.awaitEventsConsumption(); - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet()); + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get()); + assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); } @Test @@ -814,7 +912,7 @@ public class ItmTepAutoConfigTest { // check TZ is created Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get().getZoneName()); // add tep ListenableFuture futures = @@ -832,7 +930,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into TZ that is already created. assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // remove Transport Zone txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.delete(LogicalDatastoreType.CONFIGURATION, @@ -842,8 +940,9 @@ public class ItmTepAutoConfigTest { // for TEP movement through transaction coordinatorEventsWaiter.awaitEventsConsumption(); //verify delete - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet()); + + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get()); //check deleted tz moved to notHosted InstanceIdentifier notHostedPath = @@ -851,12 +950,12 @@ public class ItmTepAutoConfigTest { coordinatorEventsWaiter.awaitEventsConsumption(); Assert.assertNotNull(notHostedPath); Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get().getZoneName()); //create vtepList form unknownVtepList List vtepsList = new ArrayList<>(); List unknownVtepsList = dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getUnknownVteps(); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get().getUnknownVteps(); for (UnknownVteps unknownVtep:unknownVtepsList) { Vteps vteps = new VtepsBuilder().setDpnId(unknownVtep.getDpnId()) @@ -877,10 +976,12 @@ public class ItmTepAutoConfigTest { coordinatorEventsWaiter.awaitEventsConsumption(); // verify TZ is moved from notHosted to transport zone and their should be only one vtep in it. - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet()); + + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get()); + assertEqualBeans(1, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get() + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get() .getVteps().size()); } @@ -898,7 +999,7 @@ public class ItmTepAutoConfigTest { // check TZ is created Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get().getZoneName()); // add tep ListenableFuture futures = @@ -915,7 +1016,7 @@ public class ItmTepAutoConfigTest { // check TEP is added into TZ that is already created. assertEqualBeans(ExpectedTransportZoneObjects.newTransportZone(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get()); + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get()); // remove Transport Zone txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.delete(LogicalDatastoreType.CONFIGURATION, @@ -925,8 +1026,9 @@ public class ItmTepAutoConfigTest { // for TEP movement through transaction coordinatorEventsWaiter.awaitEventsConsumption(); //verify delete - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet()); + + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get()); //check deleted tz moved to notHosted InstanceIdentifier notHostedPath = @@ -934,12 +1036,12 @@ public class ItmTepAutoConfigTest { Assert.assertNotNull(notHostedPath); Assert.assertEquals(ItmTestConstants.TZ_NAME, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getZoneName()); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get().getZoneName()); //create vtepList form unknownVtepList List vtepsList = new ArrayList<>(); List unknownVtepsList = dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getUnknownVteps(); + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get().get().getUnknownVteps(); //modifing the dpnid and keeping the ip same. for (UnknownVteps unknownVtep:unknownVtepsList) { Vteps vteps = new VtepsBuilder().setDpnId(Uint64.valueOf(10)) @@ -960,10 +1062,12 @@ public class ItmTepAutoConfigTest { coordinatorEventsWaiter.awaitEventsConsumption(); // verify TZ is moved from notHosted to transport zone and their should be only one vtep in it. - Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet()); + + Assert.assertEquals(Optional.empty(), dataBroker.newReadOnlyTransaction() + .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).get()); + assertEqualBeans(1, dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.CONFIGURATION, tzonePath).checkedGet().get() + .read(LogicalDatastoreType.CONFIGURATION, tzonePath).get().get() .getVteps().size()); } } diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTestUtil.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTestUtil.java index 3c940cc55..96edf055b 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTestUtil.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTestUtil.java @@ -7,15 +7,16 @@ */ package org.opendaylight.genius.itm.tests; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.itm.confighelpers.OvsdbTepAddConfigHelper; import org.opendaylight.genius.itm.confighelpers.OvsdbTepRemoveConfigHelper; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.NotHostedTransportZones; @@ -46,11 +47,11 @@ public final class ItmTepAutoConfigTestUtil { return OvsdbTepRemoveConfigHelper.removeTepReceivedFromOvsdb(tepIp, strDpnId, tzName, dataBroker, tx).get(0); } - public static CheckedFuture writeItmConfig( + public static FluentFuture writeItmConfig( InstanceIdentifier iid, ItmConfig itmConfig, DataBroker dataBroker) { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(LogicalDatastoreType.CONFIGURATION, iid, itmConfig); - return tx.submit(); + return tx.commit(); } /* utility methods */ diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java index 2417ac77e..07c399e28 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java @@ -9,8 +9,9 @@ package org.opendaylight.genius.itm.tests; import static org.mockito.Mockito.mock; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.concurrent.Executors; import org.opendaylight.daexim.DataImportBootReady; import org.opendaylight.genius.cloudscaler.api.TombstonedNodeManager; import org.opendaylight.genius.cloudscaler.rpcservice.TombstonedNodeManagerImpl; @@ -40,6 +41,9 @@ import org.opendaylight.genius.mdsalutil.interfaces.testutils.TestIMdsalApiManag import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils; import org.opendaylight.infrautils.diagstatus.DiagStatusService; import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService; import org.opendaylight.mdsal.eos.binding.dom.adapter.BindingDOMEntityOwnershipServiceAdapter; import org.opendaylight.mdsal.eos.dom.simple.SimpleDOMEntityOwnershipService; @@ -62,8 +66,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041 public class ItmTestModule extends AbstractGuiceJsr250Module { @Override - protected void configureBindings() { + protected void configureBindings() throws Exception { // Bindings for services from this project + /*AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker(); + bind(DataBroker.class).toInstance(dataBroker);*/ + bind(ItmRpcService.class).to(ItmManagerRpcService.class); bind(ItmProvider.class); ItmConfig itmConfigObj = new ItmConfigBuilder() @@ -88,8 +107,35 @@ public class ItmTestModule extends AbstractGuiceJsr250Module { bind(IdManagerService.class).to(IdManager.class); bind(LockManagerService.class).to(LockManagerServiceImpl.class); bind(JobCoordinatorEventsWaiter.class).to(TestableJobCoordinatorEventsWaiter.class); - DataBrokerTestModule dataBrokerTestModule = new DataBrokerTestModule(false); - DataBroker dataBroker = dataBrokerTestModule.getDataBroker(); + + AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker(); + + /*AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new ConcurrentDataBrokerTestCustomizer(false); + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker();*/ + + /*DataBrokerTestModule dataBrokerTestModule = new DataBrokerTestModule(false); + DataBroker dataBroker = dataBrokerTestModule.getDataBroker();*/ + + /*DataBrokerTestWiring dataBrokerTestWiring = new DataBrokerTestWiring(); + DataBroker dataBroker = DataBrokerTestWiring.dataBroker();*/ + bind(DataBroker.class).toInstance(dataBroker); DataTreeEventCallbackRegistrar dataTreeEventCallbackRegistrar = new DataTreeEventCallbackRegistrarImpl(dataBroker); @@ -100,7 +146,7 @@ public class ItmTestModule extends AbstractGuiceJsr250Module { bind(ServiceRecoveryRegistry.class).toInstance(mock(ServiceRecoveryRegistry.class)); bind(ItmDiagStatusProvider.class).toInstance(mock(ItmDiagStatusProvider.class)); EntityOwnershipService entityOwnershipService = new BindingDOMEntityOwnershipServiceAdapter( - new SimpleDOMEntityOwnershipService(), dataBrokerTestModule.getBindingToNormalizedNodeCodec()); + new SimpleDOMEntityOwnershipService(), test.getDataBrokerTestCustomizer().getBindingToNormalized()); bind(EntityOwnershipService.class).toInstance(entityOwnershipService); bind(EntityOwnershipUtils.class); bind(TombstonedNodeManager.class).to(TombstonedNodeManagerImpl.class); diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/OvsdbTestUtil.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/OvsdbTestUtil.java index 704b8d86f..edff6adfd 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/OvsdbTestUtil.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/OvsdbTestUtil.java @@ -7,16 +7,17 @@ */ package org.opendaylight.genius.itm.tests; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; @@ -56,7 +57,7 @@ public final class OvsdbTestUtil { return connectionInfo; } - public static CheckedFuture createNode( + public static FluentFuture createNode( ConnectionInfo connectionInfo, String tepIp, String tzName, DataBroker dataBroker) throws Exception { final InstanceIdentifier iid = SouthboundUtils.createInstanceIdentifier(connectionInfo); @@ -119,16 +120,16 @@ public final class OvsdbTestUtil { WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); transaction.put(LogicalDatastoreType.OPERATIONAL, iid, ovsdbNode, true); - return transaction.submit(); + return transaction.commit(); } - public static CheckedFuture updateNode( + public static FluentFuture updateNode( ConnectionInfo connectionInfo, String tepIp, String tzName, String brName, DataBroker dataBroker) throws Exception { final InstanceIdentifier iid = SouthboundUtils.createInstanceIdentifier(connectionInfo); Node oldOvsdbNode = dataBroker.newReadOnlyTransaction() - .read(LogicalDatastoreType.OPERATIONAL, iid).checkedGet().get(); + .read(LogicalDatastoreType.OPERATIONAL, iid).get().get(); // build Node using its builder class NodeBuilder nodeBuilder = new NodeBuilder(); @@ -190,10 +191,10 @@ public final class OvsdbTestUtil { //ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction(); WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); transaction.put(LogicalDatastoreType.OPERATIONAL, iid, ovsdbNode, true); - return transaction.submit(); + return transaction.commit(); } - public static CheckedFuture addBridgeIntoNode( + public static FluentFuture addBridgeIntoNode( ConnectionInfo connectionInfo, String bridgeName, String dpid, DataBroker dataBroker) throws Exception { NodeId ovsdbNodeId = SouthboundUtils.createNodeId(connectionInfo.getRemoteIp(), connectionInfo.getRemotePort()); @@ -218,6 +219,6 @@ public final class OvsdbTestUtil { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.merge(LogicalDatastoreType.OPERATIONAL, bridgeIid, bridgeNode, true); - return tx.submit(); + return tx.commit(); } } diff --git a/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockListener.java b/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockListener.java index 441eca96e..eef17ed72 100644 --- a/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockListener.java +++ b/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockListener.java @@ -12,10 +12,10 @@ import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.infrautils.utils.concurrent.Executors; -import org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredAsyncDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.Locks; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.locks.Lock; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockManagerServiceImpl.java b/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockManagerServiceImpl.java index 141dee724..0d0e2851e 100644 --- a/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockManagerServiceImpl.java +++ b/lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockManagerServiceImpl.java @@ -7,12 +7,12 @@ */ package org.opendaylight.genius.lockmanager.impl; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; @@ -23,14 +23,14 @@ import java.util.concurrent.locks.ReentrantLock; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.DataStoreUnavailableException; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner; import org.opendaylight.genius.utils.JvmGlobalLocks; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.DataStoreUnavailableException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; import org.opendaylight.serviceutils.tools.rpc.FutureRpcResults; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; diff --git a/lockmanager/lockmanager-impl/src/test/java/org/opendaylight/genius/lockmanager/tests/LockManagerTest.java b/lockmanager/lockmanager-impl/src/test/java/org/opendaylight/genius/lockmanager/tests/LockManagerTest.java index 39eabcacc..7b386f044 100644 --- a/lockmanager/lockmanager-impl/src/test/java/org/opendaylight/genius/lockmanager/tests/LockManagerTest.java +++ b/lockmanager/lockmanager-impl/src/test/java/org/opendaylight/genius/lockmanager/tests/LockManagerTest.java @@ -19,9 +19,6 @@ import javax.inject.Inject; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailures; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailuresModule; import org.opendaylight.genius.lockmanager.impl.LockManagerServiceImpl; @@ -29,6 +26,9 @@ import org.opendaylight.genius.lockmanager.impl.LockManagerUtils; import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; diff --git a/mdsalutil/mdsalutil-api/pom.xml b/mdsalutil/mdsalutil-api/pom.xml index 8864f528a..e809fe867 100644 --- a/mdsalutil/mdsalutil-api/pom.xml +++ b/mdsalutil/mdsalutil-api/pom.xml @@ -42,10 +42,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.openflowplugin.libraries liblldp - + org.opendaylight.mdsal mdsal-eos-binding-api @@ -82,6 +82,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.serviceutils tools-api + + org.opendaylight.serviceutils + listener-api + ${project.groupId} ipv6util-api @@ -150,6 +154,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html mdsal-binding-test-utils test + + org.opendaylight.mdsal + mdsal-binding-spi + org.opendaylight.infrautils infrautils-testutils @@ -163,7 +171,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html com.google.guava guava-testlib - + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + test + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + test + test-jar + diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncClusteredDataTreeChangeListenerBase.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncClusteredDataTreeChangeListenerBase.java index e331b2d03..7a4fd5778 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncClusteredDataTreeChangeListenerBase.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncClusteredDataTreeChangeListenerBase.java @@ -6,6 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ +/* package org.opendaylight.genius.datastoreutils; import com.google.common.base.Preconditions; @@ -31,12 +32,14 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +*/ /** * Deprecated DS listener. * @deprecated Please use * {@link org.opendaylight.serviceutils.tools.mdsal.listener.AbstractClusteredAsyncDataTreeChangeListener} * instead of this! - */ + *//* + @Deprecated public abstract class AsyncClusteredDataTreeChangeListenerBase > @@ -174,3 +177,4 @@ public abstract class AsyncClusteredDataTreeChangeListenerBase } } } +*/ diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncDataTreeChangeListenerBase.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncDataTreeChangeListenerBase.java index bb09c7cf9..5d40f612a 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncDataTreeChangeListenerBase.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/AsyncDataTreeChangeListenerBase.java @@ -5,7 +5,8 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.genius.datastoreutils; + +/*package org.opendaylight.genius.datastoreutils; import com.google.common.base.Preconditions; import java.util.Collection; @@ -29,11 +30,13 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +*/ /** * Deprecated DS listener. * @deprecated Please use * {@link org.opendaylight.serviceutils.tools.mdsal.listener.AbstractAsyncDataTreeChangeListener} instead of this! - */ + *//* + @Deprecated public abstract class AsyncDataTreeChangeListenerBase> implements DataTreeChangeListener, ChainableDataTreeChangeListener, AutoCloseable { @@ -93,7 +96,8 @@ public abstract class AsyncDataTreeChangeListenerBase Optional syncReadOptional( - LogicalDatastoreType datastoreType, InstanceIdentifier path) - throws ReadFailedException { + public Optional syncReadOptional(LogicalDatastoreType datastoreType, + InstanceIdentifier path) throws ExecutionException, InterruptedException { return syncReadOptional(broker, datastoreType, path); } public static Optional syncReadOptional( DataBroker broker, LogicalDatastoreType datastoreType, InstanceIdentifier path) - throws ReadFailedException { - - try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { - return tx.read(datastoreType, path).checkedGet(); + throws ExecutionException, InterruptedException { + try (ReadTransaction tx = broker.newReadOnlyTransaction()) { + return tx.read(datastoreType, path).get(); } } @@ -112,15 +115,18 @@ public class SingleTransactionDataBroker { public static T syncRead( DataBroker broker, LogicalDatastoreType datastoreType, InstanceIdentifier path) - throws ReadFailedException { + throws ExpectedDataObjectNotFoundException { - try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { - Optional optionalDataObject = tx.read(datastoreType, path).checkedGet(); + try (ReadTransaction tx = broker.newReadOnlyTransaction()) { + Optional optionalDataObject = tx.read(datastoreType, path).get(); if (optionalDataObject.isPresent()) { return optionalDataObject.get(); } else { throw new ExpectedDataObjectNotFoundException(datastoreType, path); } + } catch (InterruptedException | ExecutionException e) { + LOG.error("failed", e); + return null; } } @@ -159,17 +165,27 @@ public class SingleTransactionDataBroker { * purposes for code which does not yet correctly propagate * technical exceptions. Prefer using * {@link #syncReadOptional(DataBroker, LogicalDatastoreType, InstanceIdentifier)}. + * + * @param + * DataObject subclass + * @param broker + * the broker + * @param datastoreType + * the {@link Datastore} type that will be accessed + * @param path + * Path which uniquely identifies subtree which client want to read + * @return If the data at the supplied path exists, returns the data. + * */ @Deprecated public static Optional syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional( DataBroker broker, LogicalDatastoreType datastoreType, InstanceIdentifier path) { - try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { - return tx.read(datastoreType, path).checkedGet(); - } catch (ReadFailedException e) { - LOG.error("ReadFailedException while reading data from {} store path {}; returning Optional.absent()", - datastoreType, path, e); - return Optional.absent(); + try (ReadTransaction tx = broker.newReadOnlyTransaction()) { + return tx.read(datastoreType, path).get(); + } catch (InterruptedException | ExecutionException e) { + LOG.error("failed", e); + return Optional.empty(); } } @@ -196,9 +212,8 @@ public class SingleTransactionDataBroker { throws TransactionCommitFailedException { RetryingManagedNewTransactionRunner runner = new RetryingManagedNewTransactionRunner(broker, maxRetries); - ListenableFutures.checkedGet( - runner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.put(datastoreType, path, data, true)), - SUBMIT_MAPPER); + ListenableFutures.checkedGet(runner.callWithNewWriteOnlyTransactionAndSubmit(tx -> + tx.put(datastoreType,path,data,true)), SUBMIT_MAPPER); } public void syncUpdate( @@ -223,9 +238,8 @@ public class SingleTransactionDataBroker { DataBroker broker, LogicalDatastoreType datastoreType, InstanceIdentifier path, T data, int maxRetries) throws TransactionCommitFailedException { RetryingManagedNewTransactionRunner runner = new RetryingManagedNewTransactionRunner(broker, maxRetries); - ListenableFutures.checkedGet( - runner.callWithNewWriteOnlyTransactionAndSubmit(tx -> tx.merge(datastoreType, path, data, true)), - SUBMIT_MAPPER); + ListenableFutures.checkedGet(runner.callWithNewWriteOnlyTransactionAndSubmit(tx -> + tx.merge(datastoreType, path, data, true)), SUBMIT_MAPPER); } public void syncDelete( diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/TransactionCommitFailedExceptionMapper.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/TransactionCommitFailedExceptionMapper.java index 67db6894d..7f934ac50 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/TransactionCommitFailedExceptionMapper.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/TransactionCommitFailedExceptionMapper.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.datastoreutils; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; /** diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepAbstractDataTreeChangeListener.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepAbstractDataTreeChangeListener.java index dd64670e8..4edf58176 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepAbstractDataTreeChangeListener.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepAbstractDataTreeChangeListener.java @@ -7,25 +7,28 @@ */ package org.opendaylight.genius.datastoreutils.hwvtep; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase; +import java.util.concurrent.ExecutorService; import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.serviceutils.tools.listener.AbstractAsyncDataTreeChangeListener; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public abstract class HwvtepAbstractDataTreeChangeListener> - extends AsyncDataTreeChangeListenerBase { + extends AbstractAsyncDataTreeChangeListener { private final HwvtepNodeHACache hwvtepNodeHACache; - public HwvtepAbstractDataTreeChangeListener(Class clazz, Class eventClazz, - HwvtepNodeHACache hwvtepNodeHACache) { - super(clazz, eventClazz); + public HwvtepAbstractDataTreeChangeListener(DataBroker dataBroker,DataTreeIdentifier dataTreeIdentifier, + ExecutorService executorService, HwvtepNodeHACache hwvtepNodeHACache) { + super(dataBroker, dataTreeIdentifier, executorService); this.hwvtepNodeHACache = hwvtepNodeHACache; } @Override - protected void remove(InstanceIdentifier identifier, T del) { + public void remove(InstanceIdentifier identifier, T del) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } @@ -33,7 +36,7 @@ public abstract class HwvtepAbstractDataTreeChangeListener identifier, T original, T update) { + public void update(InstanceIdentifier identifier, T original, T update) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } @@ -41,7 +44,7 @@ public abstract class HwvtepAbstractDataTreeChangeListener identifier, T add) { + public void add(InstanceIdentifier identifier, T add) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepClusteredDataTreeChangeListener.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepClusteredDataTreeChangeListener.java index be3d2be38..e8dd40a65 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepClusteredDataTreeChangeListener.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/hwvtep/HwvtepClusteredDataTreeChangeListener.java @@ -7,26 +7,29 @@ */ package org.opendaylight.genius.datastoreutils.hwvtep; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; +import java.util.concurrent.ExecutorService; import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public abstract class HwvtepClusteredDataTreeChangeListener< T extends DataObject, K extends ClusteredDataTreeChangeListener> - extends AsyncClusteredDataTreeChangeListenerBase { + extends AbstractClusteredAsyncDataTreeChangeListener { private final HwvtepNodeHACache hwvtepNodeHACache; - public HwvtepClusteredDataTreeChangeListener(Class clazz, Class eventClazz, - HwvtepNodeHACache hwvtepNodeHACache) { - super(clazz, eventClazz); + public HwvtepClusteredDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier dataTreeIdentifier, + ExecutorService executorService, HwvtepNodeHACache hwvtepNodeHACache) { + super(dataBroker, dataTreeIdentifier, executorService); this.hwvtepNodeHACache = hwvtepNodeHACache; } @Override - protected void remove(InstanceIdentifier identifier, T del) { + public void remove(InstanceIdentifier identifier, T del) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } @@ -34,7 +37,7 @@ public abstract class HwvtepClusteredDataTreeChangeListener< } @Override - protected void update(InstanceIdentifier identifier, T original, T update) { + public void update(InstanceIdentifier identifier, T original, T update) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } @@ -42,7 +45,7 @@ public abstract class HwvtepClusteredDataTreeChangeListener< } @Override - protected void add(InstanceIdentifier identifier, T add) { + public void add(InstanceIdentifier identifier, T add) { if (hwvtepNodeHACache.isHAEnabledDevice(identifier)) { return; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/listeners/DataTreeEventCallbackRegistrar.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/listeners/DataTreeEventCallbackRegistrar.java index 49df103c6..30ddf4f8e 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/listeners/DataTreeEventCallbackRegistrar.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/datastoreutils/listeners/DataTreeEventCallbackRegistrar.java @@ -17,8 +17,8 @@ import java.util.function.Consumer; import java.util.function.Function; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -120,6 +120,8 @@ public interface DataTreeEventCallbackRegistrar { /** * Call back when expected instance was added or updated, with implicit {@link NextAction#UNREGISTER}. * See {@link #onAddOrUpdate(LogicalDatastoreType, InstanceIdentifier, BiFunction)} for more details. + * @param + * DataObject subclass */ default void onAddOrUpdate(LogicalDatastoreType store, InstanceIdentifier path, BiConsumer<@Nullable T, T> callback) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/Datastore.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/Datastore.java index 7fe5e284e..847e6d469 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/Datastore.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/Datastore.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; /** * Strongly-typed representation of a datastore (configuration or operational). diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunner.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunner.java index 1577ee69c..5fa7f9d10 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunner.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunner.java @@ -14,14 +14,13 @@ import edu.umd.cs.findbugs.annotations.CheckReturnValue; import java.util.concurrent.CompletionStage; import java.util.concurrent.Future; import java.util.function.Function; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; import org.opendaylight.infrautils.utils.function.CheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedFunction; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; /** * Managed transactions utility to simplify handling of new transactions and ensure they are always closed. diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunnerImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunnerImpl.java index 41d18bdc6..4fa293a1d 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunnerImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedNewTransactionRunnerImpl.java @@ -14,20 +14,19 @@ import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.CheckReturnValue; import java.util.function.Function; import javax.inject.Inject; - -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChain; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedFunction; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.Transaction; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChainListener; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** * Implementation of {@link ManagedNewTransactionRunner}. This is based on {@link ManagedTransactionFactoryImpl} but * re-implements operations based on (read-)write transactions to cancel transactions which don't end up making any @@ -93,15 +92,15 @@ public class ManagedNewTransactionRunnerImpl extends ManagedTransactionFactoryIm @Override public R applyWithNewTransactionChainAndClose(Function chainConsumer) { - try (BindingTransactionChain realTxChain = broker.createTransactionChain(new TransactionChainListener() { + try (TransactionChain realTxChain = broker.createTransactionChain(new TransactionChainListener() { @Override - public void onTransactionChainFailed(TransactionChain chain, AsyncTransaction transaction, + public void onTransactionChainFailed(TransactionChain chain, Transaction transaction, Throwable cause) { LOG.error("Error handling a transaction chain", cause); } @Override - public void onTransactionChainSuccessful(TransactionChain chain) { + public void onTransactionChainSuccessful(TransactionChain chain) { // Nothing to do } })) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionChainImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionChainImpl.java index a2f871ea1..73ea9f3a3 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionChainImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionChainImpl.java @@ -7,13 +7,13 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChain; /** * Implementation of {@link ManagedTransactionChain}, based on {@link ManagedTransactionFactoryImpl}. */ class ManagedTransactionChainImpl extends ManagedTransactionFactoryImpl implements ManagedTransactionChain { - ManagedTransactionChainImpl(BindingTransactionChain realTxChain) { + ManagedTransactionChainImpl(TransactionChain realTxChain) { super(realTxChain); } } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactory.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactory.java index 945b6262a..4676b5a55 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactory.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactory.java @@ -13,14 +13,13 @@ import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.CheckReturnValue; import java.util.concurrent.CompletionStage; import java.util.concurrent.Future; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.infrautils.utils.concurrent.ListenableFutures; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedFunction; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; /** * Managed transaction factories provide managed transactions, i.e. transactions which are automatically diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactoryImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactoryImpl.java index 4b1eada25..0fd83a6ad 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactoryImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/ManagedTransactionFactoryImpl.java @@ -14,12 +14,11 @@ import com.google.common.util.concurrent.MoreExecutors; import edu.umd.cs.findbugs.annotations.CheckReturnValue; import java.util.function.BiFunction; import java.util.function.Supplier; - -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.TransactionFactory; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedFunction; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.TransactionFactory; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +38,7 @@ class ManagedTransactionFactoryImpl implements ManagedTransactionFactory { public R applyWithNewReadOnlyTransactionAndClose( Class datastoreType, InterruptibleCheckedFunction, R, E> txFunction) throws E, InterruptedException { - try (ReadOnlyTransaction realTx = transactionFactory.newReadOnlyTransaction()) { + try (ReadTransaction realTx = transactionFactory.newReadOnlyTransaction()) { TypedReadTransaction wrappedTx = new TypedReadTransactionImpl<>(datastoreType, realTx); return txFunction.apply(wrappedTx); } @@ -58,7 +57,7 @@ class ManagedTransactionFactoryImpl implements ManagedTransactionFactory { public void callWithNewReadOnlyTransactionAndClose( Class datastoreType, InterruptibleCheckedConsumer, E> txConsumer) throws E, InterruptedException { - try (ReadOnlyTransaction realTx = transactionFactory.newReadOnlyTransaction()) { + try (ReadTransaction realTx = transactionFactory.newReadOnlyTransaction()) { TypedReadTransaction wrappedTx = new TypedReadTransactionImpl<>(datastoreType, realTx); txConsumer.accept(wrappedTx); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableReadWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableReadWriteTransaction.java index f9e873c8e..698c9b00a 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableReadWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableReadWriteTransaction.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.infra; import com.google.common.util.concurrent.FluentFuture; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; /** diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableWriteTransaction.java index 0e0a81849..0d8d3ce41 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/NonSubmitCancelableWriteTransaction.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.infra; import com.google.common.util.concurrent.FluentFuture; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; /** diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunner.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunner.java index 6cfb3a578..d2dc96709 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunner.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunner.java @@ -11,10 +11,10 @@ import com.google.common.annotations.Beta; import com.google.common.util.concurrent.MoreExecutors; import java.util.concurrent.Executor; import javax.inject.Inject; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; /** * Implementation of {@link ManagedNewTransactionRunner} with automatic transparent retries on transaction failure @@ -24,7 +24,8 @@ import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; *

Details about the threading model used by this class

* *

This class runs the first attempt to call the delegated {@link ManagedNewTransactionRunner}, - * which typically is a {@link ManagedNewTransactionRunnerImpl} which safely invokes {@link WriteTransaction#submit()}, + * which typically is a {@link ManagedNewTransactionRunnerImpl} which safely invokes + * {@link WriteTransaction#commit()} , * in the using application's thread (like a {@link MoreExecutors#directExecutor()} would, if this were an * {@link Executor}, which it's not). * diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunnerImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunnerImpl.java index cb652ff3e..1cda654a6 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunnerImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/RetryingManagedNewTransactionRunnerImpl.java @@ -15,12 +15,12 @@ import java.util.Objects; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.function.Function; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedConsumer; import org.opendaylight.infrautils.utils.function.InterruptibleCheckedFunction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; /** * Implementation of {@link ManagedNewTransactionRunner} with automatic transparent retries. @@ -159,7 +159,7 @@ class RetryingManagedNewTransactionRunnerImpl implements ManagedNewTransactionRu return Objects.requireNonNull(delegate.callWithNewReadWriteTransactionAndSubmit(datastoreType, txRunner), "delegate.callWithNewWriteOnlyTransactionAndSubmit() == null") .catchingAsync(Exception.class, exception -> { - // as per AsyncWriteTransaction.submit()'s JavaDoc re. retries + // as per AsyncWriteTransaction.commit()'s JavaDoc re. retries if (isRetriableException(exception) && tries - 1 > 0) { return callWithNewReadWriteTransactionAndSubmit(datastoreType, txRunner, tries - 1); } else { @@ -182,7 +182,7 @@ class RetryingManagedNewTransactionRunnerImpl implements ManagedNewTransactionRu delegate.callWithNewWriteOnlyTransactionAndSubmit(txRunner), "delegate.callWithNewWriteOnlyTransactionAndSubmit() == null"); return Futures.catchingAsync(future, OptimisticLockFailedException.class, optimisticLockFailedException -> { - // as per AsyncWriteTransaction.submit()'s JavaDoc re. retries + // as per AsyncWriteTransaction.commit()'s JavaDoc re. retries if (tries - 1 > 0) { return callWithNewWriteOnlyTransactionAndSubmit(txRunner, tries - 1); } else { @@ -206,7 +206,7 @@ class RetryingManagedNewTransactionRunnerImpl implements ManagedNewTransactionRu return Objects.requireNonNull(delegate.callWithNewWriteOnlyTransactionAndSubmit(datastoreType, txRunner), "delegate.callWithNewWriteOnlyTransactionAndSubmit() == null") .catchingAsync(OptimisticLockFailedException.class, optimisticLockFailedException -> { - // as per AsyncWriteTransaction.submit()'s JavaDoc re. retries + // as per AsyncWriteTransaction.commit()'s JavaDoc re. retries if (tries - 1 > 0) { return callWithNewWriteOnlyTransactionAndSubmit(datastoreType, txRunner, tries - 1); } else { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TransactionAdapter.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TransactionAdapter.java index 7bf2f6a24..14956f1e0 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TransactionAdapter.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TransactionAdapter.java @@ -6,24 +6,20 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.genius.infra; - -import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FluentFuture; -import com.google.common.util.concurrent.Futures; +import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** * Adapter allowing managed, datastore-constrained transactions to be used with methods expecting - * generic {@link org.opendaylight.controller.md.sal.binding.api.DataBroker} transactions. + * generic {@link org.opendaylight.mdsal.binding.api.DataBroker} transactions. * *

The adapted transactions maintain the following constraints: they cannot be cancelled or * submitted (only the transaction manager can do this), and they cannot access a logical datastore @@ -32,6 +28,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @Deprecated public final class TransactionAdapter { private TransactionAdapter() { + } /** @@ -45,8 +42,8 @@ public final class TransactionAdapter { if (datastoreTx instanceof TypedReadWriteTransactionImpl) { TypedReadWriteTransactionImpl nonSubmitCancelableDatastoreReadWriteTransaction = (TypedReadWriteTransactionImpl) datastoreTx; - return new ReadWriteTransactionAdapter(nonSubmitCancelableDatastoreReadWriteTransaction.datastoreType, - nonSubmitCancelableDatastoreReadWriteTransaction); + return new ReadWriteTransactionAdapter(nonSubmitCancelableDatastoreReadWriteTransaction + .datastoreType, nonSubmitCancelableDatastoreReadWriteTransaction); } throw new IllegalArgumentException( "Unsupported TypedWriteTransaction implementation " + datastoreTx.getClass()); @@ -76,37 +73,55 @@ public final class TransactionAdapter { final LogicalDatastoreType datastoreType; final TypedWriteTransaction delegate; - private WriteTransactionAdapter(LogicalDatastoreType datastoreType, TypedWriteTransaction delegate) { + private WriteTransactionAdapter(LogicalDatastoreType datastoreType, + TypedWriteTransaction delegate) { this.datastoreType = datastoreType; this.delegate = delegate; } @Override - public void put(LogicalDatastoreType store, InstanceIdentifier path, T data) { + public void put(LogicalDatastoreType store, InstanceIdentifier path, + T data) { checkStore(store); delegate.put(path, data); } @Override public void put(LogicalDatastoreType store, InstanceIdentifier path, T data, - boolean createMissingParents) { + boolean createMissingParents) { checkStore(store); delegate.put(path, data, createMissingParents); } @Override - public void merge(LogicalDatastoreType store, InstanceIdentifier path, T data) { + public void mergeParentStructurePut(@NonNull LogicalDatastoreType store, + @NonNull InstanceIdentifier path, + @NonNull T data) { + ///// + } + + @Override + public void merge(LogicalDatastoreType store, InstanceIdentifier path, + T data) { checkStore(store); delegate.merge(path, data); } @Override - public void merge(LogicalDatastoreType store, InstanceIdentifier path, T data, - boolean createMissingParents) { + public void merge(LogicalDatastoreType store, InstanceIdentifier path, + T data, + boolean createMissingParents) { checkStore(store); delegate.merge(path, data, createMissingParents); } + @Override + public void mergeParentStructureMerge(@NonNull LogicalDatastoreType store, + @NonNull InstanceIdentifier path, + @NonNull T data) { + ////// + } + @Override public boolean cancel() { throw new UnsupportedOperationException("Managed transactions mustn't be cancelled"); @@ -124,8 +139,8 @@ public final class TransactionAdapter { } void checkStore(LogicalDatastoreType store) { - Preconditions.checkArgument(datastoreType.equals(store), "Invalid datastore %s used instead of %s", store, - datastoreType); + Preconditions.checkArgument(datastoreType.equals(store), "Invalid " + + "datastore %s used instead of %s", store, datastoreType); } @Override @@ -134,29 +149,29 @@ public final class TransactionAdapter { } } - private static final class ReadWriteTransactionAdapter extends WriteTransactionAdapter + private static final class ReadWriteTransactionAdapter extends + WriteTransactionAdapter implements ReadWriteTransaction { private final TypedReadWriteTransaction delegate; - private ReadWriteTransactionAdapter(LogicalDatastoreType datastoreType, TypedReadWriteTransaction delegate) { + private ReadWriteTransactionAdapter(LogicalDatastoreType datastoreType, + TypedReadWriteTransaction delegate) { super(datastoreType, delegate); this.delegate = delegate; } @Override - public CheckedFuture, ReadFailedException> read(LogicalDatastoreType store, + public @NonNull FluentFuture> read(@NonNull LogicalDatastoreType + store,@NonNull InstanceIdentifier path) { checkStore(store); - return Futures.makeChecked(delegate.read(path), - e -> new ReadFailedException("Error reading from the datastore", e)); + return FluentFuture.from(delegate.read(path)); } @Override - public CheckedFuture exists(LogicalDatastoreType store, - InstanceIdentifier path) { + public FluentFuture exists(LogicalDatastoreType store, InstanceIdentifier path) { checkStore(store); - return Futures.makeChecked(delegate.exists(path), - e -> new ReadFailedException("Error reading from the datastore", e)); + return FluentFuture.from(delegate.exists(path)); } } } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransaction.java index 245bb6206..cb2fdfae7 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransaction.java @@ -7,13 +7,14 @@ */ package org.opendaylight.genius.infra; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; -import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; +import java.util.Optional; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.Transaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + /** * Read transaction which is specific to a single logical datastore (configuration or operational). Designed for use * with {@link ManagedNewTransactionRunner} (it doesn’t support explicit cancel or commit operations). @@ -23,7 +24,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * @param The logical datastore handled by the transaction. */ public interface TypedReadTransaction - extends AsyncTransaction, DataObject> { + extends Transaction { /** * Reads an object from the given path. * diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransactionImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransactionImpl.java index 6797e8b5a..ec5d31a9d 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransactionImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadTransactionImpl.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.infra; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; +import java.util.Optional; +import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransaction.java index f70d49203..a3cee1ca3 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransaction.java @@ -12,7 +12,7 @@ package org.opendaylight.genius.infra; * for use with {@link ManagedNewTransactionRunner} (it doesn’t support explicit cancel or commit operations). * * @param The logical datastore handled by the transaction. - * @see org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction + * @see org.opendaylight.mdsal.binding.api.ReadWriteTransaction */ public interface TypedReadWriteTransaction extends TypedReadTransaction, TypedWriteTransaction { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransactionImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransactionImpl.java index e43606ccd..c0dd6e7df 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransactionImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedReadWriteTransactionImpl.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.infra; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import java.util.Optional; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedTransaction.java index e500a625a..e17cb5efd 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedTransaction.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; abstract class TypedTransaction { // Temporarily package protected for TransactionAdapter diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransaction.java index 8f81c7f68..02130a444 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransaction.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; +import org.opendaylight.mdsal.binding.api.Transaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * @see WriteTransaction */ public interface TypedWriteTransaction extends - AsyncTransaction, DataObject> { + Transaction { /** * Writes an object to the given path. * diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransactionImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransactionImpl.java index f37766563..3509358e5 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransactionImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/TypedWriteTransactionImpl.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.infra; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingReadWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingReadWriteTransaction.java index fa667fb24..b55c60d19 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingReadWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingReadWriteTransaction.java @@ -7,11 +7,10 @@ */ package org.opendaylight.genius.infra; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import com.google.common.util.concurrent.FluentFuture; +import java.util.Optional; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -25,14 +24,13 @@ class WriteTrackingReadWriteTransaction extends WriteTrackingWriteTransaction im } @Override - public CheckedFuture, ReadFailedException> read(LogicalDatastoreType store, + public FluentFuture> read(LogicalDatastoreType store, InstanceIdentifier path) { return ((ReadWriteTransaction) delegate()).read(store, path); } @Override - public CheckedFuture exists(LogicalDatastoreType store, - InstanceIdentifier path) { + public FluentFuture exists(LogicalDatastoreType store, InstanceIdentifier path) { return ((ReadWriteTransaction) delegate()).exists(store, path); } } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedReadWriteTransactionImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedReadWriteTransactionImpl.java index e75104679..b345bc76f 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedReadWriteTransactionImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedReadWriteTransactionImpl.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedWriteTransactionImpl.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedWriteTransactionImpl.java index 65504fe25..e48723bae 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedWriteTransactionImpl.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingTypedWriteTransactionImpl.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingWriteTransaction.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingWriteTransaction.java index 5c050631e..d284874a6 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingWriteTransaction.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/infra/WriteTrackingWriteTransaction.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.infra; -import org.opendaylight.controller.md.sal.binding.api.ForwardingWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.spi.ForwardingWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MDSALUtil.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MDSALUtil.java index c6d964f21..b858eacea 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MDSALUtil.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MDSALUtil.java @@ -7,19 +7,19 @@ */ package org.opendaylight.genius.mdsalutil; -import com.google.common.base.Optional; import com.google.common.net.InetAddresses; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import java.util.Optional; +import java.util.concurrent.ExecutionException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.actions.ActionDrop; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder; @@ -559,12 +559,8 @@ public class MDSALUtil { */ @Deprecated public static Optional read(DataBroker broker, LogicalDatastoreType datastoreType, - InstanceIdentifier path) { - try { - return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, path); - } catch (ReadFailedException e) { - throw new RuntimeException(e); - } + InstanceIdentifier path) throws ExecutionException, InterruptedException { + return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, path); } /** @@ -627,7 +623,8 @@ public class MDSALUtil { ncId.getValue().lastIndexOf(':'))); } - public static String getInterfaceName(NodeConnectorRef ref, DataBroker dataBroker) { + public static String getInterfaceName(NodeConnectorRef ref, DataBroker dataBroker) + throws ExecutionException, InterruptedException { NodeConnectorId nodeConnectorId = getNodeConnectorId(dataBroker, ref); NodeId nodeId = getNodeIdFromNodeConnectorId(nodeConnectorId); InstanceIdentifier ncIdentifier = InstanceIdentifier @@ -635,15 +632,15 @@ public class MDSALUtil { .child(Node.class, new NodeKey(nodeId)) .child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)).build(); - return read(dataBroker, LogicalDatastoreType.OPERATIONAL, ncIdentifier).toJavaUtil().map( + return read(dataBroker, LogicalDatastoreType.OPERATIONAL, ncIdentifier).map( nc -> nc.augmentation(FlowCapableNodeConnector.class)).map(FlowCapableNodeConnector::getName).orElse( null); } public static NodeConnectorId getNodeConnectorId(DataBroker dataBroker, - NodeConnectorRef ref) { + NodeConnectorRef ref) throws ExecutionException, InterruptedException { return ((Optional) read(dataBroker, LogicalDatastoreType.OPERATIONAL, - ref.getValue())).toJavaUtil().map(NodeConnector::getId).orElse(null); + ref.getValue())).map(NodeConnector::getId).orElse(null); } public static Action createNxOfInPortAction(final int actionKey, final int inPortVal) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NWUtil.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NWUtil.java index 7482d1e6f..72d808277 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NWUtil.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NWUtil.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil; -import com.google.common.base.Optional; import com.google.common.net.InetAddresses; import com.google.common.primitives.Ints; import com.google.common.primitives.UnsignedBytes; @@ -18,9 +17,12 @@ import java.net.UnknownHostException; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Optional; +import java.util.concurrent.ExecutionException; import org.apache.commons.net.util.SubnetUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; @@ -161,11 +163,11 @@ public final class NWUtil { /** * Returns the ids of the currently operative DPNs. */ - public static List getOperativeDPNs(DataBroker dataBroker) { + public static List getOperativeDPNs(DataBroker dataBroker) throws ExecutionException, InterruptedException { List result = new LinkedList<>(); InstanceIdentifier nodesInstanceIdentifier = InstanceIdentifier.builder(Nodes.class).build(); - Optional nodesOptional = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, - nodesInstanceIdentifier); + Optional nodesOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, nodesInstanceIdentifier); if (!nodesOptional.isPresent()) { return result; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdOptionType.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdOptionType.java index 8a0f8aaff..80ab41c74 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdOptionType.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdOptionType.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.mdsalutil.actions; import java.util.Collections; - import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.openflowplugin.extension.api.ExtensionAugment; import org.opendaylight.openflowplugin.extension.api.GroupingLooseResolver; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdReserved.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdReserved.java index 6d255af68..1c8400909 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdReserved.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNdReserved.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.mdsalutil.actions; import java.util.Collections; - import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.openflowplugin.extension.api.ExtensionAugment; import org.opendaylight.openflowplugin.extension.api.GroupingLooseResolver; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/DataObjectCache.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/DataObjectCache.java index 5608309b0..d396f8e29 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/DataObjectCache.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/DataObjectCache.java @@ -9,13 +9,13 @@ package org.opendaylight.genius.mdsalutil.cache; import static java.util.Objects.requireNonNull; -import com.google.common.base.Optional; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collection; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; @@ -24,15 +24,15 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.PreDestroy; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -75,7 +75,7 @@ public class DataObjectCache implements AutoCloseable { requireNonNull(cacheProvider, "cacheProvider"); cache = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override - public Optional load(K key) throws ReadFailedException { + public Optional load(K key) throws ReadFailedException, ExecutionException, InterruptedException { return broker.syncReadOptional(datastoreType, instanceIdFunction.apply(key)); } }); @@ -88,7 +88,7 @@ public class DataObjectCache implements AutoCloseable { case WRITE: case SUBTREE_MODIFIED: V dataAfter = rootNode.getDataAfter(); - cache.put(keyFunction.apply(path, dataAfter), Optional.fromNullable(dataAfter)); + cache.put(keyFunction.apply(path, dataAfter), Optional.ofNullable(dataAfter)); added(path, dataAfter); break; case DELETE: @@ -102,7 +102,7 @@ public class DataObjectCache implements AutoCloseable { } }; - listenerRegistration = dataBroker.registerDataTreeChangeListener(new DataTreeIdentifier<>( + listenerRegistration = dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create( datastoreType, listenerRegistrationPath), dataObjectListener); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/InstanceIdDataObjectCache.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/InstanceIdDataObjectCache.java index 7fb822e47..3e1a7f992 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/InstanceIdDataObjectCache.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/cache/InstanceIdDataObjectCache.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.mdsalutil.cache; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.infrautils.caches.CacheProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/ericmatches/EricMatchInfoHelper.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/ericmatches/EricMatchInfoHelper.java index 9f2abdb18..2a0c8ff7d 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/ericmatches/EricMatchInfoHelper.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/ericmatches/EricMatchInfoHelper.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.mdsalutil.ericmatches; import java.util.ArrayList; import java.util.List; import java.util.Map; - import org.opendaylight.genius.mdsalutil.MatchInfo; import org.opendaylight.genius.utils.SuperTypeUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java index 98674c80a..b8af71c8f 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java @@ -7,10 +7,9 @@ */ package org.opendaylight.genius.mdsalutil.interfaces; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; @@ -31,7 +30,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #addFlow(TypedWriteTransaction, FlowEntity)}. */ @Deprecated - CheckedFuture installFlow(FlowEntity flowEntity); + FluentFuture installFlow(FlowEntity flowEntity); /** * Adds a flow. @@ -39,7 +38,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #addFlow(TypedWriteTransaction, Uint64, Flow)}. */ @Deprecated - CheckedFuture installFlow(Uint64 dpId, Flow flowEntity); + FluentFuture installFlow(Uint64 dpId, Flow flowEntity); /** * Adds a flow. @@ -47,7 +46,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #addFlow(TypedWriteTransaction, FlowEntity)}. */ @Deprecated - CheckedFuture installFlow(Uint64 dpId, FlowEntity flowEntity); + FluentFuture installFlow(Uint64 dpId, FlowEntity flowEntity); /** * Adds the given flow. @@ -80,7 +79,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, FlowEntity)}. */ @Deprecated - CheckedFuture removeFlow(FlowEntity flowEntity); + FluentFuture removeFlow(FlowEntity flowEntity); /** * Removes a flow. @@ -88,7 +87,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, Uint64, Flow)}. */ @Deprecated - CheckedFuture removeFlow(Uint64 dpId, Flow flowEntity); + FluentFuture removeFlow(Uint64 dpId, Flow flowEntity); /** * Removes the given flow. diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/nxmatches/NxMatchRegister.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/nxmatches/NxMatchRegister.java index ec998a3c6..c5fef4fd9 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/nxmatches/NxMatchRegister.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/nxmatches/NxMatchRegister.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.mdsalutil.nxmatches; import com.google.common.collect.ImmutableBiMap; import java.util.Map; - import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg3; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg4; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResource.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResource.java index cf10a66cd..965df4a6b 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResource.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResource.java @@ -16,6 +16,8 @@ public interface ActionableResource { short UPDATE = 2; short DELETE = 3; short READ = 4; + // MDSAL-534 Merge,Put with no create_missing_parents flag + short UPDATECONTAINER = 5; InstanceIdentifier getInstanceIdentifier(); diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResources.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResources.java index 764fa2da2..bd6fa7988 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResources.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ActionableResources.java @@ -51,4 +51,10 @@ public final class ActionableResources { final InstanceIdentifier path, final T data) { return new ActionableResourceImpl(identifier, path, ActionableResource.DELETE, data, null); } + + public static @NonNull ActionableResource updateContainer(final + InstanceIdentifier path, final T newData) { + return new ActionableResourceImpl(path, ActionableResource.UPDATECONTAINER, requireNonNull(newData), + null); + } } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/DefaultBatchHandler.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/DefaultBatchHandler.java index 2a6098251..53006ceda 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/DefaultBatchHandler.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/DefaultBatchHandler.java @@ -9,9 +9,9 @@ package org.opendaylight.genius.utils.batching; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -50,6 +50,26 @@ public class DefaultBatchHandler implements ResourceHandler { tx.merge(logicalDatastoreType, identifier, (DataObject) update, true); } + @Override + public void updateContainer(WriteTransaction tx, LogicalDatastoreType logicalDatastoreType, + InstanceIdentifier identifier, Object original, Object update, + List transactionObjects) { + if (update != null && !(update instanceof DataObject)) { + return; + } + if (logicalDatastoreType != getDatastoreType()) { + return; + } + + SubTransaction subTransaction = new SubTransactionImpl(); + subTransaction.setAction(SubTransaction.UPDATE); + subTransaction.setInstance(update); + subTransaction.setInstanceIdentifier(identifier); + transactionObjects.add(subTransaction); + + tx.merge(logicalDatastoreType, identifier, (DataObject) update); + } + @Override public void create(WriteTransaction tx, final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier identifier, final Object data, List transactionObjects) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceBatchingManager.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceBatchingManager.java index c4c96b151..d2646faef 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceBatchingManager.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceBatchingManager.java @@ -7,9 +7,8 @@ */ package org.opendaylight.genius.utils.batching; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -20,6 +19,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; @@ -29,13 +29,16 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -154,22 +157,23 @@ public class ResourceBatchingManager implements AutoCloseable { * @param identifier identifier to be read * @return a CheckFuture containing the result of the read */ - public CheckedFuture, ReadFailedException> read( + public FluentFuture> read( String resourceType, InstanceIdentifier identifier) { BlockingQueue queue = getQueue(resourceType); if (queue != null) { if (pendingModificationByResourceType.get(resourceType).contains(identifier)) { SettableFuture> readFuture = SettableFuture.create(); queue.add(new ActionableReadResource<>(identifier, readFuture)); - return Futures.makeChecked(readFuture, ReadFailedException.MAPPER); + return FluentFuture.from(Futures.makeChecked(readFuture, ReadFailedException.MAPPER)); } else { ResourceHandler resourceHandler = resourceHandlerMapper.get(resourceType).getRight(); - try (ReadOnlyTransaction tx = resourceHandler.getResourceBroker().newReadOnlyTransaction()) { + try (ReadTransaction tx = resourceHandler.getResourceBroker().newReadOnlyTransaction()) { return tx.read(resourceHandler.getDatastoreType(), identifier); } } } - return Futures.immediateFailedCheckedFuture(new ReadFailedException( + + return FluentFutures.immediateFailedFluentFuture(new ReadFailedException( "No batch handler was registered for resource " + resourceType)); } @@ -353,6 +357,12 @@ public class ResourceBatchingManager implements AutoCloseable { resHandler.update(tx, dsType, actResource.getInstanceIdentifier(), original, updated,transactionObjects); break; + case ActionableResource.UPDATECONTAINER: + Object updatedContainer = actResource.getInstance(); + Object originalContainer = actResource.getOldInstance(); + resHandler.updateContainer(tx, dsType, actResource.getInstanceIdentifier(), + originalContainer, updatedContainer,transactionObjects); + break; case ActionableResource.DELETE: resHandler.delete(tx, dsType, actResource.getInstanceIdentifier(), actResource.getInstance(), transactionObjects); @@ -384,8 +394,9 @@ public class ResourceBatchingManager implements AutoCloseable { } } + long start = System.currentTimeMillis(); - ListenableFuture futures = tx.submit(); + FluentFuture futures = tx.commit(); try { futures.get(); @@ -417,7 +428,7 @@ public class ResourceBatchingManager implements AutoCloseable { LOG.error("Unable to determine Action for transaction object with id {}", object.getInstanceIdentifier()); } - ListenableFuture futureOperation = writeTransaction.submit(); + FluentFuture futureOperation = writeTransaction.commit(); try { futureOperation.get(); if (txMap.containsKey(object)) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceHandler.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceHandler.java index 3fe49ba82..dc951ff07 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceHandler.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceHandler.java @@ -8,9 +8,9 @@ package org.opendaylight.genius.utils.batching; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public interface ResourceHandler { @@ -21,8 +21,11 @@ public interface ResourceHandler { void delete(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifer, Object vrfEntry, List transactionObjects); - void update(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifier, Object original, - Object update, List transactionObjects); + void update(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifier, + Object original, Object update, List transactionObjects); + + void updateContainer(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifier, + Object original, Object update, List transactionObjects); LogicalDatastoreType getDatastoreType(); diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepUtils.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepUtils.java index d0297556d..0c620e158 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepUtils.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/hwvtep/HwvtepUtils.java @@ -8,22 +8,24 @@ package org.opendaylight.genius.utils.hwvtep; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.StreamSupport; +import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; -import org.opendaylight.genius.mdsalutil.MDSALUtil; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.IetfYangUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -77,20 +79,21 @@ public final class HwvtepUtils { * @deprecated Use {@link #addLogicalSwitch(TypedWriteTransaction, NodeId, LogicalSwitches)}. */ @Deprecated - public static ListenableFuture addLogicalSwitch(DataBroker broker, NodeId nodeId, - LogicalSwitches logicalSwitch) { + public static FluentFuture addLogicalSwitch(DataBroker broker, NodeId nodeId, + LogicalSwitches logicalSwitch) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); putLogicalSwitch(transaction,LogicalDatastoreType.CONFIGURATION, nodeId, logicalSwitch); - return transaction.submit(); + return transaction.commit(); } @Deprecated - public static ListenableFuture addLogicalSwitch(DataBroker broker, LogicalDatastoreType logicalDatastoreType, + public static FluentFuture addLogicalSwitch(DataBroker broker, + LogicalDatastoreType logicalDatastoreType, NodeId nodeId, LogicalSwitches logicalSwitch) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); putLogicalSwitch(transaction,logicalDatastoreType, nodeId, logicalSwitch); - return transaction.submit(); + return transaction.commit(); } /** @@ -156,11 +159,11 @@ public final class HwvtepUtils { * @deprecated Use {@link #deleteLogicalSwitch(TypedWriteTransaction, NodeId, String)}. */ @Deprecated - public static ListenableFuture deleteLogicalSwitch(DataBroker broker, NodeId nodeId, + public static FluentFuture deleteLogicalSwitch(DataBroker broker, NodeId nodeId, String logicalSwitchName) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); deleteLogicalSwitch(transaction, nodeId, logicalSwitchName); - return transaction.submit(); + return transaction.commit(); } /** @@ -206,10 +209,10 @@ public final class HwvtepUtils { */ @Deprecated public static LogicalSwitches getLogicalSwitch(DataBroker broker, LogicalDatastoreType datastoreType, NodeId nodeId, - String logicalSwitchName) { + String logicalSwitchName) throws ExecutionException, InterruptedException { final InstanceIdentifier iid = HwvtepSouthboundUtils .createLogicalSwitchesInstanceIdentifier(nodeId, new HwvtepNodeName(logicalSwitchName)); - return MDSALUtil.read(broker, datastoreType, iid).orNull(); + return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, iid).orElse(null); } /** @@ -226,7 +229,7 @@ public final class HwvtepUtils { final InstanceIdentifier iid = HwvtepSouthboundUtils .createLogicalSwitchesInstanceIdentifier(nodeId, new HwvtepNodeName(logicalSwitchName)); try { - return tx.read(iid).get().orNull(); + return tx.read(iid).get().orElse(null); } catch (InterruptedException | ExecutionException e) { throw new RuntimeException("Error reading logical switch " + iid, e); } @@ -246,10 +249,11 @@ public final class HwvtepUtils { * @return the physical port termination point */ public static TerminationPoint getPhysicalPortTerminationPoint(DataBroker broker, - LogicalDatastoreType datastoreType, NodeId nodeId, String portName) { + LogicalDatastoreType datastoreType, NodeId nodeId, String portName) throws ExecutionException, + InterruptedException { TerminationPointKey tpKey = new TerminationPointKey(new TpId(portName)); InstanceIdentifier iid = HwvtepSouthboundUtils.createTerminationPointId(nodeId, tpKey); - return MDSALUtil.read(broker, datastoreType, iid).orNull(); + return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, iid).orElse(null); } /** @@ -263,12 +267,14 @@ public final class HwvtepUtils { * virtual network id * @return the logical switches */ - public static LogicalSwitches getLogicalSwitches(DataBroker broker, String hwVtepNodeId, String vni) { + public static LogicalSwitches getLogicalSwitches(DataBroker broker, String hwVtepNodeId, String vni) + throws ExecutionException, InterruptedException { NodeId nodeId = new NodeId(hwVtepNodeId); InstanceIdentifier logicalSwitchesIdentifier = HwvtepSouthboundUtils .createLogicalSwitchesInstanceIdentifier(nodeId, new HwvtepNodeName(vni)); - return MDSALUtil.read(broker, LogicalDatastoreType.CONFIGURATION, logicalSwitchesIdentifier).orNull(); + return SingleTransactionDataBroker.syncReadOptional(broker, LogicalDatastoreType.CONFIGURATION, + logicalSwitchesIdentifier).orElse(null); } /** @@ -325,13 +331,14 @@ public final class HwvtepUtils { * @return the physical locator */ public static HwvtepPhysicalLocatorAugmentation getPhysicalLocator(DataBroker broker, - LogicalDatastoreType datastoreType, NodeId nodeId, final IpAddress phyLocatorIp) { + LogicalDatastoreType datastoreType, NodeId nodeId, final IpAddress phyLocatorIp) throws + ExecutionException, InterruptedException { HwvtepPhysicalLocatorAugmentation phyLocatorAug = HwvtepSouthboundUtils .createHwvtepPhysicalLocatorAugmentation(phyLocatorIp); InstanceIdentifier iid = HwvtepSouthboundUtils .createPhysicalLocatorInstanceIdentifier(nodeId, phyLocatorAug) .augmentation(HwvtepPhysicalLocatorAugmentation.class); - return MDSALUtil.read(broker, datastoreType, iid).orNull(); + return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, iid).orElse(null); } /** @@ -347,11 +354,11 @@ public final class HwvtepUtils { * @deprecated Use {@link #addRemoteUcastMacs(TypedWriteTransaction, NodeId, Iterable)}. */ @Deprecated - public static ListenableFuture addRemoteUcastMacs(DataBroker broker, NodeId nodeId, + public static FluentFuture addRemoteUcastMacs(DataBroker broker, NodeId nodeId, List lstRemoteUcastMacs) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); putRemoteUcastMacs(transaction, nodeId, lstRemoteUcastMacs); - return transaction.submit(); + return transaction.commit(); } /** @@ -437,11 +444,11 @@ public final class HwvtepUtils { * @deprecated Use {@link #deleteRemoteUcastMac(TypedWriteTransaction, NodeId, String, MacAddress)}. */ @Deprecated - public static ListenableFuture deleteRemoteUcastMac(DataBroker broker, NodeId nodeId, + public static FluentFuture deleteRemoteUcastMac(DataBroker broker, NodeId nodeId, String logicalSwitchName, MacAddress mac) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); deleteRemoteUcastMac(transaction, nodeId, logicalSwitchName, mac); - return transaction.submit(); + return transaction.commit(); } /** @@ -488,11 +495,11 @@ public final class HwvtepUtils { * @deprecated Use {@link #deleteRemoteUcastMacs(TypedWriteTransaction, NodeId, String, Iterable)}. */ @Deprecated - public static ListenableFuture deleteRemoteUcastMacs(DataBroker broker, NodeId nodeId, + public static FluentFuture deleteRemoteUcastMacs(DataBroker broker, NodeId nodeId, String logicalSwitchName, List lstMac) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); deleteRemoteUcastMacs(transaction, nodeId, logicalSwitchName, lstMac); - return transaction.submit(); + return transaction.commit(); } /** @@ -542,11 +549,11 @@ public final class HwvtepUtils { * the lst remote mcast macs * @return the listenable future */ - public static ListenableFuture addRemoteMcastMacs(DataBroker broker, NodeId nodeId, + public static FluentFuture addRemoteMcastMacs(DataBroker broker, NodeId nodeId, List lstRemoteMcastMacs) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); putRemoteMcastMacs(transaction, nodeId, lstRemoteMcastMacs); - return transaction.submit(); + return transaction.commit(); } /** @@ -631,10 +638,11 @@ public final class HwvtepUtils { */ @Deprecated public static RemoteMcastMacs getRemoteMcastMac(DataBroker broker, LogicalDatastoreType datastoreType, - NodeId nodeId, RemoteMcastMacsKey remoteMcastMacsKey) { + NodeId nodeId, RemoteMcastMacsKey remoteMcastMacsKey) + throws ExecutionException, InterruptedException { final InstanceIdentifier iid = HwvtepSouthboundUtils .createRemoteMcastMacsInstanceIdentifier(nodeId, remoteMcastMacsKey); - return MDSALUtil.read(broker, datastoreType, iid).orNull(); + return SingleTransactionDataBroker.syncReadOptional(broker, datastoreType, iid).orElse(null); } /** @@ -651,7 +659,7 @@ public final class HwvtepUtils { final InstanceIdentifier iid = HwvtepSouthboundUtils .createRemoteMcastMacsInstanceIdentifier(nodeId, remoteMcastMacsKey); try { - return tx.read(iid).get().orNull(); + return tx.read(iid).get().orElse(null); } catch (InterruptedException | ExecutionException e) { throw new RuntimeException("Error reading remote multicast MAC " + iid, e); } @@ -670,11 +678,11 @@ public final class HwvtepUtils { * @deprecated Use {@link #deleteRemoteMcastMac(TypedWriteTransaction, NodeId, RemoteMcastMacsKey)}. */ @Deprecated - public static ListenableFuture deleteRemoteMcastMac(DataBroker broker, NodeId nodeId, + public static FluentFuture deleteRemoteMcastMac(DataBroker broker, NodeId nodeId, RemoteMcastMacsKey remoteMcastMacsKey) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); deleteRemoteMcastMac(transaction, nodeId, remoteMcastMacsKey); - return transaction.submit(); + return transaction.commit(); } /** @@ -718,11 +726,11 @@ public final class HwvtepUtils { * the lst remote mcast macs key * @return the listenable future */ - public static ListenableFuture deleteRemoteMcastMacs(DataBroker broker, NodeId nodeId, + public static FluentFuture deleteRemoteMcastMacs(DataBroker broker, NodeId nodeId, List lstRemoteMcastMacsKey) { WriteTransaction transaction = broker.newWriteOnlyTransaction(); deleteRemoteMcastMacs(transaction, nodeId, lstRemoteMcastMacsKey); - return transaction.submit(); + return transaction.commit(); } /** @@ -870,9 +878,10 @@ public final class HwvtepUtils { * @deprecated Use {@link #getHwVtepNode(TypedReadTransaction, NodeId)}. */ @Deprecated - public static Node getHwVtepNode(DataBroker dataBroker, LogicalDatastoreType datastoreType, NodeId nodeId) { - return MDSALUtil.read(dataBroker, datastoreType, - HwvtepSouthboundUtils.createInstanceIdentifier(nodeId)).orNull(); + public static Node getHwVtepNode(DataBroker dataBroker, LogicalDatastoreType datastoreType, NodeId nodeId) + throws ExecutionException, InterruptedException { + return SingleTransactionDataBroker.syncReadOptional(dataBroker, datastoreType, + HwvtepSouthboundUtils.createInstanceIdentifier(nodeId)).orElse(null); } /** @@ -884,7 +893,7 @@ public final class HwvtepUtils { */ public static Node getHwVtepNode(TypedReadTransaction tx, NodeId nodeId) { try { - return tx.read(HwvtepSouthboundUtils.createInstanceIdentifier(nodeId)).get().orNull(); + return tx.read(HwvtepSouthboundUtils.createInstanceIdentifier(nodeId)).get().orElse(null); } catch (InterruptedException | ExecutionException e) { throw new RuntimeException("Failed to read hwvtep node", e); } @@ -907,7 +916,7 @@ public final class HwvtepUtils { * @deprecated Use {@link #addUcastMacs(TypedWriteTransaction, String, Iterable, String, IpAddress)}. */ @Deprecated - public static ListenableFuture installUcastMacs(DataBroker broker, + public static FluentFuture installUcastMacs(DataBroker broker, String deviceNodeId, List macAddresses, String logicalSwitchName, IpAddress remoteVtepIp) { NodeId nodeId = new NodeId(deviceNodeId); @@ -953,7 +962,8 @@ public final class HwvtepUtils { * @deprecated Use {@link #getDbVersion(TypedReadTransaction, NodeId)}. */ @Deprecated - public static String getDbVersion(DataBroker broker, NodeId nodeId) { + public static String getDbVersion(DataBroker broker, NodeId nodeId) throws ExecutionException, + InterruptedException { Node hwvtepNode = getHwVtepNode(broker, LogicalDatastoreType.OPERATIONAL, nodeId); String dbVersion = ""; if (hwvtepNode != null) { diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/TestIMdsalApiManager.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/TestIMdsalApiManager.java index 9f14f2a27..d85564c0f 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/TestIMdsalApiManager.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/TestIMdsalApiManager.java @@ -18,8 +18,7 @@ import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -28,7 +27,6 @@ import java.util.Map; import java.util.Objects; import org.junit.ComparisonFailure; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; @@ -39,6 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.ta import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -275,14 +274,13 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } @Override - public CheckedFuture installFlow(FlowEntity flowEntity) { + public FluentFuture installFlow(FlowEntity flowEntity) { storeFlow(flowEntity); - return Futures.immediateCheckedFuture(null); + return FluentFutures.immediateNullFluentFuture(); } @Override - public CheckedFuture installFlow(Uint64 dpId, - FlowEntity flowEntity) { + public FluentFuture installFlow(Uint64 dpId, FlowEntity flowEntity) { // TODO should dpId be considered here? how? Copy clone FlowEntity and change its dpId? return installFlow(flowEntity); } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/utils/batching/ResourceBatchingManagerTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/utils/batching/ResourceBatchingManagerTest.java index d5a6c1d9e..efa379236 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/utils/batching/ResourceBatchingManagerTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/utils/batching/ResourceBatchingManagerTest.java @@ -11,17 +11,17 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; diff --git a/mdsalutil/mdsalutil-impl/MdSalUtilTest.java b/mdsalutil/mdsalutil-impl/MdSalUtilTest.java index 17384b4ff..fb8c3cc4f 100644 --- a/mdsalutil/mdsalutil-impl/MdSalUtilTest.java +++ b/mdsalutil/mdsalutil-impl/MdSalUtilTest.java @@ -17,10 +17,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.BucketInfo; import org.opendaylight.genius.mdsalutil.FlowEntity; @@ -34,6 +30,10 @@ import org.opendaylight.genius.mdsalutil.actions.ActionPushVlan; import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldVlanVid; import org.opendaylight.genius.mdsalutil.instructions.InstructionWriteActions; import org.opendaylight.genius.mdsalutil.matches.MatchTunnelId; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder; @@ -145,7 +145,7 @@ public class MdSalUtilTest extends AbstractConcurrentDataBrokerTest { writeTx.put(LogicalDatastoreType.OPERATIONAL, flowNodeIdentifier, nodeBuilder.build()); writeTx.put(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(Nodes.class), nodes); writeTx.put(LogicalDatastoreType.CONFIGURATION, flowNodeIdentifier, nodeBuilder.build()); - assertCommit(writeTx.submit()); + assertCommit(writeTx.commit()); } // Methods to test the install Flow and Group diff --git a/mdsalutil/mdsalutil-impl/pom.xml b/mdsalutil/mdsalutil-impl/pom.xml index 4894bd6e9..b6a955011 100644 --- a/mdsalutil/mdsalutil-impl/pom.xml +++ b/mdsalutil/mdsalutil-impl/pom.xml @@ -26,10 +26,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html ODL :: genius :: ${project.artifactId} - + org.opendaylight.openflowplugin.model model-flow-base @@ -87,7 +87,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.infrautils infrautils-testutils - + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + test + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + test + test-jar org.opendaylight.controller diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/datastoreutils/listeners/internal/DataTreeEventCallbackRegistrarImpl.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/datastoreutils/listeners/internal/DataTreeEventCallbackRegistrarImpl.java index 35f0990dc..2b1523080 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/datastoreutils/listeners/internal/DataTreeEventCallbackRegistrarImpl.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/datastoreutils/listeners/internal/DataTreeEventCallbackRegistrarImpl.java @@ -26,14 +26,14 @@ import org.apache.aries.blueprint.annotation.service.Reference; import org.apache.aries.blueprint.annotation.service.Service; import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -158,7 +158,7 @@ public class DataTreeEventCallbackRegistrarImpl implements DataTreeEventCallback private void on(Operation op, LogicalDatastoreType store, InstanceIdentifier path, BiFunction cb, Duration timeoutDuration, @Nullable Consumer> timedOutCallback) { - DataTreeIdentifier dtid = new DataTreeIdentifier<>(store, path); + DataTreeIdentifier dtid = DataTreeIdentifier.create(store, path); DataTreeEventCallbackChangeListener listener = new DataTreeEventCallbackChangeListener<>(op, cb, () -> { if (timedOutCallback != null) { timedOutCallback.accept(dtid); diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/diagstatus/internal/DatastoreServiceStatusProvider.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/diagstatus/internal/DatastoreServiceStatusProvider.java index 443c06e33..1be9377d9 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/diagstatus/internal/DatastoreServiceStatusProvider.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/diagstatus/internal/DatastoreServiceStatusProvider.java @@ -18,12 +18,12 @@ import org.apache.aries.blueprint.annotation.service.Reference; import org.apache.aries.blueprint.annotation.service.Service; import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStatsMXBean; import org.opendaylight.controller.cluster.datastore.shardmanager.ShardManagerInfoMBean; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.infrautils.diagstatus.DiagStatusService; import org.opendaylight.infrautils.diagstatus.MBeanUtils; import org.opendaylight.infrautils.diagstatus.ServiceDescriptor; import org.opendaylight.infrautils.diagstatus.ServiceState; import org.opendaylight.infrautils.diagstatus.ServiceStatusProvider; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java index 022180613..d7fab55ed 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java @@ -8,31 +8,23 @@ package org.opendaylight.genius.mdsalutil.internal; -import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import static org.opendaylight.infrautils.utils.concurrent.Executors.newListeningSingleThreadExecutor; +import static org.opendaylight.mdsal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.Datastore.Configuration; @@ -47,6 +39,12 @@ import org.opendaylight.genius.mdsalutil.GroupInfoKey; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.inject.AbstractLifecycle; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; @@ -122,9 +120,6 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager int batchInterval = Integer.getInteger("batch.wait.time", 500); flowBatchingUtils.registerWithBatchManager(new MdSalUtilBatchHandler(dataBroker, batchSize, batchInterval)); - flowListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); - flowConfigListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); - groupListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); } @Override @@ -304,14 +299,16 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } } - private class GroupListener extends AsyncClusteredDataTreeChangeListenerBase { + private class GroupListener extends AbstractClusteredAsyncDataTreeChangeListener { GroupListener() { - super(Group.class, GroupListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL,InstanceIdentifier.create(Nodes.class).child(Node.class) + .augmentation(FlowCapableNode.class).child(Group.class), + Executors.newSingleThreadExecutor("GroupListener", LOG)); } @Override - protected void remove(InstanceIdentifier identifier, Group del) { + public void remove(InstanceIdentifier identifier, Group del) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, del); } @@ -326,37 +323,28 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - protected void update(InstanceIdentifier identifier, Group original, Group update) { + public void update(InstanceIdentifier identifier, Group original, Group update) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, update); } @Override - protected void add(InstanceIdentifier identifier, Group add) { + public void add(InstanceIdentifier identifier, Group add) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, add); } - - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Nodes.class).child(Node.class).augmentation(FlowCapableNode.class) - .child(Group.class); - } - - @Override - protected GroupListener getDataTreeChangeListener() { - return GroupListener.this; - } } - private class FlowListener extends AsyncClusteredDataTreeChangeListenerBase { + private class FlowListener extends AbstractClusteredAsyncDataTreeChangeListener { FlowListener() { - super(Flow.class, FlowListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(Nodes.class).child(Node.class) + .augmentation(FlowCapableNode.class).child(Table.class).child(Flow.class), + Executors.newSingleThreadExecutor("FlowListener", LOG)); } @Override - protected void remove(InstanceIdentifier identifier, Flow del) { + public void remove(InstanceIdentifier identifier, Flow del) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); notifyTaskIfRequired(dpId, del); } @@ -372,62 +360,43 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - protected void update(InstanceIdentifier identifier, Flow original, Flow update) { + public void update(InstanceIdentifier identifier, Flow original, Flow update) { } @Override - protected void add(InstanceIdentifier identifier, Flow add) { + public void add(InstanceIdentifier identifier, Flow add) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); notifyTaskIfRequired(dpId, add); } - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Nodes.class).child(Node.class).augmentation(FlowCapableNode.class) - .child(Table.class).child(Flow.class); - } - - @Override - protected FlowListener getDataTreeChangeListener() { - return FlowListener.this; - } } - private class FlowConfigListener extends AsyncClusteredDataTreeChangeListenerBase { + private class FlowConfigListener extends AbstractClusteredAsyncDataTreeChangeListener { private final Logger flowLog = LoggerFactory.getLogger(FlowConfigListener.class); FlowConfigListener() { - super(Flow.class, FlowConfigListener.class); + super(dataBroker, LogicalDatastoreType.OPERATIONAL,InstanceIdentifier.create(Nodes.class).child(Node.class) + .augmentation(FlowCapableNode.class).child(Table.class).child(Flow.class), + Executors.newSingleThreadExecutor("FlowConfigListener", LOG)); } @Override - protected void remove(InstanceIdentifier identifier, Flow del) { + public void remove(InstanceIdentifier identifier, Flow del) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); flowLog.trace("FlowId {} deleted from Table {} on DPN {}", del.getId().getValue(), del.getTableId(), dpId); } @Override - protected void update(InstanceIdentifier identifier, Flow original, Flow update) { + public void update(InstanceIdentifier identifier, Flow original, Flow update) { } @Override - protected void add(InstanceIdentifier identifier, Flow add) { + public void add(InstanceIdentifier identifier, Flow add) { Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); flowLog.debug("FlowId {} added to Table {} on DPN {}", add.getId().getValue(), add.getTableId(), dpId); } - - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(Nodes.class).child(Node.class).augmentation(FlowCapableNode.class) - .child(Table.class).child(Flow.class); - } - - @Override - protected FlowConfigListener getDataTreeChangeListener() { - return FlowConfigListener.this; - } } @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", @@ -438,21 +407,18 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public CheckedFuture installFlow(FlowEntity flowEntity) { - return Futures.makeChecked(installFlowInternal(flowEntity), - t -> new TransactionCommitFailedException("installFlow failed", t)); + public FluentFuture installFlow(FlowEntity flowEntity) { + return installFlowInternal(flowEntity); } @Override - public CheckedFuture installFlow(Uint64 dpId, Flow flowEntity) { - return Futures.makeChecked(installFlowInternal(dpId, flowEntity), - t -> new TransactionCommitFailedException("installFlow failed", t)); + public FluentFuture installFlow(Uint64 dpId, Flow flowEntity) { + return installFlowInternal(dpId, flowEntity); } @Override - public CheckedFuture installFlow(Uint64 dpId, FlowEntity flowEntity) { - return Futures.makeChecked(installFlowInternal(dpId, flowEntity.getFlowBuilder().build()), - t -> new TransactionCommitFailedException("installFlow failed", t)); + public FluentFuture installFlow(Uint64 dpId, FlowEntity flowEntity) { + return installFlowInternal(dpId, flowEntity.getFlowBuilder().build()); } @Override @@ -486,15 +452,13 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public CheckedFuture removeFlow(Uint64 dpId, Flow flowEntity) { - return Futures.makeChecked(removeFlowNewInternal(dpId, flowEntity), - t -> new TransactionCommitFailedException("removeFlow failed", t)); + public FluentFuture removeFlow(Uint64 dpId, Flow flowEntity) { + return removeFlowNewInternal(dpId, flowEntity); } @Override - public CheckedFuture removeFlow(FlowEntity flowEntity) { - return Futures.makeChecked(removeFlowInternal(flowEntity), - t -> new TransactionCommitFailedException("removeFlow failed", t)); + public FluentFuture removeFlow(FlowEntity flowEntity) { + return removeFlowInternal(flowEntity); } @Override @@ -640,7 +604,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager InstanceIdentifier groupInstanceId = buildGroupInstanceIdentifier(groupId, nodeDpn); try { return singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, groupInstanceId).isPresent(); - } catch (ReadFailedException e) { + } catch (ExecutionException | InterruptedException e) { LOG.warn("Exception while reading group {} for Node {}", groupId, nodeDpn.key()); } return false; @@ -664,7 +628,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager Optional flowOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, flowInstanceId); return flowOptional.isPresent(); - } catch (ReadFailedException e) { + } catch (ExecutionException | InterruptedException e) { LOG.warn("Exception while reading flow {} for dpn {}", flowKey, dpId); } return false; diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilBatchHandler.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilBatchHandler.java index 85ea481d0..09e294591 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilBatchHandler.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilBatchHandler.java @@ -9,12 +9,12 @@ package org.opendaylight.genius.mdsalutil.internal; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.utils.batching.ResourceHandler; import org.opendaylight.genius.utils.batching.SubTransaction; import org.opendaylight.genius.utils.batching.SubTransactionImpl; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -43,6 +43,13 @@ class MdSalUtilBatchHandler implements ResourceHandler { buildSubTransactions(transactionObjects, identifier, update, SubTransaction.UPDATE); } + @Override + public void updateContainer(WriteTransaction tx, LogicalDatastoreType datastoreType, + InstanceIdentifier identifier, Object original, Object update, + List transactionObjects) { + ///no-op + } + @Override public void create(WriteTransaction tx, LogicalDatastoreType datastoreType, InstanceIdentifier identifier, Object data, List transactionObjects) { diff --git a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/datastoreutils/listeners/tests/DataTreeEventCallbackRegistrarTest.java b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/datastoreutils/listeners/tests/DataTreeEventCallbackRegistrarTest.java index ce0522498..a6d826254 100644 --- a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/datastoreutils/listeners/tests/DataTreeEventCallbackRegistrarTest.java +++ b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/datastoreutils/listeners/tests/DataTreeEventCallbackRegistrarTest.java @@ -20,19 +20,17 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.TOP_FOO_KEY; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.USES_ONE_KEY; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.complexUsesAugment; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.path; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.topLevelList; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; -import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.ListeningScheduledExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.Uninterruptibles; import java.time.Duration; -import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -42,11 +40,6 @@ import java.util.function.Function; import org.junit.Rule; import org.junit.Test; import org.mockito.ArgumentCaptor; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.test.ConstantSchemaAbstractDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar.NextAction; @@ -54,13 +47,14 @@ import org.opendaylight.genius.datastoreutils.listeners.internal.DataTreeEventCa import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; -import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.TwoLevelList; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelList; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,7 +81,7 @@ public class DataTreeEventCallbackRegistrarTest { public DataTreeEventCallbackRegistrarTest() throws Exception { // Argument true to make sure we use the multi-threaded DataTreeChangeListenerExecutor // because otherwise we hit a deadlock :( with this test! - ConstantSchemaAbstractDataBrokerTest dataBrokerTest = new ConstantSchemaAbstractDataBrokerTest(true) { + /*ConstantSchemaAbstractDataBrokerTest dataBrokerTest = new ConstantSchemaAbstractDataBrokerTest(true) { @Override protected Set getModuleInfos() throws Exception { return ImmutableSet.of(BindingReflections.getModuleInfo(TwoLevelList.class), @@ -95,9 +89,15 @@ public class DataTreeEventCallbackRegistrarTest { } }; + dataBrokerTest.setup(); + db = dataBrokerTest.getDataBroker(); + db1 = new SingleTransactionDataBroker(db);*/ + AbstractConcurrentDataBrokerTest dataBrokerTest = + new AbstractConcurrentDataBrokerTest(true) {}; dataBrokerTest.setup(); db = dataBrokerTest.getDataBroker(); db1 = new SingleTransactionDataBroker(db); + } @Test @@ -200,7 +200,7 @@ public class DataTreeEventCallbackRegistrarTest { AtomicBoolean timedOut = new AtomicBoolean(false); dataTreeEventCallbackRegistrar.onAdd(OPERATIONAL, FOO_PATH, topLevelList -> { /* NOOP */ }, Duration.ofMillis(50), iid -> { - if (iid.equals(new DataTreeIdentifier<>(OPERATIONAL, FOO_PATH))) { + if (iid.equals(DataTreeIdentifier.create(OPERATIONAL, FOO_PATH))) { timedOut.set(true); } } diff --git a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/AbstractMockForwardingRulesManager.java b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/AbstractMockForwardingRulesManager.java index b5d5aca62..3e73d36e4 100644 --- a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/AbstractMockForwardingRulesManager.java +++ b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/AbstractMockForwardingRulesManager.java @@ -8,9 +8,8 @@ package org.opendaylight.genius.mdsalutil.internal; import java.util.Collection; - -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.yangtools.yang.binding.DataObject; public abstract class AbstractMockForwardingRulesManager implements DataTreeChangeListener { diff --git a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockFlowForwarder.java b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockFlowForwarder.java index e7686c18e..6f910f21d 100644 --- a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockFlowForwarder.java +++ b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockFlowForwarder.java @@ -14,11 +14,11 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.awaitility.Awaitility; import org.hamcrest.Matchers; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; @@ -41,7 +41,7 @@ public class MockFlowForwarder extends AbstractMockForwardingRulesManager } private void registerListener(final DataBroker db) { - final DataTreeIdentifier treeId = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + final DataTreeIdentifier treeId = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, getWildCardPath()); listenerRegistration = db.registerDataTreeChangeListener(treeId, MockFlowForwarder.this); } diff --git a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockGroupForwarder.java b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockGroupForwarder.java index 2b398b0b0..5f15d644c 100644 --- a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockGroupForwarder.java +++ b/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MockGroupForwarder.java @@ -14,11 +14,11 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import org.awaitility.Awaitility; import org.hamcrest.Matchers; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; @@ -39,7 +39,7 @@ public class MockGroupForwarder extends AbstractMockForwardingRulesManager treeId = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + final DataTreeIdentifier treeId = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, getWildCardPath()); listenerRegistration = db.registerDataTreeChangeListener(treeId, MockGroupForwarder.this); } diff --git a/mdsalutil/mdsalutil-testutils/pom.xml b/mdsalutil/mdsalutil-testutils/pom.xml index 6bec1bfaa..b7a8254b9 100644 --- a/mdsalutil/mdsalutil-testutils/pom.xml +++ b/mdsalutil/mdsalutil-testutils/pom.xml @@ -70,7 +70,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html mockito-core compile - + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + compile + + + org.opendaylight.mdsal + mdsal-binding-dom-adapter + test-jar + compile org.opendaylight.infrautils diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/AbstractTestableJobCoordinatorEventsWaiter.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/AbstractTestableJobCoordinatorEventsWaiter.java index 3a68e811e..83d7376fc 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/AbstractTestableJobCoordinatorEventsWaiter.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/AbstractTestableJobCoordinatorEventsWaiter.java @@ -13,7 +13,6 @@ import static org.hamcrest.Matchers.is; import java.util.function.Supplier; import javax.inject.Inject; - import org.awaitility.Awaitility; import org.awaitility.core.ConditionTimeoutException; import org.opendaylight.infrautils.jobcoordinator.JobCoordinatorMonitor; diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailures.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailures.java index c59f2bece..39c7e4112 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailures.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailures.java @@ -7,12 +7,11 @@ */ package org.opendaylight.genius.datastoreutils.testutils; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresImpl.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresImpl.java index bccf7a745..58561448a 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresImpl.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresImpl.java @@ -7,27 +7,26 @@ */ package org.opendaylight.genius.datastoreutils.testutils; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiFunction; import java.util.function.Supplier; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker; -import org.opendaylight.controller.md.sal.binding.api.ForwardingReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.ForwardingWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.spi.ForwardingDataBroker; +import org.opendaylight.mdsal.binding.spi.ForwardingReadWriteTransaction; +import org.opendaylight.mdsal.binding.spi.ForwardingWriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; @@ -126,8 +125,8 @@ public class DataBrokerFailuresImpl extends ForwardingDataBroker implements Data } } - public CheckedFuture, ReadFailedException> handleRead( - BiFunction, CheckedFuture, ReadFailedException>> + public FluentFuture> handleRead( + BiFunction, FluentFuture>> readMethod, LogicalDatastoreType store, InstanceIdentifier path) { if (howManyFailingReads.decrementAndGet() == -1) { @@ -136,7 +135,7 @@ public class DataBrokerFailuresImpl extends ForwardingDataBroker implements Data if (readException == null) { return readMethod.apply(store, path); } else { - return Futures.immediateFailedCheckedFuture(readException); + return FluentFuture.from(Futures.immediateFailedFuture(readException)); } } @@ -144,7 +143,7 @@ public class DataBrokerFailuresImpl extends ForwardingDataBroker implements Data public ReadWriteTransaction newReadWriteTransaction() { return new ForwardingReadWriteTransaction(delegate.newReadWriteTransaction()) { @Override - public CheckedFuture, ReadFailedException> read( + public FluentFuture> read( LogicalDatastoreType store, InstanceIdentifier path) { return handleRead(super::read, store, path); } diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresModule.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresModule.java index 17cc2001f..13443adb0 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresModule.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DataBrokerFailuresModule.java @@ -7,9 +7,13 @@ */ package org.opendaylight.genius.datastoreutils.testutils; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; import com.google.inject.AbstractModule; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; +import java.util.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; /** * Guice Module which correctly binds the {@link DataBrokerFailures}. @@ -18,14 +22,26 @@ import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; */ public class DataBrokerFailuresModule extends AbstractModule { - private final DataBroker realDataBroker; + private DataBroker realDataBroker; public DataBrokerFailuresModule(DataBroker realDataBroker) { this.realDataBroker = realDataBroker; } - public DataBrokerFailuresModule() { - this(DataBrokerTestModule.dataBroker()); + public DataBrokerFailuresModule() throws Exception { + AbstractBaseDataBrokerTest dataBrokerTest = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + dataBrokerTest.setup(); + this.realDataBroker = dataBrokerTest.getDataBroker(); } @Override diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DecrementingTestableDataTreeChangeDecoratorListener.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DecrementingTestableDataTreeChangeDecoratorListener.java index 71ab91821..8f15aec70 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DecrementingTestableDataTreeChangeDecoratorListener.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/DecrementingTestableDataTreeChangeDecoratorListener.java @@ -8,7 +8,8 @@ package org.opendaylight.genius.datastoreutils.testutils; import java.util.Collection; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; + /** * DataTreeChangeListener which decorates a TestableDataTreeChangeListener diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataBroker.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataBroker.java index 527219c14..cb728b6da 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataBroker.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataBroker.java @@ -13,12 +13,12 @@ import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrExc import java.util.concurrent.ExecutorService; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; 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.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.slf4j.Logger; diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListener.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListener.java index 34abcd9da..a09c25495 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListener.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListener.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.datastoreutils.testutils; import java.util.Collection; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; /** * DataTreeChangeListener useful for testing in asynchronous scenarios. diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListenerModule.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListenerModule.java index 8cc78f10f..51c18b752 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListenerModule.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableDataTreeChangeListenerModule.java @@ -12,9 +12,9 @@ import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.Provides; import com.google.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; import org.opendaylight.genius.datastoreutils.testutils.infra.AutoCloseableModule; -import org.opendaylight.serviceutils.tools.mdsal.listener.ChainableDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.serviceutils.tools.listener.ChainableDataTreeChangeListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableJobCoordinatorCountedEventsWaiter.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableJobCoordinatorCountedEventsWaiter.java index 05ae4e5be..93ce84e16 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableJobCoordinatorCountedEventsWaiter.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/TestableJobCoordinatorCountedEventsWaiter.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.datastoreutils.testutils; import java.util.concurrent.atomic.AtomicLong; import javax.inject.Inject; import javax.inject.Singleton; - import org.awaitility.core.ConditionTimeoutException; import org.opendaylight.infrautils.jobcoordinator.JobCoordinatorMonitor; diff --git a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/WrappingDataBrokerTestWiring.java b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/WrappingDataBrokerTestWiring.java index 02926d22d..fcd9ce2ea 100644 --- a/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/WrappingDataBrokerTestWiring.java +++ b/mdsalutil/mdsalutil-testutils/src/main/java/org/opendaylight/genius/datastoreutils/testutils/WrappingDataBrokerTestWiring.java @@ -10,11 +10,10 @@ package org.opendaylight.genius.datastoreutils.testutils; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import java.util.concurrent.Executors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.AbstractBaseDataBrokerTest; -import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTestCustomizer; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.sal.core.compat.LegacyDOMDataBrokerAdapter; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; /** * Legacy (Controller) DataBroker test wiring which wraps an MD-SAL DataBroker. @@ -34,7 +33,7 @@ public class WrappingDataBrokerTestWiring { @Override public DOMDataBroker createDOMDataBroker() { - return new LegacyDOMDataBrokerAdapter(domDataBroker); + return domDataBroker; } }; } diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/DataBrokerFailuresTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/DataBrokerFailuresTest.java index 49d43260d..e5d23acc6 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/DataBrokerFailuresTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/DataBrokerFailuresTest.java @@ -22,13 +22,13 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailures; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailuresModule; import org.opendaylight.infrautils.inject.guice.testutils.AnnotationsModule; import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; /** * Unit test for DataBrokerFailuresImpl. diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableDataBrokerTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableDataBrokerTest.java index 049894795..f050581c1 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableDataBrokerTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableDataBrokerTest.java @@ -12,8 +12,8 @@ import static org.opendaylight.infrautils.testutils.Asserts.assertThrows; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; import org.opendaylight.genius.datastoreutils.testutils.TestableDataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; import org.opendaylight.yangtools.yang.binding.DataObject; /** diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableJobCoordinatorEventsWaiterTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableJobCoordinatorEventsWaiterTest.java index 51044e0a2..734756233 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableJobCoordinatorEventsWaiterTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/datastoreutils/testutils/tests/TestableJobCoordinatorEventsWaiterTest.java @@ -16,7 +16,6 @@ import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import javax.inject.Inject; - import org.junit.Assert; import org.junit.ClassRule; import org.junit.Rule; diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/DatastoreTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/DatastoreTest.java index c6700bbdd..4a25bb8d2 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/DatastoreTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/DatastoreTest.java @@ -10,9 +10,9 @@ package org.opendaylight.genius.infra.tests; import static com.google.common.truth.Truth.assertThat; import org.junit.Test; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.infrautils.testutils.Asserts; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; public class DatastoreTest { diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/ManagedNewTransactionRunnerImplTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/ManagedNewTransactionRunnerImplTest.java index c3dc64938..0757669af 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/ManagedNewTransactionRunnerImplTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/ManagedNewTransactionRunnerImplTest.java @@ -17,24 +17,28 @@ import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUti import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import static org.opendaylight.infrautils.testutils.Asserts.assertThrows; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; import java.io.IOException; import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; -import org.opendaylight.controller.md.sal.common.api.data.AsyncWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailuresImpl; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugmentBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.complex.from.grouping.ContainerWithUsesBuilder; @@ -63,8 +67,20 @@ public class ManagedNewTransactionRunnerImplTest { } @Before - public void beforeTest() { - testableDataBroker = new DataBrokerFailuresImpl(new DataBrokerTestModule(true).getDataBroker()); + public void beforeTest() throws Exception { + AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + testableDataBroker = new DataBrokerFailuresImpl(test.getDataBroker()); managedNewTransactionRunner = createManagedNewTransactionRunnerToTest(testableDataBroker); singleTransactionDataBroker = new SingleTransactionDataBroker(testableDataBroker); } @@ -172,7 +188,7 @@ public class ManagedNewTransactionRunnerImplTest { public void testCallWithNewWriteOnlyTransactionAndSubmitPutButLaterException() throws Exception { assertTrue(assertThrows(ExecutionException.class, () -> { - managedNewTransactionRunner.callWithNewWriteOnlyTransactionAndSubmit(writeTx -> { + managedNewTransactionRunner.callWithNewReadWriteTransactionAndSubmit(writeTx -> { writeTx.put(LogicalDatastoreType.OPERATIONAL, TEST_PATH, newTestDataObject()); // We now throw an arbitrary kind of checked (not unchecked!) exception here throw new IOException("something didn't quite go as expected..."); @@ -180,7 +196,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof IOException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -195,7 +211,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof IOException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -210,7 +226,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof IOException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -225,7 +241,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof IOException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -241,7 +257,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof IOException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -254,7 +270,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof TransactionCommitFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -267,7 +283,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof TransactionCommitFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -280,7 +296,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof TransactionCommitFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -293,7 +309,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof TransactionCommitFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -309,7 +325,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof TransactionCommitFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -322,7 +338,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof OptimisticLockFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -335,7 +351,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof OptimisticLockFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -348,7 +364,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof OptimisticLockFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -361,7 +377,7 @@ public class ManagedNewTransactionRunnerImplTest { fail("This should have led to an ExecutionException!"); }).getCause() instanceof OptimisticLockFailedException); assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test @@ -378,34 +394,34 @@ public class ManagedNewTransactionRunnerImplTest { assertThat(e.getCause() instanceof OptimisticLockFailedException).isTrue(); } assertThat( - singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)).isAbsent(); + singleTransactionDataBroker.syncReadOptional(LogicalDatastoreType.OPERATIONAL, TEST_PATH)); } @Test public void testCallWithNewWriteOnlyTransactionAndSubmitCannotCommit() { assertThrows(ExecutionException.class, () -> managedNewTransactionRunner.callWithNewWriteOnlyTransactionAndSubmit( - AsyncWriteTransaction::commit).get()); + WriteTransaction::commit).get()); } @Test public void testCallWithNewReadWriteTransactionAndSubmitCannotCommit() { assertThrows(ExecutionException.class, () -> managedNewTransactionRunner.callWithNewReadWriteTransactionAndSubmit( - AsyncWriteTransaction::commit).get()); + WriteTransaction::commit).get()); } @Test public void testCallWithNewWriteOnlyTransactionAndSubmitCannotCancel() { assertThrows(ExecutionException.class, () -> managedNewTransactionRunner.callWithNewWriteOnlyTransactionAndSubmit( - AsyncWriteTransaction::cancel).get()); + WriteTransaction::cancel).get()); } @Test public void testCallWithNewReadWriteTransactionAndSubmitCannotCancel() { assertThrows(ExecutionException.class, () -> managedNewTransactionRunner.callWithNewReadWriteTransactionAndSubmit( - AsyncWriteTransaction::cancel).get()); + WriteTransaction::cancel).get()); } } diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/RetryingManagedNewTransactionRunnerTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/RetryingManagedNewTransactionRunnerTest.java index 025433e96..1db3d1cca 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/RetryingManagedNewTransactionRunnerTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/RetryingManagedNewTransactionRunnerTest.java @@ -8,16 +8,16 @@ package org.opendaylight.genius.infra.tests; import static org.junit.Assert.assertEquals; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelList; /** diff --git a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/TransactionAdapterTest.java b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/TransactionAdapterTest.java index 537b8430d..4ccf892e0 100644 --- a/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/TransactionAdapterTest.java +++ b/mdsalutil/mdsalutil-testutils/src/test/java/org/opendaylight/genius/infra/tests/TransactionAdapterTest.java @@ -5,26 +5,24 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.genius.infra.tests; +/* org.opendaylight.genius.infra.tests; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; -import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.TOP_FOO_KEY; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.path; import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.topLevelList; import static org.opendaylight.infrautils.testutils.Asserts.assertThrows; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION; +import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL; import java.util.concurrent.ExecutionException; import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailuresImpl; import org.opendaylight.genius.infra.Datastore; @@ -33,6 +31,8 @@ import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl; import org.opendaylight.genius.infra.TransactionAdapter; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugmentBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.complex.from.grouping.ContainerWithUsesBuilder; @@ -43,7 +43,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * Test for {@link TransactionAdapter}. */ // This is a test for a deprecated class -@SuppressWarnings("deprecation") +/*@SuppressWarnings("deprecation") public class TransactionAdapterTest { private static final InstanceIdentifier TEST_PATH = path(TOP_FOO_KEY); @@ -142,4 +142,4 @@ public class TransactionAdapterTest { return topLevelList(TOP_FOO_KEY, fooAugment); } -} +}*/ diff --git a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/RDUtils.java b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/RDUtils.java index e6909e74f..4849dfbbf 100644 --- a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/RDUtils.java +++ b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/RDUtils.java @@ -8,10 +8,9 @@ package org.opendaylight.genius.networkutils; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.ExecutionException; - -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool; @@ -21,5 +20,5 @@ public interface RDUtils { void releaseRD(String rdKey) throws ExecutionException, InterruptedException; - Optional getRDPool() throws ReadFailedException; + Optional getRDPool() throws ReadFailedException, ExecutionException, InterruptedException; } \ No newline at end of file diff --git a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/VniUtils.java b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/VniUtils.java index 307207c70..67e193258 100644 --- a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/VniUtils.java +++ b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/VniUtils.java @@ -7,10 +7,10 @@ */ package org.opendaylight.genius.networkutils; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.ExecutionException; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool; import org.opendaylight.yangtools.yang.common.Uint64; @@ -20,5 +20,5 @@ public interface VniUtils { void releaseVNI(String vniKey) throws ExecutionException, InterruptedException; - Optional getVxlanVniPool() throws ReadFailedException; + Optional getVxlanVniPool() throws ReadFailedException, ExecutionException, InterruptedException; } \ No newline at end of file diff --git a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/RDUtilsImpl.java b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/RDUtilsImpl.java index 3554e4130..3ca2f912d 100644 --- a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/RDUtilsImpl.java +++ b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/RDUtilsImpl.java @@ -8,19 +8,18 @@ package org.opendaylight.genius.networkutils.impl; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.apache.aries.blueprint.annotation.service.Service; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.networkutils.RDUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput; @@ -56,7 +55,7 @@ public class RDUtilsImpl implements RDUtils { @Inject public RDUtilsImpl(NetworkConfig networkConfig, IdManagerService idManagerService, - @Reference DataBroker dataBroker) throws ReadFailedException { + @Reference DataBroker dataBroker) throws InterruptedException, ExecutionException { this.idManagerService = idManagerService; this.dataBroker = dataBroker; this.networkConfig = networkConfig; @@ -110,12 +109,12 @@ public class RDUtilsImpl implements RDUtils { } @Override - public Optional getRDPool() throws ReadFailedException { + public Optional getRDPool() throws ExecutionException, InterruptedException { return SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, buildIdPoolInstanceIdentifier(NwConstants.ODL_RD_POOL_NAME)); } - private void validateAndCreateRDPool() throws ReadFailedException { + private void validateAndCreateRDPool() throws InterruptedException, ExecutionException { long lowLimit = 0L; Uint32 highConfig = networkConfig.getOpendaylightRdCount(); long highLimit = highConfig == null ? 0 : highConfig.toJava(); diff --git a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/VniUtilsImpl.java b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/VniUtilsImpl.java index e460d85a8..eaa03681e 100644 --- a/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/VniUtilsImpl.java +++ b/networkutils/networkutils/src/main/java/org/opendaylight/genius/networkutils/impl/VniUtilsImpl.java @@ -8,19 +8,18 @@ package org.opendaylight.genius.networkutils.impl; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import javax.inject.Singleton; import org.apache.aries.blueprint.annotation.service.Reference; import org.apache.aries.blueprint.annotation.service.Service; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.networkutils.VniUtils; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput; @@ -56,7 +55,7 @@ public class VniUtilsImpl implements VniUtils { @Inject public VniUtilsImpl(NetworkConfig networkConfig, IdManagerService idManagerService, - @Reference DataBroker dataBroker) throws ReadFailedException { + @Reference DataBroker dataBroker) throws InterruptedException, ExecutionException { this.idManagerService = idManagerService; this.dataBroker = dataBroker; this.networkConfig = networkConfig; @@ -85,12 +84,12 @@ public class VniUtilsImpl implements VniUtils { } @Override - public Optional getVxlanVniPool() throws ReadFailedException { + public Optional getVxlanVniPool() throws ExecutionException, InterruptedException { return SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, buildIdPoolInstanceIdentifier(NwConstants.ODL_VNI_POOL_NAME)); } - private void validateAndCreateVxlanVniPool() throws ReadFailedException { + private void validateAndCreateVxlanVniPool() throws InterruptedException, ExecutionException { /* * 1. If VNI Pool doesn't exist create it. * 2. If VNI Pool exists, but the range value is changed incorrectly diff --git a/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTest.java b/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTest.java index a43513afa..b68126a55 100644 --- a/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTest.java +++ b/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTest.java @@ -14,8 +14,6 @@ import javax.inject.Inject; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; -import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule; import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.networkutils.RDUtils; @@ -23,6 +21,8 @@ import org.opendaylight.genius.networkutils.VniUtils; import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule; import org.opendaylight.infrautils.testutils.LogCaptureRule; import org.opendaylight.infrautils.testutils.LogRule; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +44,7 @@ public class NetworkUtilTest extends AbstractConcurrentDataBrokerTest { private @Inject RDUtils rdUtils; @Test - public void testDefaultVniPoolCreated() throws ReadFailedException { + public void testDefaultVniPoolCreated() throws ReadFailedException , InterruptedException, ExecutionException { IdPool idPool = vniUtils.getVxlanVniPool().get(); assertThat(idPool.getPoolName()).isEqualTo(NwConstants.ODL_VNI_POOL_NAME); } @@ -55,7 +55,7 @@ public class NetworkUtilTest extends AbstractConcurrentDataBrokerTest { } @Test - public void testDefaultRDPoolCreated() throws ReadFailedException { + public void testDefaultRDPoolCreated() throws ReadFailedException, ExecutionException, InterruptedException { IdPool idPool = rdUtils.getRDPool().get(); assertThat(idPool.getPoolName()).isEqualTo(NwConstants.ODL_RD_POOL_NAME); } diff --git a/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTestModule.java b/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTestModule.java index 8053961a1..47de56a24 100644 --- a/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTestModule.java +++ b/networkutils/networkutils/src/test/java/org/opendaylight/genius/networkutils/test/NetworkUtilTestModule.java @@ -9,8 +9,9 @@ package org.opendaylight.genius.networkutils.test; import static org.mockito.Mockito.mock; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.concurrent.Executors; import org.opendaylight.daexim.DataImportBootReady; import org.opendaylight.genius.idmanager.IdManager; import org.opendaylight.genius.lockmanager.impl.LockManagerServiceImpl; @@ -19,6 +20,9 @@ import org.opendaylight.genius.networkutils.VniUtils; import org.opendaylight.genius.networkutils.impl.RDUtilsImpl; import org.opendaylight.genius.networkutils.impl.VniUtilsImpl; import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.networkutils.config.rev181129.NetworkConfig; @@ -26,9 +30,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.networkutils.config. public class NetworkUtilTestModule extends AbstractGuiceJsr250Module { @Override - protected void configureBindings() { - DataBrokerTestModule dataBrokerTestModule = new DataBrokerTestModule(false); - DataBroker dataBroker = dataBrokerTestModule.getDataBroker(); + protected void configureBindings() throws Exception { + AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() { + @Override + protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() { + return new AbstractDataBrokerTestCustomizer() { + @Override + public ListeningExecutorService getCommitCoordinatorExecutor() { + return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); + } + }; + } + }; + test.setup(); + DataBroker dataBroker = test.getDataBroker(); bind(DataBroker.class).toInstance(dataBroker); bind(NetworkConfig.class).toInstance(mock(NetworkConfig.class)); bind(IdManagerService.class).to(IdManager.class); -- 2.36.6