From 868ec032398b8ba71fe1643c7a91f8e3c881ea0f Mon Sep 17 00:00:00 2001 From: xcheara Date: Sun, 6 Oct 2019 10:39:23 +0530 Subject: [PATCH] Bump version odlparent->6.0.0,mdsal->5.0.3 This adopts new version of MRI projects and adjusts for the changes therein. Most notably DPs/DPNs are identified by Uint64, not BigInteger. Some drive-by cleanups are performed, mostly to eliminate valid Eclipse complaints. Change-Id: Ib73c963d515f55f0865775584de3632e3731820c Signed-off-by: xcheara Signed-off-by: Robert Varga --- .../internal/AlivenessProtocolHandlerARP.java | 6 +- .../AlivenessProtocolHandlerIPv6ND.java | 8 +- .../AlivenessProtocolHandlerLLDP.java | 6 +- .../protocols/test/AlivenessMonitorTest.java | 5 +- .../internal/AlivenessMonitor.java | 143 ++++++------- .../internal/HwVtepTunnelsStateHandler.java | 13 +- .../utils/AlivenessMonitorUtil.java | 7 +- alivenessmonitor/pom.xml | 2 +- .../genius/arputil/internal/ArpUtilImpl.java | 41 ++-- arputil/pom.xml | 2 +- artifacts/pom.xml | 2 +- cloudscaler/api/pom.xml | 1 - .../api/TombstonedNodeManager.java | 9 +- cloudscaler/impl/pom.xml | 4 - .../rpcservice/CloudscalerRpcServiceImpl.java | 17 +- .../rpcservice/ComputeNodeManager.java | 27 ++- .../rpcservice/TombstonedNodeManagerImpl.java | 16 +- .../tests/CloudScalerServiceTest.java | 22 +- cloudscaler/pom.xml | 2 +- commons/binding-parent/pom.xml | 2 +- commons/checkstyle/pom.xml | 2 +- commons/pom.xml | 2 +- commons/quality-parent/pom.xml | 4 +- .../testutils/TestInterfaceManager.java | 6 +- .../InterfaceStateHelper.java | 8 +- .../genius/testutils/itm/ItmRpcTestImpl.java | 20 +- fcapsapplication/pom.xml | 2 +- .../AlarmNotificationListeners.java | 3 + .../fcapsmanager/countermanager/Poller.java | 3 + fcapsmanager/pom.xml | 2 +- features/genius-features/pom.xml | 2 +- features/odl-genius-api/pom.xml | 4 +- .../src/main/feature/feature.xml | 2 +- features/odl-genius-fcaps-application/pom.xml | 2 +- features/odl-genius-fcaps-framework/pom.xml | 2 +- features/odl-genius-rest/pom.xml | 2 +- features/odl-genius/pom.xml | 2 +- features/pom.xml | 2 +- .../genius/idmanager/IdManager.java | 97 +++++---- .../genius/idmanager/IdUtils.java | 17 +- .../idmanager/jobs/UpdateIdEntryJob.java | 8 +- .../ExpectedAllocateIdFromReleasedId.xtend | 5 +- ...teIdMultipleRequestsFromAvailableIds.xtend | 9 +- ...cateIdMultipleRequestsFromReleaseIds.xtend | 9 +- .../test/ExpectedAllocateIdObjects.xtend | 5 +- .../genius/idmanager/test/IdManagerTest.java | 2 +- idmanager/pom.xml | 2 +- .../globals/IfmConstants.java | 7 +- .../globals/InterfaceInfo.java | 17 +- .../globals/InterfaceServiceUtil.java | 21 +- .../globals/LogicalGroupInterfaceInfo.java | 4 +- .../globals/VlanInterfaceInfo.java | 8 +- .../interfaces/IInterfaceManager.java | 20 +- .../genius/interfacemanager/IfmConstants.java | 13 +- .../genius/interfacemanager/IfmUtil.java | 54 ++--- .../InterfacemgrProvider.java | 34 +-- .../commons/AlivenessMonitorUtils.java | 44 ++-- .../commons/InterfaceManagerCommonUtils.java | 28 +-- .../commons/InterfaceMetaUtils.java | 41 ++-- .../AlivenessMonitorListenerImpl.java | 4 +- .../InterfaceInventoryStateListener.java | 35 ++-- .../InterfaceTopologyStateListener.java | 8 +- .../pmcounters/NodeConnectorStatsImpl.java | 21 +- .../OvsInterfaceConfigAddHelper.java | 11 +- .../OvsInterfaceConfigRemoveHelper.java | 17 +- .../OvsVlanMemberConfigRemoveHelper.java | 5 +- .../OvsInterfaceStateAddHelper.java | 11 +- ...OvsInterfaceTopologyStateUpdateHelper.java | 7 +- .../ovs/utilities/SouthboundUtils.java | 13 +- .../InterfaceManagerServiceImpl.java | 16 +- ...owBasedEgressServicesConfigBindHelper.java | 23 ++- ...BasedEgressServicesConfigUnbindHelper.java | 23 +-- ...wBasedIngressServicesConfigBindHelper.java | 44 ++-- ...asedIngressServicesConfigUnbindHelper.java | 37 ++-- .../FlowBasedServicesConfigListener.java | 4 +- .../FlowBasedServicesNodeStateListener.java | 14 +- .../FlowBasedServicesStateAddable.java | 4 +- .../FlowBasedServicesStateRemovable.java | 4 +- ...tractFlowBasedServicesStateBindHelper.java | 4 +- ...lowBasedEgressServicesStateBindHelper.java | 19 +- ...owBasedIngressServicesStateBindHelper.java | 24 ++- .../utilities/FlowBasedServicesUtils.java | 112 +++++----- .../interfacemanager/test/IfmUtilTest.java | 7 +- .../InterfaceManagerConfigurationTest.java | 9 +- .../test/InterfaceManagerTestUtil.java | 24 +-- .../test/xtend/ExpectedInterfaceInfo.xtend | 5 +- ...ce.xtend => PortFromInterfaceOutput.xtend} | 3 +- .../interfacemanager/shell/IfmCLIUtil.java | 6 +- .../interfacemanager/shell/ShowOvsPorts.java | 6 +- interfacemanager/pom.xml | 2 +- .../genius/ipv6util/api/Ipv6Util.java | 7 +- .../ipv6util/api/decoders/Ipv6NaDecoder.java | 4 +- .../ipv6util/nd/Ipv6NdUtilServiceImpl.java | 10 +- .../genius/ipv6util/nd/Ipv6NsHelper.java | 10 +- .../genius/ipv6util/nd/Ipv6NsHelperTest.java | 12 +- ipv6util/pom.xml | 2 +- .../genius/itm/api/IITMProvider.java | 6 +- .../genius/itm/globals/ITMConstants.java | 7 +- .../genius/itm/utils/DpnTepInterfaceInfo.java | 4 +- .../genius/itm/cache/DPNTEPsInfoCache.java | 12 +- .../genius/itm/cache/DpnTepStateCache.java | 24 ++- .../genius/itm/cache/OfEndPointCache.java | 14 +- .../genius/itm/cache/OvsBridgeEntryCache.java | 4 +- .../itm/cache/OvsBridgeRefEntryCache.java | 4 +- .../genius/itm/cli/ItmCliUtils.java | 1 + .../opendaylight/genius/itm/cli/TepAdd.java | 3 +- .../genius/itm/cli/TepCommandHelper.java | 25 ++- .../genius/itm/cli/TepDelete.java | 4 +- .../genius/itm/cli/TepShowBridges.java | 13 +- .../ItmExternalTunnelAddWorker.java | 18 +- .../ItmExternalTunnelDeleteWorker.java | 17 +- .../ItmInternalTunnelAddWorker.java | 59 +++--- .../ItmInternalTunnelDeleteWorker.java | 30 +-- .../itm/confighelpers/ItmMonitorWorker.java | 7 +- .../ItmTepsNotHostedMoveWorker.java | 4 +- .../ItmTepsNotHostedRemoveWorker.java | 6 +- .../ItmTunnelAggregationHelper.java | 26 ++- .../OvsdbTepAddConfigHelper.java | 22 +- .../OvsdbTepRemoveConfigHelper.java | 23 +-- .../genius/itm/impl/ItmProvider.java | 17 +- .../genius/itm/impl/ItmUtils.java | 56 ++--- .../itm/impl/TunnelMonitoringConfig.java | 2 +- .../TerminationPointStateListener.java | 3 + .../TunnelInventoryStateListener.java | 32 +-- .../TunnelTopologyStateListener.java | 30 +-- .../ovs/utilities/DirectTunnelUtils.java | 35 ++-- .../workers/TunnelStateAddWorker.java | 7 +- .../itm/listeners/OvsdbNodeListener.java | 9 +- .../itm/listeners/TransportZoneListener.java | 25 +-- .../TunnelMonitorIntervalListener.java | 6 +- .../monitoring/ItmTunnelEventListener.java | 47 +++-- .../impl/ItmTepInstanceRecoveryHandler.java | 4 +- .../impl/ItmTzInstanceRecoveryHandler.java | 4 +- .../genius/itm/rpc/ItmManagerRpcService.java | 71 ++++--- .../genius/itm/cli/TepCommandHelperTest.java | 22 +- .../itm/impl/ItmExternalTunnelAddTest.java | 10 +- .../itm/impl/ItmExternalTunnelDeleteTest.java | 7 +- .../itm/impl/ItmInternalTunnelAddTest.java | 7 +- .../itm/impl/ItmInternalTunnelDeleteTest.java | 11 +- .../itm/impl/ItmManagerRpcServiceTest.java | 8 +- .../itm/tests/ItmManagerRpcServiceTest.java | 5 +- .../itm/tests/ItmTepAutoConfigTest.java | 6 +- .../itm/tests/ItmTepAutoConfigTestUtil.java | 4 +- .../genius/itm/tests/ItmTestConstants.java | 12 +- .../ExpectedDefTransportZoneObjects.xtend | 2 - .../xtend/ExpectedTransportZoneObjects.xtend | 3 - itm/pom.xml | 2 +- karaf/pom.xml | 2 +- .../impl/LockManagerServiceImpl.java | 3 +- lockmanager/pom.xml | 2 +- mdsalutil/mdsalutil-api/pom.xml | 5 + .../mdsalutil/AbstractSwitchEntity.java | 4 +- .../genius/mdsalutil/FlowEntity.java | 7 +- .../genius/mdsalutil/FlowInfoKey.java | 8 +- .../genius/mdsalutil/GroupInfoKey.java | 8 +- .../genius/mdsalutil/MDSALUtil.java | 75 +++---- .../genius/mdsalutil/MetaDataUtil.java | 194 ++++++++++-------- .../opendaylight/genius/mdsalutil/NWUtil.java | 14 +- .../genius/mdsalutil/NwConstants.java | 47 ++--- .../genius/mdsalutil/actions/ActionLearn.java | 10 +- .../mdsalutil/actions/ActionLoadIpToSpa.java | 7 +- .../mdsalutil/actions/ActionLoadMacToSha.java | 7 +- .../mdsalutil/actions/ActionNxLoadInPort.java | 13 +- .../actions/ActionNxLoadMetadata.java | 10 +- .../mdsalutil/actions/ActionRegLoad.java | 4 +- .../mdsalutil/actions/ActionSetArpOp.java | 4 +- .../mdsalutil/actions/ActionSetFieldMeta.java | 12 +- .../actions/ActionSetFieldTunnelId.java | 20 +- .../actions/ActionSetTunnelDestinationIp.java | 37 ++-- .../actions/ActionSetTunnelSourceIp.java | 36 ++-- .../InstructionWriteMetadata.java | 14 +- .../interfaces/IMdsalApiManager.java | 36 ++-- .../genius/mdsalutil/matches/MatchInPort.java | 8 +- .../mdsalutil/matches/MatchMetadata.java | 14 +- .../mdsalutil/matches/MatchTunnelId.java | 14 +- .../batching/ResourceBatchingManager.java | 3 + .../mdsalutil/actions/ActionGroupTest.java | 2 +- .../mdsalutil/actions/ActionLearnTest.java | 4 +- .../actions/ActionLoadIpToSpaTest.java | 5 +- .../actions/ActionLoadMacToShaTest.java | 5 +- .../actions/ActionNxLoadInPortTest.java | 9 +- .../actions/ActionNxLoadMetadataTest.java | 19 +- .../mdsalutil/actions/ActionRegLoadTest.java | 5 +- .../mdsalutil/actions/ActionRegMoveTest.java | 5 +- .../InstructionWriteMetadataTest.java | 15 +- .../testutils/TestIMdsalApiManager.java | 52 ++--- .../tests/TestIMdsalApiManagerTest.java | 14 +- .../mdsalutil/matches/MatchInPortTest.java | 6 +- .../tests/ActionInfoBuilderTest.java | 14 +- .../tests/ActionInfoImmutableTest.java | 10 +- .../tests/FlowEntityAssertBeansTest.java | 12 +- .../tests/UintXtendBeanGenerator.java | 31 +++ .../internal => }/MdSalUtilTest.java | 11 +- .../mdsalutil/internal/MDSALManager.java | 106 +++++----- .../testutils/DataBrokerFailuresImpl.java | 3 + mdsalutil/pom.xml | 2 +- networkutils/networkutils/pom.xml | 10 + .../genius/networkutils/VniUtils.java | 6 +- .../genius/networkutils/impl/RDUtilsImpl.java | 16 +- .../networkutils/impl/VniUtilsImpl.java | 18 +- networkutils/pom.xml | 2 +- pom.xml | 2 +- 202 files changed, 1682 insertions(+), 1517 deletions(-) rename interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/{ExpectedPortFromInterface.xtend => PortFromInterfaceOutput.xtend} (91%) create mode 100644 mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/UintXtendBeanGenerator.java rename mdsalutil/mdsalutil-impl/{src/test/java/org/opendaylight/genius/mdsalutil/internal => }/MdSalUtilTest.java (96%) 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 425460421..708f251c7 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 @@ -17,7 +17,6 @@ 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.math.BigInteger; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; @@ -49,6 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,7 +79,7 @@ public class AlivenessProtocolHandlerARP extends AbstractAlivenessProtocolHandle @Override @SuppressFBWarnings("NP_NONNULL_RETURN_VIOLATION") public String handlePacketIn(ARP packet, PacketReceived packetReceived) { - short tableId = packetReceived.getTableId().getValue(); + short tableId = packetReceived.getTableId().getValue().toJava(); int arpType = packet.getOpCode(); if (LOG.isTraceEnabled()) { @@ -91,7 +91,7 @@ public class AlivenessProtocolHandlerARP extends AbstractAlivenessProtocolHandle LOG.trace("packet: {}", packetReceived); } - BigInteger metadata = packetReceived.getMatch().getMetadata().getMetadata(); + Uint64 metadata = packetReceived.getMatch().getMetadata().getMetadata(); int portTag = MetaDataUtil.getLportFromMetadata(metadata).intValue(); String interfaceName = null; diff --git a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerIPv6ND.java b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerIPv6ND.java index e9779b68f..aab1e604a 100644 --- a/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerIPv6ND.java +++ b/alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerIPv6ND.java @@ -5,7 +5,6 @@ * 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.alivenessmonitor.protocols.internal; import static org.opendaylight.genius.alivenessmonitor.protocols.AlivenessMonitorAndProtocolsConstants.SEPERATOR; @@ -16,7 +15,6 @@ 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.math.BigInteger; import java.net.UnknownHostException; import java.util.Collections; import java.util.List; @@ -53,6 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.ipv6.nd.util.rev1702 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.ipv6.nd.util.rev170210.interfaces.InterfaceAddressBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,10 +98,10 @@ public class AlivenessProtocolHandlerIPv6ND extends AbstractAlivenessProtocolHan LOG.warn("Failed to decode IPv6 NA packet={}", data, e); return null; } - short tableId = packetReceived.getTableId().getValue(); + short tableId = packetReceived.getTableId().getValue().toJava(); LOG.trace("packet: {}, tableId {}, ipv6Type {}", packetReceived, tableId, naPacket.getIcmp6Type()); - BigInteger metadata = packetReceived.getMatch().getMetadata().getMetadata(); + Uint64 metadata = packetReceived.getMatch().getMetadata().getMetadata(); int portTag = MetaDataUtil.getLportFromMetadata(metadata).intValue(); String interfaceName = null; @@ -131,7 +130,6 @@ public class AlivenessProtocolHandlerIPv6ND extends AbstractAlivenessProtocolHan return null; } - @SuppressWarnings("deprecation") @Override public void startMonitoringTask(MonitoringInfo monitorInfo) { EndpointType source = monitorInfo.getSource().getEndpointType(); 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 f354153c1..5b3992a87 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 @@ -12,7 +12,6 @@ import static org.opendaylight.infrautils.utils.concurrent.LoggingFutures.addErr import com.google.common.base.Optional; import com.google.common.base.Strings; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.math.BigInteger; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -49,6 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeCon import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -159,7 +159,7 @@ public class AlivenessProtocolHandlerLLDP extends AbstractAlivenessProtocolHandl return; } TransmitPacketInput transmitPacketInput = MDSALUtil.getPacketOut(actions, ethenetLLDPPacket.serialize(), - nodeId, MDSALUtil.getNodeConnRef(BigInteger.valueOf(nodeId), "0xfffffffd")); + nodeId, MDSALUtil.getNodeConnRef(Uint64.valueOf(nodeId), "0xfffffffd")); addErrorLogging(packetProcessingService.transmitPacket(transmitPacketInput), LOG, "transmitPacket() failed: {}", transmitPacketInput); } catch (InterruptedException | ExecutionException | PacketException e) { @@ -197,7 +197,7 @@ public class AlivenessProtocolHandlerLLDP extends AbstractAlivenessProtocolHandl List actionInfos = new ArrayList<>(); // Set the LLDP service Id which is 0 if (Tunnel.class.equals(intfType)) { - actionInfos.add(new ActionSetFieldTunnelId(BigInteger.ZERO)); + actionInfos.add(new ActionSetFieldTunnelId(Uint64.ZERO)); } actionInfos.add(new ActionOutput(new Uri(Long.toString(portNum)))); return actionInfos; 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 e34ddc358..8d7e75ec3 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 @@ -105,6 +105,7 @@ import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint32; public class AlivenessMonitorTest { @@ -410,7 +411,7 @@ public class AlivenessMonitorTest { doReturn(CommitInfo.emptyFluentFuture()).when(readWriteTx).commit(); RpcResult output = alivenessMonitor .monitorProfileCreate(input).get(); - return output.getResult().getProfileId(); + return output.getResult().getProfileId().toJava(); } private MonitorProfile getTestMonitorProfile() { @@ -422,7 +423,7 @@ public class AlivenessMonitorTest { private InterfaceMonitorEntry getInterfaceMonitorEntry() { return new InterfaceMonitorEntryBuilder() .setInterfaceName("test-interface") - .setMonitorIds(Arrays.asList(1L, 2L)).build(); + .setMonitorIds(Arrays.asList(Uint32.valueOf(1L), Uint32.valueOf(2L))).build(); } private Interface getInterface(String ipAddress) { 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 bd35f44ba..908985acc 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 @@ -26,6 +26,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -122,6 +123,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -175,10 +177,10 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene private final IdManagerService idManager; private final NotificationPublishService notificationPublishService; private final AlivenessProtocolHandlerRegistry alivenessProtocolHandlerRegistry; - private final ConcurrentMap> monitoringTasks = new ConcurrentHashMap<>(); + private final ConcurrentMap> monitoringTasks = new ConcurrentHashMap<>(); private final ScheduledExecutorService monitorService; private final ExecutorService callbackExecutorService; - private final LoadingCache monitorIdKeyCache; + private final LoadingCache monitorIdKeyCache; private final ConcurrentMap lockMap = new ConcurrentHashMap<>(); @Inject @@ -197,13 +199,14 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene callbackExecutorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE, "Aliveness Callback Handler", LOG); createIdPool(); - monitorIdKeyCache = CacheBuilder.newBuilder().build(new CacheLoader() { + monitorIdKeyCache = CacheBuilder.newBuilder().build(new CacheLoader() { @Override - public String load(@NonNull Long monitorId) { + public String load(Uint32 monitorId) { try { return txRunner.> applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, - tx -> tx.read(getMonitorMapId(monitorId)).get()).map(MonitoridKeyEntry::getMonitorKey) + tx -> tx.read(getMonitorMapId(monitorId)).get()) + .map(MonitoridKeyEntry::getMonitorKey) .orElse(null); } catch (InterruptedException | ExecutionException e) { LOG.error("Error reading monitor {}", monitorId, e); @@ -450,7 +453,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene public ListenableFuture> monitorStart(MonitorStartInput input) { RpcResultBuilder rpcResultBuilder; final Config in = input.getConfig(); - Long profileId = in.getProfileId(); + Uint32 profileId = in.getProfileId(); LOG.debug("Monitor Start invoked with Config: {}, Profile Id: {}", in, profileId); try { @@ -465,7 +468,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene tx -> tx.read(getMonitorProfileId(profileId)).get()); final MonitorProfile profile; if (!optProfile.isPresent()) { - String errMsg = String.format("No monitoring profile associated with Id: %d", profileId); + String errMsg = "No monitoring profile associated with Id: " + profileId; LOG.error("Monitor start failed. {}", errMsg); throw new RuntimeException(errMsg); } else { @@ -497,7 +500,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene destEndpointType = in.getDestination().getEndpointType(); } String idKey = getUniqueKey(interfaceName, protocolType.toString(), srcEndpointType, destEndpointType); - final long monitorId = getUniqueId(idKey); + final Uint32 monitorId = Uint32.valueOf(getUniqueId(idKey)); Optional optKey = txRunner.> applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, @@ -576,7 +579,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return Futures.immediateFuture(rpcResultBuilder.build()); } - private void associateMonitorIdWithInterface(final Long monitorId, final String interfaceName) { + private void associateMonitorIdWithInterface(final Uint32 monitorId, final String interfaceName) { LOG.debug("associate monitor Id {} with interface {}", monitorId, interfaceName); final ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); FluentFuture> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, @@ -584,7 +587,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene FluentFuture updateFuture = readFuture.transformAsync(optEntry -> { if (optEntry.isPresent()) { InterfaceMonitorEntry entry = optEntry.get(); - List monitorIds1 = + List monitorIds1 = entry.getMonitorIds() != null ? new ArrayList<>(entry.getMonitorIds()) : new ArrayList<>(); monitorIds1.add(monitorId); InterfaceMonitorEntry newEntry1 = new InterfaceMonitorEntryBuilder() @@ -594,7 +597,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene // Create new monitor entry LOG.debug("Adding new interface-monitor association for interface {} with id {}", interfaceName, monitorId); - List monitorIds2 = new ArrayList<>(); + List monitorIds2 = new ArrayList<>(); monitorIds2.add(monitorId); InterfaceMonitorEntry newEntry2 = new InterfaceMonitorEntryBuilder() .setInterfaceName(interfaceName).setMonitorIds(monitorIds2).build(); @@ -605,14 +608,16 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene }, callbackExecutorService); Futures.addCallback(updateFuture, new FutureCallbackImpl( - String.format("Association of monitorId %d with Interface %s", monitorId, interfaceName)), + "Association of monitorId " + monitorId + " with Interface " + interfaceName), MoreExecutors.directExecutor()); } - private void scheduleMonitoringTask(MonitoringInfo monitoringInfo, long monitorInterval) { + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") + private void scheduleMonitoringTask(MonitoringInfo monitoringInfo, Uint32 monitorInterval) { AlivenessMonitorTask monitorTask = new AlivenessMonitorTask(monitoringInfo); ScheduledFuture scheduledFutureResult = monitorService.scheduleAtFixedRate(monitorTask, NO_DELAY, - monitorInterval, TimeUnit.MILLISECONDS); + monitorInterval.toJava(), TimeUnit.MILLISECONDS); monitoringTasks.put(monitoringInfo.getId(), scheduledFutureResult); } @@ -620,7 +625,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene public ListenableFuture> monitorPause(MonitorPauseInput input) { LOG.debug("Monitor Pause operation invoked for monitor id: {}", input.getMonitorId()); SettableFuture> result = SettableFuture.create(); - final Long monitorId = input.getMonitorId(); + final Uint32 monitorId = input.getMonitorId(); // Set the monitoring status to Paused updateMonitorStatusTo(monitorId, MonitorStatus.Paused, currentStatus -> currentStatus == MonitorStatus.Started); @@ -628,8 +633,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene if (stopMonitoringTask(monitorId)) { result.set(RpcResultBuilder.success().build()); } else { - String errorMsg = String.format("No Monitoring Task availble to pause for the given monitor id : %d", - monitorId); + String errorMsg = "No Monitoring Task availble to pause for the given monitor id : " + monitorId; LOG.error("Monitor Pause operation failed- {}", errorMsg); result.set(RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, errorMsg).build()); @@ -643,7 +647,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene LOG.debug("Monitor Unpause operation invoked for monitor id: {}", input.getMonitorId()); final SettableFuture> result = SettableFuture.create(); - final Long monitorId = input.getMonitorId(); + final Uint32 monitorId = input.getMonitorId(); final ReadTransaction tx = dataBroker.newReadOnlyTransaction(); FluentFuture> readInfoResult = tx.read(LogicalDatastoreType.OPERATIONAL, getMonitoringInfoId(monitorId)); @@ -653,7 +657,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onFailure(Throwable error) { tx.close(); - String msg = String.format("Unable to read monitoring info associated with monitor id %d", monitorId); + String msg = "Unable to read monitoring info associated with monitor id " + monitorId; LOG.error("Monitor unpause Failed. {}", msg, error); result.set(RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, msg, error).build()); @@ -670,8 +674,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onFailure(Throwable error) { tx.close(); - String msg = String.format("Unable to read Monitoring profile associated with id %d", - info.getProfileId()); + String msg = "Unable to read Monitoring profile associated with id " + info.getProfileId(); LOG.warn("Monitor unpause Failed. {}", msg, error); result.set(RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, msg, error).build()); @@ -696,7 +699,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene } result.set(RpcResultBuilder.success().build()); } else { - String msg = String.format("Monitoring profile associated with id %d is not present", + String msg = String.format("Monitoring profile associated with id %s is not present", info.getProfileId()); LOG.warn("Monitor unpause Failed. {}", msg); result.set( @@ -707,7 +710,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene }, callbackExecutorService); } else { tx.close(); - String msg = String.format("Monitoring info associated with id %d is not present", monitorId); + String msg = String.format("Monitoring info associated with id %s is not present", monitorId); LOG.warn("Monitor unpause Failed. {}", msg); result.set(RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, msg).build()); @@ -718,11 +721,11 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return result; } - private boolean stopMonitoringTask(Long monitorId) { + private boolean stopMonitoringTask(Uint32 monitorId) { return stopMonitoringTask(monitorId, INTERRUPT_TASK); } - private boolean stopMonitoringTask(Long monitorId, boolean interruptTask) { + private boolean stopMonitoringTask(Uint32 monitorId, boolean interruptTask) { Optional optInfo; try { optInfo = txRunner.applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, @@ -759,7 +762,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return false; } - Optional getMonitorProfile(Long profileId) { + Optional getMonitorProfile(Uint32 profileId) { try { return txRunner.applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, tx -> tx.read(getMonitorProfileId(profileId))).get(); @@ -801,9 +804,11 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void sendMonitorPacket(final MonitoringInfo monitoringInfo) { // TODO: Handle interrupts - final Long monitorId = monitoringInfo.getId(); + final Uint32 monitorId = monitoringInfo.getId(); final String monitorKey = monitorIdKeyCache.getUnchecked(monitorId); if (monitorKey == null) { LOG.warn("No monitor Key associated with id {} to send the monitor packet", monitorId); @@ -834,19 +839,19 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene MonitoringState state = optState.get(); // Increase the request count - Long requestCount = state.getRequestCount() + 1; + Long requestCount = state.getRequestCount().toJava() + 1; // Check with the monitor window LivenessState currentLivenessState = state.getState(); // Increase the pending response count - long responsePendingCount = state.getResponsePendingCount(); - if (responsePendingCount < profile.getMonitorWindow()) { + long responsePendingCount = state.getResponsePendingCount().toJava(); + if (responsePendingCount < profile.getMonitorWindow().toJava()) { responsePendingCount = responsePendingCount + 1; } // Check with the failure threshold - if (responsePendingCount >= profile.getFailureThreshold()) { + if (responsePendingCount >= profile.getFailureThreshold().toJava()) { // Change the state to down and notify if (currentLivenessState != LivenessState.Down) { LOG.debug("Response pending Count: {}, Failure threshold: {} for monitorId {}", @@ -872,7 +877,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene // Close the transaction tx.commit(); String errorMsg = String.format( - "Monitoring State associated with id %d is not present to send packet out.", monitorId); + "Monitoring State associated with id %s is not present to send packet out.", monitorId); return Futures.immediateFailedFuture(new RuntimeException(errorMsg)); } }, callbackExecutorService); @@ -899,7 +904,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene }, callbackExecutorService); } - void publishNotification(final Long monitorId, final LivenessState state) { + void publishNotification(final Uint32 monitorId, final LivenessState state) { LOG.debug("Sending notification for id {} - state {}", monitorId, state); EventData data = new EventDataBuilder().setMonitorId(monitorId).setMonitorState(state).build(); MonitorEvent event = new MonitorEventBuilder().setEventData(data).build(); @@ -923,12 +928,12 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene LOG.debug("Monitor Profile Create operation - {}", input.getProfile()); final SettableFuture> returnFuture = SettableFuture.create(); Profile profile = input.getProfile(); - final Long failureThreshold = profile.getFailureThreshold(); - final Long monitorInterval = profile.getMonitorInterval(); - final Long monitorWindow = profile.getMonitorWindow(); + final Uint32 failureThreshold = profile.getFailureThreshold(); + final Uint32 monitorInterval = profile.getMonitorInterval(); + final Uint32 monitorWindow = profile.getMonitorWindow(); final MonitorProtocolType protocolType = profile.getProtocolType(); String idKey = getUniqueProfileKey(failureThreshold, monitorInterval, monitorWindow, protocolType); - final Long profileId = (long) getUniqueId(idKey); + final Uint32 profileId = Uint32.valueOf(getUniqueId(idKey)); final ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); FluentFuture> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, @@ -1004,9 +1009,9 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene org.opendaylight.yang.gen.v1.urn.opendaylight.genius .alivenessmonitor.rev160411.monitor.profile.get.input.Profile profile = input .getProfile(); - final Long failureThreshold = profile.getFailureThreshold(); - final Long monitorInterval = profile.getMonitorInterval(); - final Long monitorWindow = profile.getMonitorWindow(); + final Uint32 failureThreshold = profile.getFailureThreshold(); + final Uint32 monitorInterval = profile.getMonitorInterval(); + final Uint32 monitorWindow = profile.getMonitorWindow(); final MonitorProtocolType protocolType = profile.getProtocolType(); LOG.debug("getExistingProfileId for profile : {}", input.getProfile()); String idKey = getUniqueProfileKey(failureThreshold, monitorInterval, monitorWindow, protocolType); @@ -1014,7 +1019,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return (long) getUniqueId(idKey); } - private String getUniqueProfileKey(Long failureThreshold, Long monitorInterval, Long monitorWindow, + private String getUniqueProfileKey(Uint32 failureThreshold, Uint32 monitorInterval, Uint32 monitorWindow, MonitorProtocolType protocolType) { return String.valueOf(failureThreshold) + AlivenessMonitorConstants.SEPERATOR + monitorInterval + AlivenessMonitorConstants.SEPERATOR + monitorWindow + AlivenessMonitorConstants.SEPERATOR @@ -1026,7 +1031,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene final MonitorProfileDeleteInput input) { LOG.debug("Monitor Profile delete for Id: {}", input.getProfileId()); final SettableFuture> result = SettableFuture.create(); - final Long profileId = input.getProfileId(); + final Uint32 profileId = input.getProfileId(); final ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); FluentFuture> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, getMonitorProfileId(profileId)); @@ -1037,7 +1042,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene tx.commit().addCallback(new FutureCallback() { @Override public void onFailure(Throwable error) { - String msg = String.format("Error when removing monitor profile %d from datastore", + String msg = String.format("Error when removing monitor profile %s from datastore", profileId); LOG.error("Error when removing monitor profile {} from datastore", profileId, error); result.set(RpcResultBuilder.failed() @@ -1056,7 +1061,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene } }, callbackExecutorService); } else { - String msg = String.format("Monitor profile with Id: %d does not exist", profileId); + String msg = String.format("Monitor profile with Id: %s does not exist", profileId); LOG.info(msg); result.set(RpcResultBuilder.success() .withWarning(ErrorType.PROTOCOL, "invalid-value", msg).build()); @@ -1068,7 +1073,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onFailure(Throwable error) { - String msg = String.format("Error when removing monitor profile %d from datastore", profileId); + String msg = String.format("Error when removing monitor profile %s from datastore", profileId); LOG.error("Error when removing monitor profile {} from datastore", profileId, error); result.set(RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, msg, error).build()); @@ -1087,7 +1092,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene LOG.debug("Monitor Stop operation for monitor id - {}", input.getMonitorId()); SettableFuture> result = SettableFuture.create(); - final Long monitorId = input.getMonitorId(); + final Uint32 monitorId = input.getMonitorId(); Optional optInfo; try { optInfo = txRunner.applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, @@ -1106,14 +1111,14 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> { if (monitorKey != null) { tx.delete(getMonitorStateId(monitorKey)); - monitorIdKeyCache.invalidate(monitorId); + monitorIdKeyCache.invalidate(monitorId.toJava()); } tx.delete(getMonitoringInfoId(monitorId)); //Remove monitorid-key-map tx.delete(getMonitorMapId(monitorId)); - }).addCallback(new FutureCallbackImpl(String.format("Delete monitor state with Id %d", monitorId)), + }).addCallback(new FutureCallbackImpl("Delete monitor state with Id " + monitorId), MoreExecutors.directExecutor()); MonitoringInfo info = optInfo.get(); @@ -1129,7 +1134,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene result.set(RpcResultBuilder.success().build()); } else { - String errorMsg = String.format("Do not have monitoring information associated with key %d", monitorId); + String errorMsg = "Do not have monitoring information associated with key " + monitorId; LOG.error("Delete monitoring operation Failed - {}", errorMsg); result.set(RpcResultBuilder.failed().withError(ErrorType.APPLICATION, errorMsg).build()); } @@ -1137,7 +1142,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return result; } - private void removeMonitorIdFromInterfaceAssociation(final Long monitorId, final String interfaceName) { + private void removeMonitorIdFromInterfaceAssociation(final Uint32 monitorId, final String interfaceName) { LOG.debug("Remove monitorId {} from Interface association {}", monitorId, interfaceName); final ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); FluentFuture> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, @@ -1145,7 +1150,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene FluentFuture updateFuture = readFuture.transformAsync(optEntry -> { if (optEntry.isPresent()) { InterfaceMonitorEntry entry = optEntry.get(); - List monitorIds = + List monitorIds = entry.getMonitorIds() != null ? new ArrayList<>(entry.getMonitorIds()) : new ArrayList<>(); monitorIds.remove(monitorId); if (monitorIds.isEmpty()) { @@ -1165,12 +1170,12 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene }, MoreExecutors.directExecutor()); updateFuture.addCallback(new FutureCallbackImpl( - String.format("Dis-association of monitorId %d with Interface %s", monitorId, interfaceName)), + String.format("Dis-association of monitorId %s with Interface %s", monitorId, interfaceName)), MoreExecutors.directExecutor()); } private void releaseIdForMonitoringInfo(MonitoringInfo info) { - Long monitorId = info.getId(); + Uint32 monitorId = info.getId(); EndpointType source = info.getSource().getEndpointType(); String interfaceName = getInterfaceName(source); if (!Strings.isNullOrEmpty(interfaceName)) { @@ -1202,7 +1207,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return interfaceName; } - private void stopMonitoring(long monitorId) { + private void stopMonitoring(Uint32 monitorId) { updateMonitorStatusTo(monitorId, MonitorStatus.Stopped, currentStatus -> currentStatus != MonitorStatus.Stopped); if (!stopMonitoringTask(monitorId)) { @@ -1210,7 +1215,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene } } - private void updateMonitorStatusTo(final Long monitorId, final MonitorStatus newStatus, + private void updateMonitorStatusTo(final Uint32 monitorId, final MonitorStatus newStatus, final Predicate isValidStatus) { final String monitorKey = monitorIdKeyCache.getUnchecked(monitorId); if (monitorKey == null) { @@ -1240,12 +1245,11 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene return tx.commit(); }, MoreExecutors.directExecutor()); - writeResult.addCallback(new FutureCallbackImpl( - String.format("Monitor status update for %d to %s", monitorId, newStatus.toString())), + writeResult.addCallback(new FutureCallbackImpl("Monitor status update for " + monitorId + " to " + newStatus), MoreExecutors.directExecutor()); } - private void resumeMonitoring(final long monitorId) { + private void resumeMonitoring(final Uint32 monitorId) { final ReadTransaction tx = dataBroker.newReadOnlyTransaction(); FluentFuture> readInfoResult = tx.read(LogicalDatastoreType.OPERATIONAL, getMonitoringInfoId(monitorId)); @@ -1254,7 +1258,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onFailure(Throwable error) { - String msg = String.format("Unable to read monitoring info associated with monitor id %d", monitorId); + String msg = "Unable to read monitoring info associated with monitor id " + monitorId; LOG.error("Monitor resume Failed. {}", msg, error); tx.close(); } @@ -1269,8 +1273,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onFailure(Throwable error) { - String msg = String.format("Unable to read Monitoring profile associated with id %d", - info.getProfileId()); + String msg = "Unable to read Monitoring profile associated with id " + info.getProfileId(); LOG.warn("Monitor resume Failed. {}", msg, error); tx.close(); } @@ -1285,7 +1288,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene LOG.debug("Monitor Resume - Scheduling monitoring task for Id: {}", monitorId); scheduleMonitoringTask(info, profile.getMonitorInterval()); } else { - String msg = String.format("Monitoring profile associated with id %d is not present", + String msg = String.format("Monitoring profile associated with id %s is not present", info.getProfileId()); LOG.warn("Monitor resume Failed. {}", msg); } @@ -1293,7 +1296,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene }, MoreExecutors.directExecutor()); } else { tx.close(); - String msg = String.format("Monitoring info associated with id %d is not present", monitorId); + String msg = String.format("Monitoring info associated with id %s is not present", monitorId); LOG.warn("Monitor resume Failed. {}", msg); } } @@ -1302,12 +1305,12 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onInterfaceStateUp(String interfaceName) { - List monitorIds = getMonitorIds(interfaceName); + List monitorIds = getMonitorIds(interfaceName); if (monitorIds.isEmpty()) { LOG.warn("Could not get monitorId for interface: {}", interfaceName); return; } - for (Long monitorId : monitorIds) { + for (Uint32 monitorId : monitorIds) { LOG.debug("Resume monitoring on interface: {} with monitorId: {}", interfaceName, monitorId); resumeMonitoring(monitorId); } @@ -1315,18 +1318,18 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void onInterfaceStateDown(String interfaceName) { - List monitorIds = getMonitorIds(interfaceName); + List monitorIds = getMonitorIds(interfaceName); if (monitorIds.isEmpty()) { LOG.warn("Could not get monitorIds for interface: {}", interfaceName); return; } - for (Long monitorId : monitorIds) { + for (Uint32 monitorId : monitorIds) { LOG.debug("Suspend monitoring on interface: {} with monitorId: {}", interfaceName, monitorId); stopMonitoring(monitorId); } } - private List getMonitorIds(String interfaceName) { + private List getMonitorIds(String interfaceName) { try { return txRunner.applyInterruptiblyWithNewReadOnlyTransactionAndClose(OPERATIONAL, tx -> tx.read(getInterfaceMonitorMapId(interfaceName))).get().map( @@ -1341,7 +1344,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene @Override public void remove(@NonNull InstanceIdentifier instanceIdentifier, @NonNull MonitoringState removedDataObject) { - final Long monitorId = removedDataObject.getMonitorId(); + final Uint32 monitorId = removedDataObject.getMonitorId(); LOG.debug("Monitor State remove listener invoked for monitor id: {}", monitorId); if (removedDataObject.getStatus() != MonitorStatus.Paused) { @@ -1358,7 +1361,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene public void update(@NonNull InstanceIdentifier instanceIdentifier, @NonNull MonitoringState originalDataObject, @NonNull MonitoringState updatedDataObject) { - final Long monitorId = updatedDataObject.getMonitorId(); + final Uint32 monitorId = updatedDataObject.getMonitorId(); LOG.debug("Monitor State update listener invoked for monitor id: {}", monitorId); if (updatedDataObject.getStatus() == MonitorStatus.Paused diff --git a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/HwVtepTunnelsStateHandler.java b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/HwVtepTunnelsStateHandler.java index 8d7a7714b..1beacb7ae 100644 --- a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/HwVtepTunnelsStateHandler.java +++ b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/HwVtepTunnelsStateHandler.java @@ -70,6 +70,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -256,7 +257,7 @@ public class HwVtepTunnelsStateHandler extends AbstractSyncDataTreeChangeListene return; } MonitorProfile profile; - long profileId = monitorInfo.getProfileId(); + Uint32 profileId = monitorInfo.getProfileId(); java.util.Optional optProfile = alivenessMonitor.getMonitorProfile(profileId); if (optProfile.isPresent()) { profile = optProfile.get(); @@ -320,10 +321,12 @@ public class HwVtepTunnelsStateHandler extends AbstractSyncDataTreeChangeListene private void fillBfdParams(List bfdParams, MonitorProfile profile) { setBfdParamForEnable(bfdParams, true); - bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_MIN_RX, Long.toString(profile.getMinRx()))); - bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_MIN_TX, Long.toString(profile.getMinTx()))); - bfdParams.add( - getBfdParams(AlivenessMonitorConstants.BFD_PARAM_DECAY_MIN_RX, Long.toString(profile.getDecayMinRx()))); + bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_MIN_RX, + Long.toString(profile.getMinRx().toJava()))); + bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_MIN_TX, + Long.toString(profile.getMinTx().toJava()))); + bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_DECAY_MIN_RX, + Long.toString(profile.getDecayMinRx().toJava()))); bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_FORWARDING_IF_RX, profile.getForwardingIfRx())); bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_CPATH_DOWN, profile.getCpathDown())); bfdParams.add(getBfdParams(AlivenessMonitorConstants.BFD_PARAM_CHECK_TNL_KEY, profile.getCheckTnlKey())); diff --git a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/utils/AlivenessMonitorUtil.java b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/utils/AlivenessMonitorUtil.java index 6cbb213fb..ec97ec541 100644 --- a/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/utils/AlivenessMonitorUtil.java +++ b/alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/utils/AlivenessMonitorUtil.java @@ -31,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.monitoring.states.MonitoringStateKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.Uint32; public final class AlivenessMonitorUtil { private AlivenessMonitorUtil() { @@ -42,17 +43,17 @@ public final class AlivenessMonitorUtil { .child(MonitoringState.class, new MonitoringStateKey(keyId)).build(); } - public static InstanceIdentifier getMonitoringInfoId(Long monitorId) { + public static InstanceIdentifier getMonitoringInfoId(Uint32 monitorId) { return InstanceIdentifier.builder(MonitorConfigs.class) .child(MonitoringInfo.class, new MonitoringInfoKey(monitorId)).build(); } - public static InstanceIdentifier getMonitorProfileId(Long profileId) { + public static InstanceIdentifier getMonitorProfileId(Uint32 profileId) { return InstanceIdentifier.builder(MonitorProfiles.class) .child(MonitorProfile.class, new MonitorProfileKey(profileId)).build(); } - public static InstanceIdentifier getMonitorMapId(Long keyId) { + public static InstanceIdentifier getMonitorMapId(Uint32 keyId) { return InstanceIdentifier.builder(MonitoridKeyMap.class) .child(MonitoridKeyEntry.class, new MonitoridKeyEntryKey(keyId)).build(); } diff --git a/alivenessmonitor/pom.xml b/alivenessmonitor/pom.xml index b37d96789..3d2bb87e3 100644 --- a/alivenessmonitor/pom.xml +++ b/alivenessmonitor/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java b/arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java index dab61e9b6..a3b31affe 100644 --- a/arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java +++ b/arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java @@ -5,7 +5,6 @@ * 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.arputil.internal; import static com.google.common.base.Preconditions.checkArgument; @@ -17,10 +16,9 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -30,7 +28,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import javax.inject.Inject; import javax.inject.Singleton; - import org.apache.aries.blueprint.annotation.service.Reference; import org.opendaylight.genius.arputil.api.ArpConstants; import org.opendaylight.genius.mdsalutil.MDSALUtil; @@ -99,6 +96,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -216,7 +214,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, @Override public ListenableFuture> sendArpRequest(SendArpRequestInput arpReqInput) { LOG.trace("rpc sendArpRequest invoked for ip {}", arpReqInput.getIpaddress()); - BigInteger dpnId; + Uint64 dpnId; byte[] payload; String interfaceName = null; byte[] srcIpBytes; @@ -243,8 +241,8 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, GetPortFromInterfaceOutput portResult = getPortFromInterface(interfaceName); checkNotNull(portResult); dpnId = portResult.getDpid(); - Long portid = portResult.getPortno(); - checkArgument(null != dpnId && !BigInteger.ZERO.equals(dpnId), + Long portid = portResult.getPortno().toJava(); + checkArgument(null != dpnId && !Uint64.ZERO.equals(dpnId), ArpConstants.DPN_NOT_FOUND_ERROR, interfaceName); NodeConnectorRef ref = MDSALUtil.getNodeConnRef(dpnId, portid.toString()); @@ -292,7 +290,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, } public ListenableFuture> sendPacketOut( - BigInteger dpnId, byte[] payload, NodeConnectorRef ref) { + Uint64 dpnId, byte[] payload, NodeConnectorRef ref) { NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd"); return packetProcessingService.transmitPacket(new TransmitPacketInputBuilder().setPayload(payload) .setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class) @@ -301,7 +299,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, } private Future> sendPacketOutWithActions( - BigInteger dpnId, byte[] payload, NodeConnectorRef ref, List actions) { + Uint64 dpnId, byte[] payload, NodeConnectorRef ref, List actions) { NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd"); TransmitPacketInput transmitPacketInput = new TransmitPacketInputBuilder().setPayload(payload) .setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class) @@ -340,7 +338,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, @Override public ListenableFuture> sendArpResponse(SendArpResponseInput input) { LOG.trace("sendArpResponse rpc invoked"); - BigInteger dpnId; + Uint64 dpnId; byte[] payload; byte[] srcMac; @@ -349,9 +347,9 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, GetPortFromInterfaceOutput portResult = getPortFromInterface(interfaceName); checkNotNull(portResult); dpnId = portResult.getDpid(); - Long portid = portResult.getPortno(); + Long portid = portResult.getPortno().toJava(); NodeConnectorRef ref = MDSALUtil.getNodeConnRef(dpnId, portid.toString()); - checkArgument(null != dpnId && !BigInteger.ZERO.equals(dpnId), + checkArgument(null != dpnId && !Uint64.ZERO.equals(dpnId), ArpConstants.DPN_NOT_FOUND_ERROR, interfaceName); checkNotNull(ref, ArpConstants.NODE_CONNECTOR_NOT_FOUND_ERROR, interfaceName); @@ -360,7 +358,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, byte[] srcIpBytes = getIpAddressBytes(input.getSrcIpaddress()); byte[] dstIpBytes = getIpAddressBytes(input.getDstIpaddress()); if (input.getSrcMacaddress() == null) { - srcMac = portResult.getPhyAddress().getBytes("UTF-8"); + srcMac = portResult.getPhyAddress().getBytes(StandardCharsets.UTF_8); } else { String macAddr = input.getSrcMacaddress().getValue(); srcMac = HexEncode.bytesFromHexString(macAddr); @@ -375,8 +373,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, input.getSrcIpaddress().getIpv4Address().getValue(), HexEncode.bytesToHexStringFormat(srcMac), HexEncode.bytesToHexStringFormat(dstMac), input.getDstIpaddress().getIpv4Address().getValue(), dpnId); - } catch (UnknownHostException | PacketException | InterruptedException | UnsupportedEncodingException - | ExecutionException e) { + } catch (UnknownHostException | PacketException | InterruptedException | ExecutionException e) { LOG.error("failed to send arp response for {}: ", input.getSrcIpaddress(), e); return RpcResultBuilder.failed() .withError(ErrorType.APPLICATION, e.getMessage(), e).buildFuture(); @@ -392,8 +389,8 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, if (pktInReason == SendToController.class) { try { - BigInteger dpnId = extractDpnId(packetReceived); - int tableId = packetReceived.getTableId().getValue(); + Uint64 dpnId = extractDpnId(packetReceived); + int tableId = packetReceived.getTableId().getValue().toJava(); byte[] data = packetReceived.getPayload(); Ethernet ethernet = new Ethernet(); @@ -452,7 +449,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, LOG.debug("metadata received is {} ", metadata); GetInterfaceFromIfIndexInputBuilder ifIndexInputBuilder = new GetInterfaceFromIfIndexInputBuilder(); - BigInteger lportTag = MetaDataUtil.getLportFromMetadata(metadata.getMetadata()); + Uint64 lportTag = MetaDataUtil.getLportFromMetadata(metadata.getMetadata()); ifIndexInputBuilder.setIfIndex(lportTag.intValue()); GetInterfaceFromIfIndexInput input = ifIndexInputBuilder.build(); @@ -501,7 +498,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, } private void fireArpRespRecvdNotification(String interfaceName, InetAddress srcInetAddr, byte[] srcMacAddressBytes, - BigInteger dpnId, int tableId, BigInteger metadata, InetAddress dstInetAddr, byte[] dstMacAddressBytes) + Uint64 dpnId, int tableId, Uint64 metadata, InetAddress dstInetAddr, byte[] dstMacAddressBytes) throws InterruptedException { arpRespRecvd.mark(); @@ -530,7 +527,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, } private void fireArpReqRecvdNotification(String interfaceName, InetAddress srcInetAddr, byte[] srcMac, - InetAddress dstInetAddr, BigInteger dpnId, int tableId, BigInteger metadata) throws InterruptedException { + InetAddress dstInetAddr, Uint64 dpnId, int tableId, Uint64 metadata) throws InterruptedException { arpReqRecvd.mark(); String macAddress = NWUtil.toStringMacAddress(srcMac); ArpRequestReceivedBuilder builder = new ArpRequestReceivedBuilder(); @@ -568,7 +565,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, } } - private BigInteger extractDpnId(PacketReceived packetReceived) { + private Uint64 extractDpnId(PacketReceived packetReceived) { NodeKey nodeKey = packetReceived.getIngress().getValue().firstKeyOf(Node.class); String nodeKeyString = nodeKey.getId().getValue(); @@ -577,6 +574,6 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, return null; } - return new BigInteger(nodeKeyString.substring(OPENFLOW_PFX.length())); + return Uint64.valueOf(nodeKeyString.substring(OPENFLOW_PFX.length())); } } diff --git a/arputil/pom.xml b/arputil/pom.xml index b0041aa26..f417a930d 100644 --- a/arputil/pom.xml +++ b/arputil/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/artifacts/pom.xml b/artifacts/pom.xml index 790702877..e91ac5185 100644 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/cloudscaler/api/pom.xml b/cloudscaler/api/pom.xml index 05cfdb528..e793ac6e3 100644 --- a/cloudscaler/api/pom.xml +++ b/cloudscaler/api/pom.xml @@ -45,7 +45,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.openflowplugin.model model-flow-service - ${openflowplugin.version} org.opendaylight.controller 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 3ac20088c..4ba466fb5 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 @@ -7,11 +7,10 @@ */ package org.opendaylight.genius.cloudscaler.api; -import java.math.BigInteger; import java.util.List; import java.util.function.Function; - import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.yangtools.yang.common.Uint64; public interface TombstonedNodeManager { @@ -21,13 +20,13 @@ public interface TombstonedNodeManager { * @return true if the supllied dpn is getting scaled in * @throws ReadFailedException throws read failed exception */ - boolean isDpnTombstoned(BigInteger dpnId) throws ReadFailedException; + boolean isDpnTombstoned(Uint64 dpnId) throws ReadFailedException; /** * Add the listener callback which will be invoked upon recovery of scaled in dpn. * @param callback callback to be invoked on recovery */ - void addOnRecoveryCallback(Function callback); + void addOnRecoveryCallback(Function callback); /** * Filters the list of dpns which are not scaled in. @@ -35,5 +34,5 @@ public interface TombstonedNodeManager { * @return filtered list of dpns which are not scaled in * @throws ReadFailedException throws read failed exception */ - List filterTombStoned(List dpns) throws ReadFailedException; + List filterTombStoned(List dpns) throws ReadFailedException; } diff --git a/cloudscaler/impl/pom.xml b/cloudscaler/impl/pom.xml index de8fd53f8..ac95774c2 100644 --- a/cloudscaler/impl/pom.xml +++ b/cloudscaler/impl/pom.xml @@ -44,7 +44,6 @@ org.opendaylight.openflowplugin.model model-flow-service - ${openflowplugin.version} commons-net @@ -98,7 +97,6 @@ org.opendaylight.infrautils caches-api - ${genius.infrautils.version} org.opendaylight.yangtools @@ -133,12 +131,10 @@ org.opendaylight.openflowplugin openflowplugin-extension-nicira - ${openflowplugin.version} org.opendaylight.openflowplugin.model model-flow-base - ${openflowplugin.version} 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 9c06b4c00..9ba27528d 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 @@ -15,13 +15,10 @@ 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.math.BigInteger; 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; @@ -59,6 +56,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,7 +81,7 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { private static RpcResult DONE_RPC_RESPONSE = RpcResultBuilder .success().withResult(DONE).build(); - private DataBroker dataBroker; + private final DataBroker dataBroker; private final ComputeNodeManager computeNodeManager; private final ManagedNewTransactionRunner txRunner; private final ItmTepClusteredListener itmTepClusteredListener; @@ -91,15 +89,16 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { //The following timestamp is not persisted across reboots //upon reboot the timestamp will have a default value of that system timestamp //this way scalein end that is triggered after cluster reboot will still honour the 2 min delay - private LoadingCache tepDeleteTimeStamp = CacheBuilder.newBuilder() + private final LoadingCache tepDeleteTimeStamp = CacheBuilder.newBuilder() .expireAfterWrite(60, TimeUnit.MINUTES) - .build(new CacheLoader() { - public Long load(BigInteger dpnId) { + .build(new CacheLoader() { + @Override + public Long load(Uint64 dpnId) { return System.currentTimeMillis(); } }); - public static final FutureCallback DEFAULT_CALLBACK = new FutureCallback() { + public static final FutureCallback DEFAULT_CALLBACK = new FutureCallback<>() { @Override public void onSuccess(Void result) { LOG.debug("Success in Datastore operation"); @@ -177,7 +176,7 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService { } Long tepDeletedTimeStamp = tepDeleteTimeStamp.get(computeNode.getDpnid()); Long currentTime = System.currentTimeMillis(); - if ((currentTime - tepDeletedTimeStamp) > DELETE_DELAY * 1000L) { + if (currentTime - tepDeletedTimeStamp > DELETE_DELAY * 1000L) { scaleinComputesEnd2(input); } else { return Futures.immediateFuture(IN_PROGRESS_RPC_RESPONSE); 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 f7030de63..bb5d7bfe8 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 @@ -8,8 +8,6 @@ package org.opendaylight.genius.cloudscaler.rpcservice; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; - -import java.math.BigInteger; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -17,7 +15,6 @@ import java.util.concurrent.ConcurrentHashMap; 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; @@ -39,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,10 +47,11 @@ public class ComputeNodeManager { private final DataBroker dataBroker; - private InstanceIdDataObjectCache computeNodeCache; - private InstanceIdDataObjectCache ovsdbTopologyNodeCache; - private Map dpnIdVsComputeNode; - private ExecutorService executorService = Executors.newSingleThreadExecutor("compute-node-manager", LOG); + private final InstanceIdDataObjectCache computeNodeCache; + private final InstanceIdDataObjectCache ovsdbTopologyNodeCache; + private final Map dpnIdVsComputeNode; + // FIXME: this service is never shut down + private final ExecutorService executorService = Executors.newSingleThreadExecutor("compute-node-manager", LOG); @Inject @SuppressFBWarnings({"URF_UNREAD_FIELD", "NP_LOAD_OF_KNOWN_NULL_VALUE"}) @@ -60,7 +59,7 @@ public class ComputeNodeManager { CacheProvider cacheProvider) { this.dataBroker = dataBroker; this.dpnIdVsComputeNode = new ConcurrentHashMap<>(); - this.computeNodeCache = new InstanceIdDataObjectCache(ComputeNode.class, dataBroker, + this.computeNodeCache = new InstanceIdDataObjectCache<>(ComputeNode.class, dataBroker, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.builder(ComputeNodes.class).child(ComputeNode.class).build(), cacheProvider) { @@ -76,7 +75,7 @@ public class ComputeNodeManager { dpnIdVsComputeNode.remove(computeNode.getDpnid()); } }; - this.ovsdbTopologyNodeCache = new InstanceIdDataObjectCache(Node.class, dataBroker, + this.ovsdbTopologyNodeCache = new InstanceIdDataObjectCache<>(Node.class, dataBroker, LogicalDatastoreType.OPERATIONAL, getWildcardPath(), cacheProvider) { @@ -107,7 +106,7 @@ public class ComputeNodeManager { public void add(@NonNull Node node) throws TransactionCommitFailedException { OvsdbBridgeAugmentation bridgeAugmentation = node.augmentation(OvsdbBridgeAugmentation.class); if (bridgeAugmentation != null && bridgeAugmentation.getBridgeOtherConfigs() != null) { - BigInteger datapathid = getDpnIdFromBridge(bridgeAugmentation); + Uint64 datapathid = getDpnIdFromBridge(bridgeAugmentation); Optional otherConfigOptional = bridgeAugmentation.getBridgeOtherConfigs() .stream() .filter(otherConfig -> otherConfig.getBridgeOtherConfigKey().equals("dp-desc")) @@ -145,9 +144,9 @@ public class ComputeNodeManager { .build(); } - private BigInteger getDpnIdFromBridge(OvsdbBridgeAugmentation bridgeAugmentation) { + private Uint64 getDpnIdFromBridge(OvsdbBridgeAugmentation bridgeAugmentation) { String datapathIdStr = bridgeAugmentation.getDatapathId().getValue().replace(":", ""); - return new BigInteger(datapathIdStr, 16); + return Uint64.valueOf(datapathIdStr, 16); } public void putComputeDetailsInConfigDatastore(InstanceIdentifier computeIid, @@ -159,7 +158,7 @@ public class ComputeNodeManager { //LOG.info("Write comute node details {}", computeNode); } - private void logErrorIfComputeNodeIsAlreadyTaken(BigInteger datapathid, String nodeId, + private void logErrorIfComputeNodeIsAlreadyTaken(Uint64 datapathid, String nodeId, com.google.common.base.Optional optional) { ComputeNode existingNode = optional.get(); if (!Objects.equals(existingNode.getNodeid(), nodeId)) { @@ -178,7 +177,7 @@ public class ComputeNodeManager { .child(Node.class); } - public ComputeNode getComputeNode(BigInteger dpnId) { + public ComputeNode getComputeNode(Uint64 dpnId) { return dpnIdVsComputeNode.get(dpnId); } } 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 41c32e91d..c3d7ac214 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.cloudscaler.rpcservice; -import java.math.BigInteger; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -17,7 +16,6 @@ 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; @@ -28,6 +26,7 @@ import org.opendaylight.infrautils.utils.concurrent.Executors; 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,11 +37,12 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { private final DataBroker dataBroker; private final CacheProvider cacheProvider; - private final Set> callbacks = ConcurrentHashMap.newKeySet(); + private final Set> callbacks = ConcurrentHashMap.newKeySet(); private final ComputeNodeManager computeNodeManager; private InstanceIdDataObjectCache computeNodeCache; - private ExecutorService executorService = Executors.newSingleThreadExecutor("tombstone-node-manager", LOG); + // FIXME: this service is never shut down + private final ExecutorService executorService = Executors.newSingleThreadExecutor("tombstone-node-manager", LOG); @Inject public TombstonedNodeManagerImpl(DataBroker dataBroker, @@ -55,7 +55,7 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { } void init() { - this.computeNodeCache = new InstanceIdDataObjectCache(ComputeNode.class, dataBroker, + this.computeNodeCache = new InstanceIdDataObjectCache<>(ComputeNode.class, dataBroker, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.builder(ComputeNodes.class).child(ComputeNode.class).build(), cacheProvider) { @@ -78,7 +78,7 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { } @Override - public boolean isDpnTombstoned(BigInteger dpnId) throws ReadFailedException { + public boolean isDpnTombstoned(Uint64 dpnId) throws ReadFailedException { if (dpnId == null) { return false; } @@ -90,12 +90,12 @@ public class TombstonedNodeManagerImpl implements TombstonedNodeManager { } @Override - public void addOnRecoveryCallback(Function callback) { + public void addOnRecoveryCallback(Function callback) { callbacks.add(callback); } @Override - public List filterTombStoned(List dpns) throws ReadFailedException { + public List filterTombStoned(List dpns) throws ReadFailedException { return dpns.stream().filter((dpn) -> { try { return !isDpnTombstoned(dpn); diff --git a/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTest.java b/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTest.java index 61c0f9c42..87797f6d7 100644 --- a/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTest.java +++ b/cloudscaler/impl/src/test/java/org/opendaylight/genius/cloudscaler/tests/CloudScalerServiceTest.java @@ -14,16 +14,13 @@ import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastor import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.util.concurrent.ListenableFuture; - import java.math.BigInteger; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; - import javax.inject.Inject; - import org.awaitility.Awaitility; import org.awaitility.core.ConditionFactory; import org.junit.Before; @@ -68,6 +65,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,10 +77,10 @@ public class CloudScalerServiceTest { private static final String NODEID2 = "ovsdb://uuid/2de70a99-29a5-4f2a-b87e-96d6ed57e412/bridge/br-int"; private static final String NODEID3 = "ovsdb://uuid/2de70a99-29a5-4f2a-b87e-96d6ed57e413/bridge/br-int"; - private static final BigInteger DPN1 = new BigInteger("1"); - private static final BigInteger DPN2 = new BigInteger("2"); - private static final BigInteger DPN3 = new BigInteger("3"); - private static final BigInteger DPN4 = new BigInteger("4"); + private static final Uint64 DPN1 = Uint64.ONE; + private static final Uint64 DPN2 = Uint64.valueOf(2); + private static final Uint64 DPN3 = Uint64.valueOf(3); + private static final Uint64 DPN4 = Uint64.valueOf(4); private static final String DPN1_DATAPATHID = new String("00:00:00:00:00:00:00:01"); private static final String DPN2_DATAPATHID = new String("00:00:00:00:00:00:00:02"); @@ -147,7 +145,7 @@ public class CloudScalerServiceTest { } private InstanceIdentifier - buildOpenflowNodeIid(BigInteger dpnid) { + buildOpenflowNodeIid(Uint64 dpnid) { return InstanceIdentifier.builder(Nodes.class) .child(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey( @@ -156,7 +154,7 @@ public class CloudScalerServiceTest { } private org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node buildOpenflowNode( - BigInteger dpnId) { + Uint64 dpnId) { org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder nodeBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder(); nodeBuilder.setId(new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId( @@ -237,7 +235,7 @@ public class CloudScalerServiceTest { throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { testScaleinComputesStartRpc(); - List filtered = tombstonedNodeManager.filterTombStoned(Lists.newArrayList(DPN1, DPN2, DPN3, DPN4)); + List filtered = tombstonedNodeManager.filterTombStoned(Lists.newArrayList(DPN1, DPN2, DPN3, DPN4)); assertTrue("Dpn 1 and 2 should be filtered ", Sets.difference(Sets.newHashSet(DPN3, DPN4), Sets.newHashSet(filtered)).isEmpty()); } @@ -245,7 +243,7 @@ public class CloudScalerServiceTest { @Test public void testRecoveryCallback() throws ExecutionException, InterruptedException, ReadFailedException, TransactionCommitFailedException { - Set nodesRecoverd = new HashSet<>(); + Set nodesRecoverd = new HashSet<>(); tombstonedNodeManager.addOnRecoveryCallback((dpnId) -> { nodesRecoverd.add(dpnId); return null; @@ -254,7 +252,7 @@ public class CloudScalerServiceTest { AWAITER.until(() -> nodesRecoverd.contains(DPN1)); } - private BridgeRefEntry buildBridgeRefEntry(BigInteger dpnId, String nodeId) { + private BridgeRefEntry buildBridgeRefEntry(Uint64 dpnId, String nodeId) { return new BridgeRefEntryBuilder() .setDpid(dpnId) .setBridgeReference(new OvsdbBridgeRef(buildNodeIid(nodeId))) diff --git a/cloudscaler/pom.xml b/cloudscaler/pom.xml index f64b9784f..7917f357e 100644 --- a/cloudscaler/pom.xml +++ b/cloudscaler/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/commons/binding-parent/pom.xml b/commons/binding-parent/pom.xml index cae76faf2..a49ccbc21 100644 --- a/commons/binding-parent/pom.xml +++ b/commons/binding-parent/pom.xml @@ -10,7 +10,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.mdsal binding-parent - 4.0.6 + 5.0.3 diff --git a/commons/checkstyle/pom.xml b/commons/checkstyle/pom.xml index d0e3de194..b3e1caa39 100644 --- a/commons/checkstyle/pom.xml +++ b/commons/checkstyle/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent - 5.0.2 + 6.0.0 diff --git a/commons/pom.xml b/commons/pom.xml index 19f06b299..876b4552c 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/commons/quality-parent/pom.xml b/commons/quality-parent/pom.xml index 9707aa462..1d028a064 100644 --- a/commons/quality-parent/pom.xml +++ b/commons/quality-parent/pom.xml @@ -29,7 +29,7 @@ org.opendaylight.yangtools yangtools-artifacts - 3.0.5 + 4.0.1 pom import @@ -43,7 +43,7 @@ org.opendaylight.mdsal mdsal-artifacts - 4.0.6 + 5.0.3 pom import 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 60f7d3247..62b995786 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.testutils; import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrException; -import java.math.BigInteger; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; @@ -24,6 +23,7 @@ import org.opendaylight.genius.testutils.interfacemanager.InterfaceHelper; import org.opendaylight.genius.testutils.interfacemanager.InterfaceStateHelper; import org.opendaylight.genius.testutils.interfacemanager.TunnelInterfaceDetails; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; +import org.opendaylight.yangtools.yang.common.Uint64; /** * IInterfaceManager implementation for tests. @@ -147,12 +147,12 @@ public abstract class TestInterfaceManager implements IInterfaceManager { } @Override - public BigInteger getDpnForInterface(String interfaceName) { + public Uint64 getDpnForInterface(String interfaceName) { return interfaceInfos.get(interfaceName).getDpId(); } @Override - public BigInteger getDpnForInterface(Interface intrface) { + public Uint64 getDpnForInterface(Interface intrface) { return interfaceInfos.get(intrface.getName()).getDpId(); } diff --git a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceStateHelper.java b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceStateHelper.java index 6ae8a346d..bc7faf535 100644 --- a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceStateHelper.java +++ b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/interfacemanager/InterfaceStateHelper.java @@ -8,11 +8,8 @@ package org.opendaylight.genius.testutils.interfacemanager; import com.google.common.collect.Lists; -import java.math.BigInteger; - import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; - import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; 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; @@ -26,6 +23,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; public final class InterfaceStateHelper { @@ -40,9 +38,9 @@ public final class InterfaceStateHelper { } public static Interface buildStateFromInterfaceInfo(InterfaceInfo interfaceInfo) { - BigInteger dpId = interfaceInfo.getDpId(); + Uint64 dpId = interfaceInfo.getDpId(); int portno = interfaceInfo.getPortNo(); - NodeConnectorId nodeConnectorId = new NodeConnectorId("openflow:" + dpId.toString() + ":" + portno); + NodeConnectorId nodeConnectorId = new NodeConnectorId("openflow:" + dpId + ":" + portno); return new InterfaceBuilder() .setType(Other.class) .setIfIndex(interfaceInfo.getInterfaceTag()) diff --git a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java index 42b7ca37e..75cc7cbdc 100644 --- a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java +++ b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java @@ -9,10 +9,8 @@ package org.opendaylight.genius.testutils.itm; import com.google.common.collect.Lists; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - 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.rpcs.rev160406.AddExternalTunnelEndpointInput; @@ -64,28 +62,30 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.S import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdParamOnTunnelOutput; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; public final class ItmRpcTestImpl implements ItmRpcService { - private final Map tepIps = new ConcurrentHashMap<>(); - private final Map> interfaceNames = new ConcurrentHashMap<>(); - private final Map> externalInterfaceNames = new ConcurrentHashMap<>(); + // FIXME: access is complete synchronized, why are these ConcurrentHashMaps??? + private final Map tepIps = new ConcurrentHashMap<>(); + private final Map> interfaceNames = new ConcurrentHashMap<>(); + private final Map> externalInterfaceNames = new ConcurrentHashMap<>(); - public synchronized void addDpn(BigInteger dpnId, String tepIp) { + public synchronized void addDpn(Uint64 dpnId, String tepIp) { tepIps.put(dpnId, IpAddressBuilder.getDefaultInstance(tepIp)); } - public synchronized void addInterface(BigInteger dpnId, String dstTep, String interfaceName) { + public synchronized void addInterface(Uint64 dpnId, String dstTep, String interfaceName) { interfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>()); interfaceNames.get(dpnId).put(dstTep, interfaceName); } - public synchronized void addL2GwInterface(BigInteger dpnId, String nodeId, String interfaceName) { + public synchronized void addL2GwInterface(Uint64 dpnId, String nodeId, String interfaceName) { externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>()); externalInterfaceNames.get(dpnId).put(nodeId, interfaceName); } - public synchronized void addExternalInterface(BigInteger dpnId, String dstTep, String interfaceName) { + public synchronized void addExternalInterface(Uint64 dpnId, String dstTep, String interfaceName) { //dstTep = IpAddressBuilder.getDefaultInstance(dstTep).toString(); externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>()); externalInterfaceNames.get(dpnId).put(dstTep, interfaceName); @@ -162,7 +162,7 @@ public final class ItmRpcTestImpl implements ItmRpcService { @Override public synchronized ListenableFuture> getExternalTunnelInterfaceName(GetExternalTunnelInterfaceNameInput input) { - String interfaceName = externalInterfaceNames.get(new BigInteger(input.getSourceNode(), 10)) + String interfaceName = externalInterfaceNames.get(Uint64.valueOf(input.getSourceNode())) .get(input.getDestinationNode()); GetExternalTunnelInterfaceNameOutput output = new GetExternalTunnelInterfaceNameOutputBuilder() .setInterfaceName(interfaceName) diff --git a/fcapsapplication/pom.xml b/fcapsapplication/pom.xml index 00c213d72..f8c5a03e5 100644 --- a/fcapsapplication/pom.xml +++ b/fcapsapplication/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/fcapsmanager/alarmmanager/src/main/java/org/opendaylight/genius/fcapsmanager/alarmmanager/AlarmNotificationListeners.java b/fcapsmanager/alarmmanager/src/main/java/org/opendaylight/genius/fcapsmanager/alarmmanager/AlarmNotificationListeners.java index 79a64cde1..ca845ec05 100644 --- a/fcapsmanager/alarmmanager/src/main/java/org/opendaylight/genius/fcapsmanager/alarmmanager/AlarmNotificationListeners.java +++ b/fcapsmanager/alarmmanager/src/main/java/org/opendaylight/genius/fcapsmanager/alarmmanager/AlarmNotificationListeners.java @@ -7,6 +7,7 @@ */ package org.opendaylight.genius.fcapsmanager.alarmmanager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.lang.management.ManagementFactory; import java.util.Set; import java.util.TreeSet; @@ -46,6 +47,8 @@ public class AlarmNotificationListeners implements Runnable { * Platform dependent bundle injects its handle and it is retrieved in the * method. */ + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private AlarmServiceFacade getAlarmServiceSPI() { AlarmServiceFacade service = null; if (context != null) { diff --git a/fcapsmanager/countermanager/src/main/java/org/opendaylight/genius/fcapsmanager/countermanager/Poller.java b/fcapsmanager/countermanager/src/main/java/org/opendaylight/genius/fcapsmanager/countermanager/Poller.java index bafaf9da6..a4588a17b 100644 --- a/fcapsmanager/countermanager/src/main/java/org/opendaylight/genius/fcapsmanager/countermanager/Poller.java +++ b/fcapsmanager/countermanager/src/main/java/org/opendaylight/genius/fcapsmanager/countermanager/Poller.java @@ -7,6 +7,7 @@ */ package org.opendaylight.genius.fcapsmanager.countermanager; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.lang.management.ManagementFactory; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; @@ -46,6 +47,8 @@ public class Poller { /** * Platform dependent bundle injects its handle and it is retrieved in the method. */ + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private PMServiceFacade getPMServiceSPI() { PMServiceFacade service = null; if (bundleContext != null) { diff --git a/fcapsmanager/pom.xml b/fcapsmanager/pom.xml index c677438b6..2639c03ea 100644 --- a/fcapsmanager/pom.xml +++ b/fcapsmanager/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/features/genius-features/pom.xml b/features/genius-features/pom.xml index 13c3a9743..0107f4bd5 100644 --- a/features/genius-features/pom.xml +++ b/features/genius-features/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent feature-repo-parent - 5.0.2 + 6.0.0 diff --git a/features/odl-genius-api/pom.xml b/features/odl-genius-api/pom.xml index d3d557716..8811dd80a 100644 --- a/features/odl-genius-api/pom.xml +++ b/features/odl-genius-api/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 5.0.2 + 6.0.0 @@ -27,7 +27,7 @@ org.opendaylight.mdsal mdsal-artifacts - 4.0.6 + 5.0.3 import pom diff --git a/features/odl-genius-api/src/main/feature/feature.xml b/features/odl-genius-api/src/main/feature/feature.xml index d1d06be23..68914ceb4 100644 --- a/features/odl-genius-api/src/main/feature/feature.xml +++ b/features/odl-genius-api/src/main/feature/feature.xml @@ -8,6 +8,6 @@ --> - odl-apache-commons-net + odl-apache-commons-net diff --git a/features/odl-genius-fcaps-application/pom.xml b/features/odl-genius-fcaps-application/pom.xml index a16f6334d..420368983 100644 --- a/features/odl-genius-fcaps-application/pom.xml +++ b/features/odl-genius-fcaps-application/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 5.0.2 + 6.0.0 diff --git a/features/odl-genius-fcaps-framework/pom.xml b/features/odl-genius-fcaps-framework/pom.xml index 9822fff16..16e1bef8a 100644 --- a/features/odl-genius-fcaps-framework/pom.xml +++ b/features/odl-genius-fcaps-framework/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 5.0.2 + 6.0.0 diff --git a/features/odl-genius-rest/pom.xml b/features/odl-genius-rest/pom.xml index b594dc695..be2ba05d0 100644 --- a/features/odl-genius-rest/pom.xml +++ b/features/odl-genius-rest/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 5.0.2 + 6.0.0 diff --git a/features/odl-genius/pom.xml b/features/odl-genius/pom.xml index 5e43f0753..bef7502b0 100644 --- a/features/odl-genius/pom.xml +++ b/features/odl-genius/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 5.0.2 + 6.0.0 diff --git a/features/pom.xml b/features/pom.xml index 69e0ca2de..e5197b04f 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 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 8debd034b..f0c032248 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 @@ -87,6 +87,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -177,16 +178,17 @@ public class IdManager implements IdManagerService, IdManagerMonitor { public boolean updateLocalIdPoolCache(IdPool idPool, String parentPoolName) { AvailableIdsHolder availableIdsHolder = idPool.getAvailableIdsHolder(); - AvailableIdHolder availableIdHolder = new AvailableIdHolder(idUtils, availableIdsHolder.getStart(), - availableIdsHolder.getEnd()); + AvailableIdHolder availableIdHolder = new AvailableIdHolder(idUtils, availableIdsHolder.getStart().toJava(), + availableIdsHolder.getEnd().toJava()); availableIdHolder.setCur(availableIdsHolder.getCursor()); ReleasedIdsHolder releasedIdsHolder = idPool.getReleasedIdsHolder(); - ReleasedIdHolder releasedIdHolder = new ReleasedIdHolder(idUtils, releasedIdsHolder.getDelayedTimeSec()); - releasedIdHolder.setAvailableIdCount(releasedIdsHolder.getAvailableIdCount()); + ReleasedIdHolder releasedIdHolder = new ReleasedIdHolder(idUtils, + releasedIdsHolder.getDelayedTimeSec().toJava()); + releasedIdHolder.setAvailableIdCount(releasedIdsHolder.getAvailableIdCount().toJava()); List delayedIdEntryInCache = releasedIdsHolder.nonnullDelayedIdEntries() .stream() .map(delayedIdEntry -> new DelayedIdEntry(delayedIdEntry - .getId(), delayedIdEntry.getReadyTimeSec())) + .getId().toJava(), delayedIdEntry.getReadyTimeSec().toJava())) .sorted(comparing(DelayedIdEntry::getReadyTimeSec)) .collect(toCollection(ArrayList::new)); @@ -205,8 +207,8 @@ public class IdManager implements IdManagerService, IdManagerMonitor { @Override public ListenableFuture> createIdPool(CreateIdPoolInput input) { LOG.info("createIdPool called with input {}", input); - long low = input.getLow(); - long high = input.getHigh(); + long low = input.getLow().toJava(); + long high = input.getHigh().toJava(); long blockSize = idUtils.computeBlockSize(low, high); return FutureRpcResults.fromListenableFuture(LOG, "createIdPool", input, () -> { String poolName = input.getPoolName().intern(); @@ -234,13 +236,13 @@ public class IdManager implements IdManagerService, IdManagerMonitor { return FutureRpcResults.fromBuilder(LOG, "allocateId", input, () -> { String localPoolName = idUtils.getLocalPoolName(poolName); // allocateIdFromLocalPool method returns a list of IDs with one element. This element is obtained by get(0) - long newIdValue = allocateIdFromLocalPool(poolName, localPoolName, idKey, 1).get(0); + long newIdValue = allocateIdFromLocalPool(poolName, localPoolName, idKey, 1).get(0).toJava(); return new AllocateIdOutputBuilder().setIdValue(newIdValue); }).onFailure(e -> completeExceptionallyIfPresent(poolName, idKey, e)).build(); } private void completeExceptionallyIfPresent(String poolName, String idKey, Throwable exception) { - CompletableFuture> completableFuture = + CompletableFuture> completableFuture = idUtils.removeAllocatedIds(idUtils.getUniqueKey(poolName, idKey)); if (completableFuture != null) { completableFuture.completeExceptionally(exception); @@ -251,11 +253,11 @@ public class IdManager implements IdManagerService, IdManagerMonitor { public ListenableFuture> allocateIdRange(AllocateIdRangeInput input) { String idKey = input.getIdKey(); String poolName = input.getPoolName(); - long size = input.getSize(); + long size = input.getSize().toJava(); String localPoolName = idUtils.getLocalPoolName(poolName); AllocateIdRangeOutputBuilder output = new AllocateIdRangeOutputBuilder(); return FutureRpcResults.fromBuilder(LOG, "allocateIdRange", input, () -> { - List newIdValuesList = allocateIdFromLocalPool(poolName, localPoolName, idKey, size); + List newIdValuesList = allocateIdFromLocalPool(poolName, localPoolName, idKey, size); Collections.sort(newIdValuesList); output.setIdValues(newIdValuesList); return output; @@ -301,12 +303,12 @@ public class IdManager implements IdManagerService, IdManagerMonitor { }).build(); } - private List allocateIdFromLocalPool(String parentPoolName, String localPoolName, + private List allocateIdFromLocalPool(String parentPoolName, String localPoolName, String idKey, long size) throws OperationFailedException, IdManagerException { LOG.debug("Allocating id from local pool {}. Parent pool {}. Idkey {}", localPoolName, parentPoolName, idKey); String uniqueIdKey = idUtils.getUniqueKey(parentPoolName, idKey); - CompletableFuture> futureIdValues = new CompletableFuture<>(); - CompletableFuture> existingFutureIdValue = + CompletableFuture> futureIdValues = new CompletableFuture<>(); + CompletableFuture> existingFutureIdValue = idUtils.putAllocatedIdsIfAbsent(uniqueIdKey, futureIdValues); if (existingFutureIdValue != null) { try { @@ -318,7 +320,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { } } try { - List newIdValuesList = checkForIdInIdEntries(parentPoolName, idKey, uniqueIdKey, futureIdValues, + List newIdValuesList = checkForIdInIdEntries(parentPoolName, idKey, uniqueIdKey, futureIdValues, false); if (!newIdValuesList.isEmpty()) { return newIdValuesList; @@ -330,7 +332,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { localPoolName = localPoolName.intern(); if (size == 1) { newIdValue = getIdFromLocalPoolCache(localIdPool, parentPoolName); - newIdValuesList.add(newIdValue); + newIdValuesList.add(Uint32.valueOf(newIdValue)); } else { getRangeOfIds(parentPoolName, localPoolName, size, newIdValuesList, localIdPool, newIdValue); } @@ -418,13 +420,19 @@ public class IdManager implements IdManagerService, IdManagerMonitor { private long allocateIdBlockFromParentPool(IdLocalPool localPoolCache, IdPool parentIdPool, TypedWriteTransaction confTx) throws OperationFailedException, IdManagerException { - long idCount; + + long idCount = allocateIdBlockFromAvailableIdsHolder(localPoolCache, parentIdPool, confTx); + if (idCount > 0) { + return idCount; + } + ReleasedIdsHolderBuilder releasedIdsBuilderParent = IdUtils.getReleaseIdsHolderBuilder(parentIdPool); + final List delayedEntries = releasedIdsBuilderParent.getDelayedIdEntries(); + if (delayedEntries != null) { + releasedIdsBuilderParent.setDelayedIdEntries(new ArrayList<>(delayedEntries)); + } + while (true) { - idCount = allocateIdBlockFromAvailableIdsHolder(localPoolCache, parentIdPool, confTx); - if (idCount > 0) { - return idCount; - } idCount = allocateIdBlockFromReleasedIdsHolder(localPoolCache, releasedIdsBuilderParent, parentIdPool, confTx); if (idCount > 0) { @@ -437,6 +445,11 @@ public class IdManager implements IdManagerService, IdManagerMonitor { } throw new IdManagerException(String.format("Ids exhausted for pool : %s", parentIdPool.getPoolName())); } + + idCount = allocateIdBlockFromAvailableIdsHolder(localPoolCache, parentIdPool, confTx); + if (idCount > 0) { + return idCount; + } } } @@ -448,7 +461,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { childPoolsList.sort(comparing(ChildPools::getLastAccessTime)); long currentTime = System.currentTimeMillis() / 1000; for (ChildPools childPools : childPoolsList) { - if (childPools.getLastAccessTime() + DEFAULT_IDLE_TIME > currentTime) { + if (childPools.getLastAccessTime().toJava() + DEFAULT_IDLE_TIME > currentTime) { break; } if (!Objects.equals(childPools.getChildPoolName(), idUtils.getLocalPoolName(parentIdPool.getPoolName()))) { @@ -475,7 +488,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { long totalAvailableIdCount = releasedIds.getDelayedIdEntries().size() + idUtils.getAvailableIdsCount(availableIds); - long count = releasedIdsBuilderParent.getAvailableIdCount() + totalAvailableIdCount; + long count = releasedIdsBuilderParent.getAvailableIdCount().toJava() + totalAvailableIdCount; releasedIdsBuilderParent.setDelayedIdEntries(delayedIdEntriesParent).setAvailableIdCount(count); singleTxDB.syncUpdate(LogicalDatastoreType.CONFIGURATION, idPoolInstanceIdentifier, new IdPoolBuilder().withKey(new IdPoolKey(otherChildPool.getPoolName())) @@ -490,19 +503,19 @@ public class IdManager implements IdManagerService, IdManagerMonitor { private long allocateIdBlockFromReleasedIdsHolder(IdLocalPool localIdPool, ReleasedIdsHolderBuilder releasedIdsBuilderParent, IdPool parentIdPool, TypedWriteTransaction confTx) { - if (releasedIdsBuilderParent.getAvailableIdCount() == 0) { + if (releasedIdsBuilderParent.getAvailableIdCount().toJava() == 0) { LOG.debug("Ids unavailable in releasedIds of parent pool {}", parentIdPool); return 0; } List delayedIdEntriesParent = releasedIdsBuilderParent.getDelayedIdEntries(); - int idCount = Math.min(delayedIdEntriesParent.size(), parentIdPool.getBlockSize()); + int idCount = Math.min(delayedIdEntriesParent.size(), parentIdPool.getBlockSize().toJava()); List idEntriesToBeRemoved = delayedIdEntriesParent.subList(0, idCount); ReleasedIdHolder releasedIds = (ReleasedIdHolder) localIdPool.getReleasedIds(); List delayedIdEntriesLocalCache = releasedIds.getDelayedEntries(); List delayedIdEntriesFromParentPool = idEntriesToBeRemoved .stream() .map(delayedIdEntry -> new DelayedIdEntry(delayedIdEntry - .getId(), delayedIdEntry.getReadyTimeSec())) + .getId().toJava(), delayedIdEntry.getReadyTimeSec().toJava())) .sorted(comparing(DelayedIdEntry::getReadyTimeSec)) .collect(toCollection(ArrayList::new)); delayedIdEntriesFromParentPool.addAll(delayedIdEntriesLocalCache); @@ -514,7 +527,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { InstanceIdentifier releasedIdsHolderInstanceIdentifier = InstanceIdentifier .builder(IdPools.class).child(IdPool.class, new IdPoolKey(parentIdPool.getPoolName())).child(ReleasedIdsHolder.class).build(); - releasedIdsBuilderParent.setAvailableIdCount(releasedIdsBuilderParent.getAvailableIdCount() - idCount); + releasedIdsBuilderParent.setAvailableIdCount(releasedIdsBuilderParent.getAvailableIdCount().toJava() - idCount); LOG.debug("Allocated {} ids from releasedIds of parent pool {}", idCount, parentIdPool); confTx.merge(releasedIdsHolderInstanceIdentifier, releasedIdsBuilderParent.build(), CREATE_MISSING_PARENTS); return idCount; @@ -524,7 +537,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { TypedWriteTransaction confTx) { long idCount = 0; AvailableIdsHolderBuilder availableIdsBuilderParent = idUtils.getAvailableIdsHolderBuilder(parentIdPool); - long end = availableIdsBuilderParent.getEnd(); + long end = availableIdsBuilderParent.getEnd().toJava(); long cur = availableIdsBuilderParent.getCursor(); if (!idUtils.isIdAvailable(availableIdsBuilderParent)) { if (LOG.isDebugEnabled()) { @@ -533,7 +546,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { return idCount; } // Update availableIdsHolder of Local Pool - idCount = Math.min(end - cur, parentIdPool.getBlockSize()); + idCount = Math.min(end - cur, parentIdPool.getBlockSize().toJava()); AvailableIdHolder availableIds = new AvailableIdHolder(idUtils, cur + 1, cur + idCount); localIdPool.setAvailableIds(availableIds); // Update availableIdsHolder of Global Pool @@ -581,15 +594,15 @@ public class IdManager implements IdManagerService, IdManagerMonitor { idKey, parentPoolName)); } IdEntries existingIdEntry = existingIdEntryObject.get(); - List idValuesList = nonnull(existingIdEntry.getIdValue()); + List idValuesList = nonnull(existingIdEntry.getIdValue()); IdLocalPool localIdPoolCache = localPool.get(parentPoolName); - boolean isRemoved = idEntries.remove(existingIdEntry); + boolean isRemoved = idEntries.contains(existingIdEntry); LOG.debug("The entry {} is removed {}", existingIdEntry, isRemoved); updateDelayedEntriesInLocalCache(idValuesList, parentPoolName, localIdPoolCache); IdHolderSyncJob poolSyncJob = new IdHolderSyncJob(localPoolName, localIdPoolCache.getReleasedIds(), txRunner, idUtils); jobCoordinator.enqueueJob(localPoolName, poolSyncJob, IdUtils.RETRY_COUNT); - scheduleCleanUpTask(localIdPoolCache, parentPoolName, parentIdPool.getBlockSize()); + scheduleCleanUpTask(localIdPoolCache, parentPoolName, parentIdPool.getBlockSize().toJava()); LOG.debug("Released id ({}, {}) from pool {}", idKey, idValuesList, localPoolName); // Updating id entries in the parent pool. This will be used for restart scenario UpdateIdEntryJob job = new UpdateIdEntryJob(parentPoolName, localPoolName, idKey, null, txRunner, idUtils, @@ -645,7 +658,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { String parentPool = idPool.getPoolName(); localPool.put(parentPool, idLocalPool); LocalPoolCreateJob job = new LocalPoolCreateJob(idLocalPool, txRunner, idPool.getPoolName(), - idPool.getBlockSize(), idUtils); + idPool.getBlockSize().toJava(), idUtils); jobCoordinator.enqueueJob(localPoolName, job, IdUtils.RETRY_COUNT); return idLocalPool; } @@ -664,21 +677,21 @@ public class IdManager implements IdManagerService, IdManagerMonitor { } } - private void updateDelayedEntriesInLocalCache(List idsList, String parentPoolName, + private void updateDelayedEntriesInLocalCache(List idsList, String parentPoolName, IdLocalPool localPoolCache) { - for (long idValue : idsList) { - localPoolCache.getReleasedIds().addId(idValue); + for (Uint32 idValue : idsList) { + localPoolCache.getReleasedIds().addId(idValue.toJava()); } localPool.put(parentPoolName, localPoolCache); } - private List checkForIdInIdEntries(String parentPoolName, String idKey, String uniqueIdKey, - CompletableFuture> futureIdValues, boolean hasExistingFutureIdValues) + private List checkForIdInIdEntries(String parentPoolName, String idKey, String uniqueIdKey, + CompletableFuture> futureIdValues, boolean hasExistingFutureIdValues) throws IdManagerException, ReadFailedException { InstanceIdentifier parentIdPoolInstanceIdentifier = idUtils.getIdPoolInstance(parentPoolName); InstanceIdentifier existingId = idUtils.getIdEntry(parentIdPoolInstanceIdentifier, idKey); idUtils.lock(lockManager, uniqueIdKey); - List newIdValuesList = new ArrayList<>(); + List newIdValuesList = new ArrayList<>(); Optional existingIdEntry = singleTxDB.syncReadOptional(LogicalDatastoreType.CONFIGURATION, existingId); if (existingIdEntry.isPresent()) { @@ -744,7 +757,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { return localIdPool; } - private void getRangeOfIds(String parentPoolName, String localPoolName, long size, List newIdValuesList, + private void getRangeOfIds(String parentPoolName, String localPoolName, long size, List newIdValuesList, IdLocalPool localIdPool, long newIdValue) throws ReadFailedException, IdManagerException { InstanceIdentifier parentIdPoolInstanceIdentifier1 = idUtils.getIdPoolInstance(parentPoolName); IdPool parentIdPool = singleTxDB.syncRead(LogicalDatastoreType.CONFIGURATION, parentIdPoolInstanceIdentifier1); @@ -752,7 +765,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { + localIdPool.getReleasedIds().getAvailableIdCount(); AvailableIdsHolderBuilder availableParentIds = idUtils.getAvailableIdsHolderBuilder(parentIdPool); ReleasedIdsHolderBuilder releasedParentIds = IdUtils.getReleaseIdsHolderBuilder(parentIdPool); - totalAvailableIdCount = totalAvailableIdCount + releasedParentIds.getAvailableIdCount() + totalAvailableIdCount = totalAvailableIdCount + releasedParentIds.getAvailableIdCount().toJava() + idUtils.getAvailableIdsCount(availableParentIds); if (totalAvailableIdCount > size) { while (size > 0) { @@ -768,7 +781,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor { // available IDs. updateDelayedEntriesInLocalCache(newIdValuesList, parentPoolName, localIdPool); } - newIdValuesList.add(newIdValue); + newIdValuesList.add(Uint32.valueOf(newIdValue)); size--; } } else { 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 3bf4eda00..c733d6428 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 @@ -52,6 +52,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutput; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +66,7 @@ public class IdUtils { private static final int DEFAULT_BLOCK_SIZE_DIFF = 10; public static final int RETRY_COUNT = 6; - private final ConcurrentHashMap>> allocatedIdMap = new ConcurrentHashMap<>(); + private final ConcurrentHashMap>> allocatedIdMap = new ConcurrentHashMap<>(); private final ConcurrentHashMap releaseIdLatchMap = new ConcurrentHashMap<>(); private final ConcurrentHashMap poolUpdatedMap = new ConcurrentHashMap<>(); @@ -75,12 +76,12 @@ public class IdUtils { bladeId = InetAddresses.coerceToInteger(InetAddress.getLocalHost()); } - public CompletableFuture> removeAllocatedIds(String uniqueIdKey) { + public CompletableFuture> removeAllocatedIds(String uniqueIdKey) { return allocatedIdMap.remove(uniqueIdKey); } - public CompletableFuture> putAllocatedIdsIfAbsent(String uniqueIdKey, - CompletableFuture> futureIdValues) { + public CompletableFuture> putAllocatedIdsIfAbsent(String uniqueIdKey, + CompletableFuture> futureIdValues) { return allocatedIdMap.putIfAbsent(uniqueIdKey, futureIdValues); } @@ -102,7 +103,7 @@ public class IdUtils { return idEntriesBuilder.build(); } - public IdEntries createIdEntries(String idKey, List newIdVals) { + public IdEntries createIdEntries(String idKey, List newIdVals) { return new IdEntriesBuilder().withKey(new IdEntriesKey(idKey)) .setIdKey(idKey).setIdValue(newIdVals).build(); } @@ -150,7 +151,7 @@ public class IdUtils { protected boolean isIdAvailable(AvailableIdsHolderBuilder availableIds) { if (availableIds.getCursor() != null && availableIds.getEnd() != null) { - return availableIds.getCursor() < availableIds.getEnd(); + return availableIds.getCursor() < availableIds.getEnd().toJava(); } return false; } @@ -203,7 +204,7 @@ public class IdUtils { .setReadyTimeSec(System.currentTimeMillis() / 1000).build(); existingDelayedIdEntriesInParent.add(delayedIdEntries); } - long availableIdCountParent = releasedIdsParent.getAvailableIdCount(); + long availableIdCountParent = releasedIdsParent.getAvailableIdCount().toJava(); releasedIdsParent.setDelayedIdEntries(existingDelayedIdEntriesInParent) .setAvailableIdCount(availableIdCountParent + idCountToBeFreed); } @@ -235,7 +236,7 @@ public class IdUtils { public long getAvailableIdsCount(AvailableIdsHolderBuilder availableIds) { if (availableIds != null && isIdAvailable(availableIds)) { - return availableIds.getEnd() - availableIds.getCursor(); + return availableIds.getEnd().toJava() - availableIds.getCursor(); } return 0; } diff --git a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/UpdateIdEntryJob.java b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/UpdateIdEntryJob.java index 9d4664a77..d60dd7712 100644 --- a/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/UpdateIdEntryJob.java +++ b/idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/jobs/UpdateIdEntryJob.java @@ -13,6 +13,7 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; 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; @@ -25,6 +26,7 @@ import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.infrautils.utils.concurrent.Executors; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.IdEntries; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,13 +40,13 @@ public class UpdateIdEntryJob implements Callable>> private final String parentPoolName; private final String localPoolName; private final String idKey; - private final List newIdValues = new ArrayList<>(); + private final List newIdValues = new ArrayList<>(); private final ManagedNewTransactionRunner txRunner; private final IdUtils idUtils; private final LockManagerService lockManager; public UpdateIdEntryJob(String parentPoolName, String localPoolName, String idKey, - List newIdValues, ManagedNewTransactionRunner txRunner, IdUtils idUtils, + List newIdValues, ManagedNewTransactionRunner txRunner, IdUtils idUtils, LockManagerService lockManager) { this.parentPoolName = parentPoolName; this.localPoolName = localPoolName; @@ -82,6 +84,8 @@ public class UpdateIdEntryJob implements Callable>> return Collections.singletonList(future); } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void cleanUp() { String uniqueIdKey = idUtils.getUniqueKey(parentPoolName, idKey); CountDownLatch latch = idUtils.getReleaseIdLatch(uniqueIdKey); diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdFromReleasedId.xtend b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdFromReleasedId.xtend index 6dc289891..3cb8abb81 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdFromReleasedId.xtend +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdFromReleasedId.xtend @@ -14,6 +14,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.IdEntriesBuilder 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.idmanager.rev160406.released.ids.DelayedIdEntriesBuilder +import org.opendaylight.yangtools.yang.common.Uint32; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan @@ -40,13 +41,13 @@ class ExpectedAllocateIdFromReleasedId { new IdEntriesBuilder >> [ idKey = "test-key1" idValue = #[ - 1L + Uint32.valueOf(1L) ] ], new IdEntriesBuilder >> [ idKey = "test-key2" idValue = #[ - 0L + Uint32.valueOf(0L) ] ] ] diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromAvailableIds.xtend b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromAvailableIds.xtend index 02e9949a2..00416e5e8 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromAvailableIds.xtend +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromAvailableIds.xtend @@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ChildPoolsBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.IdEntriesBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolderBuilder +import org.opendaylight.yangtools.yang.common.Uint32; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan @@ -39,19 +40,19 @@ class ExpectedAllocateIdMultipleRequestsFromAvailableIds { new IdEntriesBuilder >> [ idKey = "test-key10" idValue = #[ - 1L + Uint32.valueOf(1L) ] ], new IdEntriesBuilder >> [ idKey = "test-key12" idValue = #[ - 0L + Uint32.valueOf(0L) ] ], new IdEntriesBuilder >> [ idKey = "test-key11" idValue = #[ - 2L + Uint32.valueOf(2L) ] ] ] @@ -81,4 +82,4 @@ class ExpectedAllocateIdMultipleRequestsFromAvailableIds { ] ] } -} \ No newline at end of file +} diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromReleaseIds.xtend b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromReleaseIds.xtend index 813f7f39c..0827d5a9d 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromReleaseIds.xtend +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdMultipleRequestsFromReleaseIds.xtend @@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ChildPoolsBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.IdEntriesBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolderBuilder +import org.opendaylight.yangtools.yang.common.Uint32; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan @@ -39,25 +40,25 @@ class ExpectedAllocateIdMultipleRequestsFromReleaseIds { new IdEntriesBuilder >> [ idKey = "test-key1" idValue = #[ - 0L + Uint32.valueOf(0L) ] ], new IdEntriesBuilder >> [ idKey = "test-key12" idValue = #[ - 3L + Uint32.valueOf(3L) ] ], new IdEntriesBuilder >> [ idKey = "test-key11" idValue = #[ - 2L + Uint32.valueOf(2L) ] ], new IdEntriesBuilder >> [ idKey = "test-key10" idValue = #[ - 1L + Uint32.valueOf(1L) ] ] ] diff --git a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdObjects.xtend b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdObjects.xtend index 8590d6b5e..33f605705 100644 --- a/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdObjects.xtend +++ b/idmanager/idmanager-impl/src/test/java/org/opendaylight/genius/idmanager/test/ExpectedAllocateIdObjects.xtend @@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ChildPoolsBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.IdEntriesBuilder import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolderBuilder +import org.opendaylight.yangtools.yang.common.Uint32; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan @@ -44,7 +45,7 @@ class ExpectedAllocateIdObjects { new IdEntriesBuilder >> [ idKey = "test-key1" idValue = #[ - 0L + Uint32.valueOf(0L) ] ] ] @@ -69,4 +70,4 @@ class ExpectedAllocateIdObjects { ] ] } -} \ No newline at end of file +} 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 473eb2342..559558367 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 @@ -326,7 +326,7 @@ public class IdManagerTest { new AllocateIdInputBuilder().setPoolName(ID_POOL_NAME).setIdKey(idKey).build()); try { if (result.get().isSuccessful()) { - Long idValue = result.get().getResult().getIdValue(); + Long idValue = result.get().getResult().getIdValue().toJava(); idSet.add(idValue); if (idValue > ID_LOW + BLOCK_SIZE) { exceptionInExecutorAtomic.set(new AssertionFailedError("idValue <= ID_LOW + BLOCK_SIZE")); diff --git a/idmanager/pom.xml b/idmanager/pom.xml index cbe7695fa..c55982639 100644 --- a/idmanager/pom.xml +++ b/idmanager/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/IfmConstants.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/IfmConstants.java index 8c73712b0..44604a9b5 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/IfmConstants.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/IfmConstants.java @@ -7,9 +7,9 @@ */ package org.opendaylight.genius.interfacemanager.globals; -import java.math.BigInteger; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; +import org.opendaylight.yangtools.yang.common.Uint64; public final class IfmConstants { @@ -25,7 +25,6 @@ public final class IfmConstants { public static final int FLOW_TABLE_MISS_PRIORITY = 0; public static final int DEFAULT_ARP_FLOW_PRIORITY = 100; public static final int INVALID_PORT_NO = -1; - public static final BigInteger INVALID_DPID = new BigInteger("-1"); // Id pool public static final String IFM_IDPOOL_NAME = "interfaces"; @@ -40,8 +39,8 @@ public final class IfmConstants { // Table public static final long DELAY_TIME_IN_MILLISECOND = 10000; // Cookies - public static final BigInteger COOKIE_L3_BASE = new BigInteger("8000000", 16); - public static final BigInteger COOKIE_EGRESS_DISPATCHER_TABLE = new BigInteger("1300000", 16); + public static final Uint64 COOKIE_L3_BASE = Uint64.valueOf("8000000", 16).intern(); + public static final Uint64 COOKIE_EGRESS_DISPATCHER_TABLE = Uint64.valueOf("1300000", 16).intern(); // Tunnel Monitoring public static final int DEFAULT_MONITOR_INTERVAL = 10000; diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceInfo.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceInfo.java index f973a785e..209e689b9 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceInfo.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/InterfaceInfo.java @@ -9,8 +9,9 @@ package org.opendaylight.genius.interfacemanager.globals; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.Serializable; -import java.math.BigInteger; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; +import org.opendaylight.yangtools.yang.common.Uint64; public class InterfaceInfo implements Serializable { @@ -48,7 +49,7 @@ public class InterfaceInfo implements Serializable { protected InterfaceType interfaceType; protected int interfaceTag; - protected BigInteger dpId = IfmConstants.INVALID_DPID; + protected Uint64 dpId; protected InterfaceAdminState adminState = InterfaceAdminState.ENABLED; protected InterfaceOpState opState; protected long groupId; @@ -59,7 +60,7 @@ public class InterfaceInfo implements Serializable { protected boolean isUntaggedVlan; protected String macAddress; - public InterfaceInfo(BigInteger dpId, String portName) { + public InterfaceInfo(Uint64 dpId, String portName) { this.dpId = dpId; this.portName = portName; } @@ -104,14 +105,14 @@ public class InterfaceInfo implements Serializable { return isUntaggedVlan; } - // "Confusing to have methods getDpId() and BridgeEntryBuilder.getDpid" - BridgeEntryBuilder is generated so can't - // change it. - @SuppressFBWarnings("NM_CONFUSING") - public BigInteger getDpId() { + @SuppressFBWarnings(value = "NM_CONFUSING", + justification = "'Confusing to have methods getDpId() and BridgeEntryBuilder.getDpid'" + + " - BridgeEntryBuilder is generated so cannot change it.") + public @Nullable Uint64 getDpId() { return dpId; } - public void setDpId(BigInteger dpId) { + public void setDpId(Uint64 dpId) { this.dpId = dpId; } 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 4b6375269..f5e8befb9 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 @@ -5,11 +5,9 @@ * 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.interfacemanager.globals; import com.google.common.base.Optional; -import java.math.BigInteger; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; @@ -42,6 +40,7 @@ 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.Uint64; public final class InterfaceServiceUtil { @@ -55,7 +54,7 @@ public final class InterfaceServiceUtil { */ @Deprecated public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, int servicePriority, - BigInteger cookie, List instructions) { + Uint64 cookie, List instructions) { return buildServiceInfo(serviceName, servicePriority); } @@ -66,7 +65,7 @@ public final class InterfaceServiceUtil { */ @Deprecated public static ServicesInfo buildServiceInfo(String serviceName, short serviceIndex, int servicePriority, - BigInteger cookie) { + Uint64 cookie) { return buildServiceInfo(serviceName, servicePriority); } @@ -79,7 +78,7 @@ public final class InterfaceServiceUtil { } public static BoundServices getBoundServices(String serviceName, short servicePriority, int flowPriority, - BigInteger cookie, List instructions) { + Uint64 cookie, List instructions) { StypeOpenflowBuilder augBuilder = new StypeOpenflowBuilder().setFlowCookie(cookie).setFlowPriority(flowPriority) .setInstruction(instructions); return new BoundServicesBuilder().withKey(new BoundServicesKey(servicePriority)).setServiceName(serviceName) @@ -87,7 +86,7 @@ public final class InterfaceServiceUtil { .addAugmentation(StypeOpenflow.class, augBuilder.build()).build(); } - public static List getMatchInfoForVlanLPort(BigInteger dpId, long portNo, long vlanId, + public static List getMatchInfoForVlanLPort(Uint64 dpId, long portNo, long vlanId, boolean isVlanTransparent) { List matches = new ArrayList<>(); matches.add(new MatchInPort(dpId, portNo)); @@ -112,9 +111,9 @@ public final class InterfaceServiceUtil { if (match2 instanceof MatchMetadata) { if (match instanceof MatchMetadata) { MatchMetadata metadataMatch = (MatchMetadata) match; - BigInteger value = MetaDataUtil.mergeMetadataValues(((MatchMetadata) match2).getMetadata(), + Uint64 value = MetaDataUtil.mergeMetadataValues(((MatchMetadata) match2).getMetadata(), metadataMatch.getMetadata()); - BigInteger mask = MetaDataUtil.mergeMetadataMask(((MatchMetadata) match2).getMask(), + Uint64 mask = MetaDataUtil.mergeMetadataMask(((MatchMetadata) match2).getMask(), metadataMatch.getMask()); match = new MatchMetadata(value, mask); iter.remove(); @@ -136,7 +135,7 @@ public final class InterfaceServiceUtil { return -1; } - public static Set getStatRequestKeys(BigInteger dpId, short tableId, List matches, String flowId, + public static Set getStatRequestKeys(Uint64 dpId, short tableId, List matches, String flowId, long groupId) { Set statRequestKeys = new HashSet<>(); statRequestKeys.add(getFlowStatisticsKey(dpId, tableId, matches, flowId)); @@ -144,11 +143,11 @@ public final class InterfaceServiceUtil { return statRequestKeys; } - public static GroupInfoKey getGroupStatisticsKey(BigInteger dpId, long groupId) { + public static GroupInfoKey getGroupStatisticsKey(Uint64 dpId, long groupId) { return new GroupInfoKey(dpId, groupId); } - public static FlowInfoKey getFlowStatisticsKey(BigInteger dpId, short tableId, List matches, + public static FlowInfoKey getFlowStatisticsKey(Uint64 dpId, short tableId, List matches, String flowId) { return new FlowInfoKey(dpId, tableId, MDSALUtil.buildMatches(matches), flowId); } diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/LogicalGroupInterfaceInfo.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/LogicalGroupInterfaceInfo.java index 9fed2d2aa..f767c26e4 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/LogicalGroupInterfaceInfo.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/LogicalGroupInterfaceInfo.java @@ -7,8 +7,8 @@ */ package org.opendaylight.genius.interfacemanager.globals; -import java.math.BigInteger; import java.util.List; +import org.opendaylight.yangtools.yang.common.Uint64; public class LogicalGroupInterfaceInfo extends InterfaceInfo { private static final long serialVersionUID = 1L; @@ -16,7 +16,7 @@ public class LogicalGroupInterfaceInfo extends InterfaceInfo { // interface between a pair of DPNs private final List parentInterfaceNames; - public LogicalGroupInterfaceInfo(String portName, BigInteger srcDpId, List parentInterfaces) { + public LogicalGroupInterfaceInfo(String portName, Uint64 srcDpId, List parentInterfaces) { super(srcDpId, portName); this.parentInterfaceNames = parentInterfaces; } diff --git a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/VlanInterfaceInfo.java b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/VlanInterfaceInfo.java index f862cbfc3..78e2e4e5a 100644 --- a/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/VlanInterfaceInfo.java +++ b/interfacemanager/interfacemanager-api/src/main/java/org/opendaylight/genius/interfacemanager/globals/VlanInterfaceInfo.java @@ -7,15 +7,17 @@ */ package org.opendaylight.genius.interfacemanager.globals; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; +// FIXME: This class should follow builder pattern to support proper lifecycle public class VlanInterfaceInfo extends InterfaceInfo { - private static final long serialVersionUID = 1L; + private short vlanId; + private boolean isVlanTransparent; - public VlanInterfaceInfo(BigInteger dpId, String portName, short vlanId) { + public VlanInterfaceInfo(Uint64 dpId, String portName, short vlanId) { super(dpId, portName); this.vlanId = vlanId; } 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 d08acde41..70d205fcb 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 @@ -5,14 +5,11 @@ * 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.interfacemanager.interfaces; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; 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 org.opendaylight.genius.infra.Datastore.Configuration; @@ -30,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re 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.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; public interface IInterfaceManager { @@ -37,11 +35,11 @@ public interface IInterfaceManager { Long getPortForInterface(Interface intf); - BigInteger getDpnForInterface(String ifName); + Uint64 getDpnForInterface(String ifName); - BigInteger getDpnForInterface(Interface intrf); + Uint64 getDpnForInterface(Interface intrf); - String getEndpointIpForDpn(BigInteger dpnId); + String getEndpointIpForDpn(Uint64 dpnId); List getInterfaceEgressActions(String ifName); @@ -84,7 +82,7 @@ public interface IInterfaceManager { * @deprecated Use {@link #createVLANInterface(String, String, Integer, String, IfL2vlan.L2vlanMode)}. */ @Deprecated - void createVLANInterface(String interfaceName, String portName, BigInteger dpId, Integer vlanId, String description, + void createVLANInterface(String interfaceName, String portName, Uint64 dpId, Integer vlanId, String description, IfL2vlan.L2vlanMode l2vlanMode) throws InterfaceAlreadyExistsException; ListenableFuture createVLANInterface(String interfaceName, String portName, Integer vlanId, @@ -97,7 +95,7 @@ public interface IInterfaceManager { * @deprecated Use {@link #createVLANInterface(String, String, Integer, String, IfL2vlan.L2vlanMode, boolean)}. */ @Deprecated - void createVLANInterface(String interfaceName, String portName, BigInteger dpId, Integer vlanId, String description, + void createVLANInterface(String interfaceName, String portName, Uint64 dpId, Integer vlanId, String description, IfL2vlan.L2vlanMode l2vlanMode, boolean isExternal) throws InterfaceAlreadyExistsException; ListenableFuture createVLANInterface(String interfaceName, String portName, Integer vlanId, @@ -176,12 +174,12 @@ public interface IInterfaceManager { OvsdbBridgeAugmentation getOvsdbBridgeForNodeIid(InstanceIdentifier nodeIid); - List getPortsOnBridge(BigInteger dpnId); + List getPortsOnBridge(Uint64 dpnId); - List getTunnelPortsOnBridge(BigInteger dpnId); + List getTunnelPortsOnBridge(Uint64 dpnId); Map, List> - getPortsOnBridgeByType(BigInteger dpnId); + getPortsOnBridgeByType(Uint64 dpnId); void updateInterfaceParentRef(String interfaceName, String parentInterface); diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmConstants.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmConstants.java index dd73ca5b9..f2c77dc11 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmConstants.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmConstants.java @@ -5,11 +5,12 @@ * 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.interfacemanager; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; +// FIXME: rename this to IfmImplConstants +// FIXME: this should be a final utility class public interface IfmConstants { String IFM_IDPOOL_NAME = "interfaces"; long IFM_ID_POOL_START = 1L; @@ -25,9 +26,9 @@ public interface IfmConstants { long VLAN_GROUP_START = 1000; long TRUNK_GROUP_START = 20000; long LOGICAL_GROUP_START = 100000; - BigInteger COOKIE_VM_LFIB_TABLE = new BigInteger("8000002", 16); + Uint64 COOKIE_VM_LFIB_TABLE = Uint64.valueOf("8000002", 16).intern(); String TUNNEL_TABLE_FLOWID_PREFIX = "TUNNEL."; - BigInteger TUNNEL_TABLE_COOKIE = new BigInteger("9000000", 16); + Uint64 TUNNEL_TABLE_COOKIE = Uint64.valueOf("9000000", 16).intern(); int FLOW_HIGH_PRIORITY = 10; int FLOW_PRIORITY_FOR_UNTAGGED_VLAN = 4; @@ -37,10 +38,10 @@ public interface IfmConstants { int JOB_MAX_RETRIES = 6; long DELAY_TIME_IN_MILLISECOND = 10000; - String DEAD_BEEF_MAC_PREFIX = "DEADBEEF"; + Uint64 DEAD_BEEF_MAC_PREFIX = Uint64.valueOf("DEADBEEF", 16).intern(); String INVALID_MAC = "00:00:00:00:00:00"; String MAC_SEPARATOR = ":"; - Integer MAC_STRING_LENGTH = 17; + int MAC_STRING_LENGTH = INVALID_MAC.length(); long INVALID_PORT_NO = -1; 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 a90ea6413..1970ad782 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 @@ -19,12 +19,12 @@ 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.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; 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; @@ -98,12 +98,13 @@ import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class IfmUtil { - private static final Logger LOG = LoggerFactory.getLogger(IfmUtil.class); + private static final Pattern GENERATE_MAC_PATTERN = Pattern.compile("(.{2})"); private static final int INVALID_ID = 0; private IfmUtil() { @@ -117,8 +118,8 @@ public final class IfmUtil { .put(TunnelTypeLogicalGroup.class, LOGICAL_GROUP_INTERFACE) .build(); - public static BigInteger getDpnFromNodeConnectorId(NodeConnectorId portId) { - return new BigInteger(getDpnStringFromNodeConnectorId(portId)); + public static Uint64 getDpnFromNodeConnectorId(NodeConnectorId portId) { + return Uint64.valueOf(getDpnStringFromNodeConnectorId(portId)); } public static String getDpnStringFromNodeConnectorId(NodeConnectorId portId) { @@ -128,7 +129,7 @@ public final class IfmUtil { return portId.getValue().split(IfmConstants.OF_URI_SEPARATOR)[1]; } - public static BigInteger getDpnFromInterface( + public static Uint64 getDpnFromInterface( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.state.Interface ifState) { NodeConnectorId ncId = getNodeConnectorIdFromInterface(ifState); @@ -156,7 +157,7 @@ public final class IfmUtil { return IfmConstants.INVALID_PORT_NO; } - public static NodeId buildDpnNodeId(BigInteger dpnId) { + public static NodeId buildDpnNodeId(Uint64 dpnId) { return new NodeId(IfmConstants.OF_URI_PREFIX + dpnId); } @@ -328,7 +329,7 @@ public final class IfmUtil { case VXLAN_TRUNK_INTERFACE: if (!isDefaultEgress) { if (tunnelKey != null) { - result.add(new ActionSetFieldTunnelId(actionKeyStart++, BigInteger.valueOf(tunnelKey))); + result.add(new ActionSetFieldTunnelId(actionKeyStart++, Uint64.valueOf(tunnelKey))); } } else { // For OF Tunnels default egress actions need to set tunnelIps @@ -350,7 +351,7 @@ public final class IfmUtil { boolean isVlanTransparent = false; int vlanVid = 0; if (vlanIface != null) { - vlanVid = vlanIface.getVlanId() == null ? 0 : vlanIface.getVlanId().getValue(); + vlanVid = vlanIface.getVlanId() == null ? 0 : vlanIface.getVlanId().getValue().toJava(); isVlanTransparent = vlanIface.getL2vlanMode() == IfL2vlan.L2vlanMode.Transparent; } if (vlanVid != 0 && !isVlanTransparent) { @@ -388,9 +389,9 @@ public final class IfmUtil { return new NodeId(ncId.getValue().substring(0, ncId.getValue().lastIndexOf(':'))); } - public static BigInteger[] mergeOpenflowMetadataWriteInstructions(List instructions) { - BigInteger metadata = new BigInteger("0", 16); - BigInteger metadataMask = new BigInteger("0", 16); + public static Uint64[] mergeOpenflowMetadataWriteInstructions(List instructions) { + Uint64 metadata = Uint64.ZERO; + Uint64 metadataMask = Uint64.ZERO; if (instructions != null && !instructions.isEmpty()) { // check if metadata write instruction is present for (Instruction instruction : instructions) { @@ -400,12 +401,13 @@ public final class IfmUtil { if (actualInstruction instanceof WriteMetadataCase) { WriteMetadataCase writeMetaDataInstruction = (WriteMetadataCase) actualInstruction; WriteMetadata availableMetaData = writeMetaDataInstruction.getWriteMetadata(); - metadata = metadata.or(availableMetaData.getMetadata()); - metadataMask = metadataMask.or(availableMetaData.getMetadataMask()); + metadata = Uint64.fromLongBits(metadata.longValue() | availableMetaData.getMetadata().longValue()); + metadataMask = Uint64.fromLongBits(metadataMask.longValue() + | availableMetaData.getMetadataMask().longValue()); } } } - return new BigInteger[] { metadata, metadataMask }; + return new Uint64[] { metadata, metadataMask }; } public static Integer allocateId(IdManagerService idManager, String poolName, String idKey) { @@ -437,12 +439,12 @@ public final class IfmUtil { } } - public static BigInteger getDpnId(DatapathId datapathId) { + public static Uint64 getDpnId(DatapathId datapathId) { if (datapathId != null) { // Adding logs for a random issue spotted during datapath id // conversion String dpIdStr = datapathId.getValue().replace(":", ""); - return new BigInteger(dpIdStr, 16); + return Uint64.valueOf(dpIdStr, 16); } return null; } @@ -477,7 +479,7 @@ public final class IfmUtil { return interfaceType; } - public static VlanInterfaceInfo getVlanInterfaceInfo(Interface iface, BigInteger dpId) { + public static VlanInterfaceInfo getVlanInterfaceInfo(Interface iface, Uint64 dpId) { short vlanId = 0; String portName = null; IfL2vlan vlanIface = iface.augmentation(IfL2vlan.class); @@ -505,18 +507,20 @@ public final class IfmUtil { return vlanInterfaceInfo; } - public static BigInteger getDeadBeefBytesForMac() { - return new BigInteger("FFFFFFFF", 16).and(new BigInteger(IfmConstants.DEAD_BEEF_MAC_PREFIX, 16)).shiftLeft(16); + public static Uint64 getDeadBeefBytesForMac() { + final long raw = IfmConstants.DEAD_BEEF_MAC_PREFIX.longValue() & 0xFFFFFFFFL; + return Uint64.fromLongBits(raw << 16); } - public static BigInteger fillPortNumberToMac(long portNumber) { - return new BigInteger("FFFF", 16).and(BigInteger.valueOf(portNumber)); + public static Uint64 fillPortNumberToMac(long portNumber) { + return Uint64.fromLongBits(portNumber & 0xFFFF); } public static String generateMacAddress(long portNo) { - String unformattedMAC = getDeadBeefBytesForMac().or(fillPortNumberToMac(portNo)).toString(16); - return unformattedMAC.replaceAll("(.{2})", "$1" + IfmConstants.MAC_SEPARATOR).substring(0, - IfmConstants.MAC_STRING_LENGTH); + final long raw = getDeadBeefBytesForMac().longValue() | fillPortNumberToMac(portNo).longValue(); + return GENERATE_MAC_PATTERN.matcher(Long.toUnsignedString(raw)) + .replaceAll("$1" + IfmConstants.MAC_SEPARATOR) + .substring(0, IfmConstants.MAC_STRING_LENGTH); } public static PhysAddress getPhyAddress(long portNo, FlowCapableNodeConnector flowCapableNodeConnector) { @@ -552,7 +556,7 @@ public final class IfmUtil { BoundServices serviceInfo, Class serviceMode) { LOG.info("Binding Service {} for : {}", serviceInfo.getServiceName(), interfaceName); InstanceIdentifier boundServicesInstanceIdentifier = buildBoundServicesIId( - serviceInfo.getServicePriority(), interfaceName, serviceMode); + serviceInfo.getServicePriority().toJava(), interfaceName, serviceMode); tx.put(boundServicesInstanceIdentifier, serviceInfo, CREATE_MISSING_PARENTS); } 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 2cd19dcc2..0900c2e22 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 @@ -11,7 +11,6 @@ import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CR import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -23,7 +22,6 @@ import java.util.concurrent.Future; 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; @@ -97,6 +95,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -204,7 +203,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { try { RpcResult port = output.get(); if (port.isSuccessful()) { - return port.getResult().getPortno(); + return port.getResult().getPortno().toJava(); } } catch (NullPointerException | InterruptedException | ExecutionException e) { LOG.warn("Exception when getting port for interface", e); @@ -219,7 +218,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { try { RpcResult port = output.get(); if (port.isSuccessful()) { - return port.getResult().getPortno(); + return port.getResult().getPortno().toJava(); } } catch (NullPointerException | InterruptedException | ExecutionException e) { LOG.warn("Exception when getting port for interface", e); @@ -249,11 +248,13 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { interfaceManagerCommonUtils); InterfaceInfo.InterfaceType interfaceType = IfmUtil.getInterfaceType(intf); InterfaceInfo interfaceInfo = new InterfaceInfo(interfaceName); - BigInteger dpId = org.opendaylight.genius.interfacemanager.globals.IfmConstants.INVALID_DPID; Integer portNo = org.opendaylight.genius.interfacemanager.globals.IfmConstants.INVALID_PORT_NO; + final Uint64 dpId; if (ncId != null) { dpId = IfmUtil.getDpnFromNodeConnectorId(ncId); portNo = Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId)); + } else { + dpId = null; } if (interfaceType == InterfaceInfo.InterfaceType.VLAN_INTERFACE) { interfaceInfo = IfmUtil.getVlanInterfaceInfo(intf, dpId); @@ -380,7 +381,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { } @Override - public void createVLANInterface(String interfaceName, String portName, BigInteger dpId, Integer vlanId, + public void createVLANInterface(String interfaceName, String portName, Uint64 dpId, Integer vlanId, String description, IfL2vlan.L2vlanMode l2vlanMode) throws InterfaceAlreadyExistsException { createVLANInterface(interfaceName, portName, vlanId, description, l2vlanMode); } @@ -392,7 +393,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { } @Override - public void createVLANInterface(String interfaceName, String portName, BigInteger dpId, Integer vlanId, + public void createVLANInterface(String interfaceName, String portName, Uint64 dpId, Integer vlanId, String description, IfL2vlan.L2vlanMode l2vlanMode, boolean isExternal) throws InterfaceAlreadyExistsException { createVLANInterface(interfaceName, portName, vlanId, description, l2vlanMode, isExternal); @@ -422,7 +423,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { if (isExternal) { interfaceBuilder.addAugmentation(IfExternal.class, new IfExternalBuilder().setExternal(true).build()); } - InstanceIdentifier interfaceIId = interfaceManagerCommonUtils + InstanceIdentifier interfaceIId = InterfaceManagerCommonUtils .getInterfaceIdentifier(new InterfaceKey(interfaceName)); ListenableFuture future = txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> tx.put(interfaceIId, interfaceBuilder.build(), CREATE_MISSING_PARENTS)); @@ -475,16 +476,17 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { public void unbindService(String interfaceName, Class serviceMode, BoundServices serviceInfo) { IfmUtil.unbindService(txRunner, coordinator, interfaceName, - FlowBasedServicesUtils.buildServiceId(interfaceName, serviceInfo.getServicePriority(), serviceMode)); + FlowBasedServicesUtils.buildServiceId(interfaceName, + serviceInfo.getServicePriority().toJava(), serviceMode)); } @Override - public BigInteger getDpnForInterface(Interface intrf) { + public Uint64 getDpnForInterface(Interface intrf) { return getDpnForInterface(intrf.getName()); } @Override - public BigInteger getDpnForInterface(String ifName) { + public Uint64 getDpnForInterface(String ifName) { GetDpidFromInterfaceInput input = new GetDpidFromInterfaceInputBuilder().setIntfName(ifName).build(); Future> output = interfaceManagerRpcService.getDpidFromInterface(input); try { @@ -499,7 +501,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { } @Override - public String getEndpointIpForDpn(BigInteger dpnId) { + public String getEndpointIpForDpn(Uint64 dpnId) { GetEndpointIpForDpnInput input = new GetEndpointIpForDpnInputBuilder().setDpid(dpnId).build(); Future> output = interfaceManagerRpcService.getEndpointIpForDpn(input); try { @@ -665,7 +667,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { public String getDpidForInterface(String interfaceName, InstanceIdentifier nodeInstanceId) { OvsdbBridgeAugmentation bridge = getBridgeForInterface(interfaceName, nodeInstanceId); if (bridge != null) { - BigInteger dpid = IfmUtil.getDpnId(bridge.getDatapathId()); + Uint64 dpid = IfmUtil.getDpnId(bridge.getDatapathId()); if (dpid != null && dpid.longValue() != 0) { return String.valueOf(dpid); } @@ -811,7 +813,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { * @return If the data at the supplied path exists, returns a list of all termination point * Augmentations */ - public List getPortsOnBridge(BigInteger dpnId) { + public List getPortsOnBridge(Uint64 dpnId) { List ports = new ArrayList<>(); List portList = interfaceMetaUtils.getTerminationPointsOnBridge(dpnId); for (TerminationPoint ovsPort : portList) { @@ -833,7 +835,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { * Augmentations of type tunnel */ @Override - public List getTunnelPortsOnBridge(BigInteger dpnId) { + public List getTunnelPortsOnBridge(Uint64 dpnId) { List tunnelPorts = new ArrayList<>(); List portList = interfaceMetaUtils.getTerminationPointsOnBridge(dpnId); for (TerminationPoint ovsPort : portList) { @@ -859,7 +861,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager { */ @Override public Map, List> - getPortsOnBridgeByType(BigInteger dpnId) { + getPortsOnBridgeByType(Uint64 dpnId) { Map, List> portMap; portMap = new ConcurrentHashMap<>(); 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 b9d24bba7..56cb1cd4e 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 @@ -63,6 +63,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeLldp; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint32; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,14 +95,15 @@ public final class AlivenessMonitorUtils { .build()) .setMode(MonitoringMode.OneOne) .setProfileId(allocateProfile(FAILURE_THRESHOLD, - ifTunnel.getMonitorInterval(), MONITORING_WINDOW, MonitorProtocolType.Lldp)) + ifTunnel.getMonitorInterval().toJava(), MONITORING_WINDOW, + MonitorProtocolType.Lldp)) .build()) .build(); try { Future> result = alivenessMonitorService.monitorStart(lldpMonitorInput); RpcResult rpcResult = result.get(); if (rpcResult.isSuccessful()) { - long monitorId = rpcResult.getResult().getMonitorId(); + long monitorId = rpcResult.getResult().getMonitorId().toJava(); ListenableFutures.addErrorLogging( txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, tx -> { createOrUpdateInterfaceMonitorIdMap(tx, trunkInterfaceName, monitorId); @@ -122,12 +125,12 @@ public final class AlivenessMonitorUtils { } LOG.debug("stop LLDP monitoring for {}", trunkInterface); ListenableFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, tx -> { - List monitorIds = getMonitorIdForInterface(tx, trunkInterface); + List monitorIds = getMonitorIdForInterface(tx, trunkInterface); if (monitorIds == null) { LOG.error("Monitor Id doesn't exist for Interface {}", trunkInterface); return; } - for (Long monitorId : monitorIds) { + for (Uint32 monitorId : monitorIds) { String interfaceName = getInterfaceFromMonitorId(tx, monitorId); if (interfaceName != null) { MonitorStopInput input = new MonitorStopInputBuilder().setMonitorId(monitorId).build(); @@ -143,14 +146,14 @@ public final class AlivenessMonitorUtils { }), LOG, "Error stopping LLDP monitoring for {}", trunkInterface); } - public static String getInterfaceFromMonitorId(TypedReadTransaction tx, Long monitorId) + public static String getInterfaceFromMonitorId(TypedReadTransaction tx, Uint32 monitorId) 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); } - private void removeMonitorIdInterfaceMap(TypedReadWriteTransaction tx, long monitorId) + private void removeMonitorIdInterfaceMap(TypedReadWriteTransaction tx, Uint32 monitorId) throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(MonitorIdInterfaceMap.class) .child(MonitorIdInterface.class, new MonitorIdInterfaceKey(monitorId)).build(); @@ -160,13 +163,13 @@ public final class AlivenessMonitorUtils { } private void removeMonitorIdFromInterfaceMonitorIdMap(TypedReadWriteTransaction tx, String infName, - long monitorId) throws ExecutionException, InterruptedException { + Uint32 monitorId) throws ExecutionException, InterruptedException { InstanceIdentifier id = InstanceIdentifier.builder(InterfaceMonitorIdMap.class) .child(InterfaceMonitorId.class, new InterfaceMonitorIdKey(infName)).build(); Optional interfaceMonitorIdMap = tx.read(id).get(); if (interfaceMonitorIdMap.isPresent()) { InterfaceMonitorId interfaceMonitorIdInstance = interfaceMonitorIdMap.get(); - List existingMonitorIds = interfaceMonitorIdInstance.getMonitorId(); + List existingMonitorIds = interfaceMonitorIdInstance.getMonitorId(); if (existingMonitorIds != null && existingMonitorIds.contains(monitorId)) { existingMonitorIds.remove(monitorId); InterfaceMonitorIdBuilder interfaceMonitorIdBuilder = new InterfaceMonitorIdBuilder(); @@ -203,8 +206,8 @@ public final class AlivenessMonitorUtils { IfTunnel ifTunnelOld = interfaceOld.augmentation(IfTunnel.class); if (!Objects.equals(ifTunnelNew.getMonitorInterval(), ifTunnelOld.getMonitorInterval())) { LOG.debug("deleting older monitor profile for interface {}", interfaceName); - long profileId = allocateProfile(FAILURE_THRESHOLD, ifTunnelOld.getMonitorInterval(), MONITORING_WINDOW, - MonitorProtocolType.Lldp); + Uint32 profileId = allocateProfile(FAILURE_THRESHOLD, ifTunnelOld.getMonitorInterval().toJava(), + MONITORING_WINDOW, MonitorProtocolType.Lldp); MonitorProfileDeleteInput profileDeleteInput = new MonitorProfileDeleteInputBuilder() .setProfileId(profileId).build(); @@ -218,7 +221,7 @@ public final class AlivenessMonitorUtils { private static void createOrUpdateInterfaceMonitorIdMap(TypedReadWriteTransaction tx, String infName, long monitorId) throws ExecutionException, InterruptedException { InterfaceMonitorId interfaceMonitorIdInstance; - List existingMonitorIds; + List existingMonitorIds; InterfaceMonitorIdBuilder interfaceMonitorIdBuilder = new InterfaceMonitorIdBuilder(); InstanceIdentifier id = InstanceIdentifier.builder(InterfaceMonitorIdMap.class) .child(InterfaceMonitorId.class, new InterfaceMonitorIdKey(infName)).build(); @@ -229,15 +232,15 @@ public final class AlivenessMonitorUtils { if (existingMonitorIds == null) { existingMonitorIds = new ArrayList<>(); } - if (!existingMonitorIds.contains(monitorId)) { - existingMonitorIds.add(monitorId); + if (!existingMonitorIds.contains(Uint32.valueOf(monitorId))) { + existingMonitorIds.add(Uint32.valueOf(monitorId)); interfaceMonitorIdInstance = interfaceMonitorIdBuilder.withKey(new InterfaceMonitorIdKey(infName)) .setMonitorId(existingMonitorIds).build(); tx.merge(id, interfaceMonitorIdInstance, CREATE_MISSING_PARENTS); } } else { existingMonitorIds = new ArrayList<>(); - existingMonitorIds.add(monitorId); + existingMonitorIds.add(Uint32.valueOf(monitorId)); interfaceMonitorIdInstance = interfaceMonitorIdBuilder.setMonitorId(existingMonitorIds) .withKey(new InterfaceMonitorIdKey(infName)).setInterfaceName(infName).build(); tx.merge(id, interfaceMonitorIdInstance, CREATE_MISSING_PARENTS); @@ -267,14 +270,14 @@ public final class AlivenessMonitorUtils { } } - private static List getMonitorIdForInterface(TypedReadTransaction tx, String infName) + private static List getMonitorIdForInterface(TypedReadTransaction tx, String infName) 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); } - public long createMonitorProfile(MonitorProfileCreateInput monitorProfileCreateInput) { + public Uint32 createMonitorProfile(MonitorProfileCreateInput monitorProfileCreateInput) { try { Future> result = alivenessMonitorService .monitorProfileCreate(monitorProfileCreateInput); @@ -286,8 +289,9 @@ public final class AlivenessMonitorUtils { rpcResult.getErrors()); Profile createProfile = monitorProfileCreateInput.getProfile(); Future> existingProfile = alivenessMonitorService.monitorProfileGet( - buildMonitorGetProfile(createProfile.getMonitorInterval(), createProfile.getMonitorWindow(), - createProfile.getFailureThreshold(), createProfile.getProtocolType())); + buildMonitorGetProfile(createProfile.getMonitorInterval().toJava(), + createProfile.getMonitorWindow().toJava(), + createProfile.getFailureThreshold().toJava(), createProfile.getProtocolType())); RpcResult rpcGetResult = existingProfile.get(); if (rpcGetResult.isSuccessful()) { return rpcGetResult.getResult().getProfileId(); @@ -298,7 +302,7 @@ public final class AlivenessMonitorUtils { } catch (InterruptedException | ExecutionException e) { LOG.warn("Exception when allocating profile Id", e); } - return 0; + return Uint32.valueOf(0); } private static MonitorProfileGetInput buildMonitorGetProfile(long monitorInterval, long monitorWindow, @@ -317,7 +321,7 @@ public final class AlivenessMonitorUtils { return buildGetProfile.build(); } - public long allocateProfile(long failureThreshold, long monitoringInterval, long monitoringWindow, + public Uint32 allocateProfile(long failureThreshold, long monitoringInterval, long monitoringWindow, MonitorProtocolType protoType) { MonitorProfileCreateInput input = new MonitorProfileCreateInputBuilder().setProfile( new ProfileBuilder().setFailureThreshold(failureThreshold).setMonitorInterval(monitoringInterval) 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 d1da0fbda..b7a8abb6a 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 @@ -5,7 +5,6 @@ * 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.interfacemanager.commons; import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; @@ -13,7 +12,6 @@ import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -98,6 +96,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -280,7 +279,7 @@ public final class InterfaceManagerCommonUtils { return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, ifStateId, dataBroker).orNull(); } - public void addTunnelIngressFlow(TypedWriteTransaction tx, IfTunnel tunnel, BigInteger dpnId, + public void addTunnelIngressFlow(TypedWriteTransaction tx, IfTunnel tunnel, Uint64 dpnId, long portNo, String interfaceName, int ifIndex) { if (isTunnelWithoutIngressFlow(tunnel)) { return; @@ -298,7 +297,8 @@ public final class InterfaceManagerCommonUtils { List mkInstructions = new ArrayList<>(); mkInstructions.add( - new InstructionWriteMetadata(MetaDataUtil.getLportTagMetaData(ifIndex).or(BigInteger.ONE), + new InstructionWriteMetadata( + Uint64.fromLongBits(MetaDataUtil.getLportTagMetaData(ifIndex).longValue() | 1L), MetaDataUtil.METADATA_MASK_LPORT_TAG_SH_FLAG)); short tableId = tunnel.getTunnelInterfaceType().isAssignableFrom(TunnelTypeMplsOverGre.class) ? NwConstants.L3_LFIB_TABLE @@ -308,7 +308,7 @@ public final class InterfaceManagerCommonUtils { mdsalApiManager.addFlow(tx, buildTunnelIngressFlowEntity(dpnId, interfaceName, matches, mkInstructions)); } - public void removeTunnelIngressFlow(TypedReadWriteTransaction tx, IfTunnel tunnel, BigInteger dpnId, + public void removeTunnelIngressFlow(TypedReadWriteTransaction tx, IfTunnel tunnel, Uint64 dpnId, String interfaceName) throws ExecutionException, InterruptedException { if (isTunnelWithoutIngressFlow(tunnel)) { return; @@ -324,7 +324,7 @@ public final class InterfaceManagerCommonUtils { } @NonNull - private static FlowEntity buildTunnelIngressFlowEntity(BigInteger dpnId, String interfaceName, + private static FlowEntity buildTunnelIngressFlowEntity(Uint64 dpnId, String interfaceName, List matches, List mkInstructions) { String flowRef = InterfaceManagerCommonUtils.getTunnelInterfaceFlowRef(dpnId, NwConstants.VLAN_INTERFACE_INGRESS_TABLE, interfaceName); @@ -333,7 +333,7 @@ public final class InterfaceManagerCommonUtils { mkInstructions); } - public static String getTunnelInterfaceFlowRef(BigInteger dpnId, short tableId, String ifName) { + public static String getTunnelInterfaceFlowRef(Uint64 dpnId, short tableId, String ifName) { return String.valueOf(dpnId) + tableId + ifName; } @@ -480,7 +480,7 @@ public final class InterfaceManagerCommonUtils { tx.put(ifStateId, ifaceBuilder.build(), CREATE_MISSING_PARENTS); // install ingress flow - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); long portNo = IfmUtil.getPortNumberFromNodeConnectorId(nodeConnectorId); if (interfaceInfo != null && interfaceInfo.isEnabled() && ifState .getOperStatus() == org.opendaylight.yang.gen.v1.urn @@ -524,7 +524,7 @@ public final class InterfaceManagerCommonUtils { //logical tunnel group doesn't have OF port ParentRefs parentRefs = interfaceInfo.augmentation(ParentRefs.class); if (parentRefs != null) { - BigInteger dpId = parentRefs.getDatapathNodeIdentifier(); + Uint64 dpId = parentRefs.getDatapathNodeIdentifier(); String lowref = MDSALUtil.NODE_PREFIX + MDSALUtil.SEPARATOR + dpId + MDSALUtil.SEPARATOR + 0; childLowerLayerIfList.add(0, lowref); } @@ -547,7 +547,7 @@ public final class InterfaceManagerCommonUtils { tx.put(ifStateId, ifState, CREATE_MISSING_PARENTS); } if (nodeConnectorId != null) { - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); // Update the DpnToInterfaceList OpDS createOrUpdateDpnToInterface(dpId, interfaceName, interfaceType); } @@ -711,7 +711,7 @@ public final class InterfaceManagerCommonUtils { return matcher.matches(); } - public void createOrUpdateDpnToInterface(BigInteger dpId, String infName, + public void createOrUpdateDpnToInterface(Uint64 dpId, String infName, Class interfaceType) { DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpId); InterfaceNameEntryKey interfaceNameEntryKey = new InterfaceNameEntryKey(infName); @@ -727,7 +727,7 @@ public final class InterfaceManagerCommonUtils { batchingUtils.write(intfid, entryBuilder.build(), BatchingUtils.EntityType.DEFAULT_OPERATIONAL); } - public List getAllInterfaces(BigInteger dpnId) { + public List getAllInterfaces(Uint64 dpnId) { DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpnId); InstanceIdentifier dpninterfaceListId = InstanceIdentifier.builder(DpnToInterfaceList.class).child(DpnToInterface.class, dpnToInterfaceKey).build(); @@ -739,8 +739,8 @@ public final class InterfaceManagerCommonUtils { return null; } - public static void deleteDpnToInterface(BigInteger dpId, String infName, TypedReadWriteTransaction tx) - throws ExecutionException, InterruptedException { + public static void deleteDpnToInterface(Uint64 dpId, String infName, TypedReadWriteTransaction tx) + throws ExecutionException, InterruptedException { DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpId); InstanceIdentifier dpnToInterfaceId = InstanceIdentifier.builder(DpnToInterfaceList.class) .child(DpnToInterface.class, dpnToInterfaceKey).build(); 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 c83308993..207ee1dc1 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.interfacemanager.commons; import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS; -import java.math.BigInteger; import java.util.Collections; import java.util.List; import java.util.Map; @@ -18,7 +17,6 @@ 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; @@ -66,6 +64,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,8 +75,8 @@ public final class InterfaceMetaUtils { private final DataBroker dataBroker; private final IdManagerService idManager; private final BatchingUtils batchingUtils; - private final ConcurrentMap bridgeEntryMap = new ConcurrentHashMap<>(); - private final ConcurrentMap bridgeRefEntryMap = new ConcurrentHashMap<>(); + private final ConcurrentMap bridgeEntryMap = new ConcurrentHashMap<>(); + private final ConcurrentMap bridgeRefEntryMap = new ConcurrentHashMap<>(); @Inject public InterfaceMetaUtils(@Reference DataBroker dataBroker, @@ -95,7 +94,7 @@ public final class InterfaceMetaUtils { return bridgeRefEntryInstanceIdentifierBuilder.build(); } - public BridgeRefEntry getBridgeRefEntryFromOperationalDS(BigInteger dpId) { + public BridgeRefEntry getBridgeRefEntryFromOperationalDS(Uint64 dpId) { BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpId); InstanceIdentifier bridgeRefEntryIid = InterfaceMetaUtils .getBridgeRefEntryIdentifier(bridgeRefEntryKey); @@ -107,7 +106,7 @@ public final class InterfaceMetaUtils { return bridgeRefEntry; } - public BridgeRefEntry getBridgeRefEntryFromOperDS(BigInteger dpId) { + public BridgeRefEntry getBridgeRefEntryFromOperDS(Uint64 dpId) { BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromCache(dpId); if (bridgeRefEntry != null) { return bridgeRefEntry; @@ -122,7 +121,7 @@ public final class InterfaceMetaUtils { return bridgeRefEntry; } - public OvsdbBridgeRef getOvsdbBridgeRef(BigInteger dpId) { + public OvsdbBridgeRef getOvsdbBridgeRef(Uint64 dpId) { BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromOperDS(dpId); @@ -140,7 +139,7 @@ public final class InterfaceMetaUtils { public BridgeRefEntry getBridgeReferenceForInterface(Interface interfaceInfo) { ParentRefs parentRefs = interfaceInfo.augmentation(ParentRefs.class); - BigInteger dpn = parentRefs.getDatapathNodeIdentifier(); + Uint64 dpn = parentRefs.getDatapathNodeIdentifier(); return getBridgeRefEntryFromOperDS(dpn); } @@ -159,7 +158,7 @@ public final class InterfaceMetaUtils { return bridgeEntryIdBuilder.build(); } - public BridgeEntry getBridgeEntryFromConfigDS(BigInteger dpnId) { + public BridgeEntry getBridgeEntryFromConfigDS(Uint64 dpnId) { BridgeEntry bridgeEntry = getBridgeEntryFromCache(dpnId); if (bridgeEntry != null) { return bridgeEntry; @@ -176,7 +175,7 @@ public final class InterfaceMetaUtils { } public BridgeEntry getBridgeEntryFromConfigDS(InstanceIdentifier bridgeEntryInstanceIdentifier) { - BigInteger dpnId = bridgeEntryInstanceIdentifier.firstKeyOf(BridgeEntry.class).getDpid(); + Uint64 dpnId = bridgeEntryInstanceIdentifier.firstKeyOf(BridgeEntry.class).getDpid(); return getBridgeEntryFromConfigDS(dpnId); } @@ -193,7 +192,7 @@ public final class InterfaceMetaUtils { } - public void createBridgeInterfaceEntryInConfigDS(BigInteger dpId, String childInterface) { + public void createBridgeInterfaceEntryInConfigDS(Uint64 dpId, String childInterface) { BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId); BridgeInterfaceEntryKey bridgeInterfaceEntryKey = new BridgeInterfaceEntryKey(childInterface); InstanceIdentifier bridgeInterfaceEntryIid = @@ -303,7 +302,7 @@ public final class InterfaceMetaUtils { return ifIndex; } - public static void addBridgeRefToBridgeInterfaceEntry(BigInteger dpId, OvsdbBridgeRef ovsdbBridgeRef, + public static void addBridgeRefToBridgeInterfaceEntry(Uint64 dpId, OvsdbBridgeRef ovsdbBridgeRef, TypedWriteTransaction tx) { BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId); InstanceIdentifier bridgeEntryInstanceIdentifier = getBridgeEntryIdentifier(bridgeEntryKey); @@ -313,7 +312,7 @@ public final class InterfaceMetaUtils { tx.merge(bridgeEntryInstanceIdentifier, bridgeEntryBuilder.build(), CREATE_MISSING_PARENTS); } - public static void createBridgeRefEntry(BigInteger dpnId, InstanceIdentifier bridgeIid, + public static void createBridgeRefEntry(Uint64 dpnId, InstanceIdentifier bridgeIid, TypedWriteTransaction tx) { LOG.debug("Creating bridge ref entry for dpn: {} bridge: {}", dpnId, bridgeIid); @@ -326,7 +325,7 @@ public final class InterfaceMetaUtils { tx.put(bridgeEntryId, tunnelDpnBridgeEntryBuilder.build(), CREATE_MISSING_PARENTS); } - public static void deleteBridgeRefEntry(BigInteger dpnId, TypedWriteTransaction tx) { + public static void deleteBridgeRefEntry(Uint64 dpnId, TypedWriteTransaction tx) { LOG.debug("Deleting bridge ref entry for dpn: {}", dpnId); tx.delete(InterfaceMetaUtils.getBridgeRefEntryIdentifier(new BridgeRefEntryKey(dpnId))); } @@ -390,7 +389,7 @@ public final class InterfaceMetaUtils { } } - public List getTerminationPointsOnBridge(BigInteger dpnId) { + public List getTerminationPointsOnBridge(Uint64 dpnId) { BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromOperDS(dpnId); if (bridgeRefEntry == null || bridgeRefEntry.getBridgeReference() == null) { LOG.debug("BridgeRefEntry for DPNID {} not found", dpnId); @@ -409,7 +408,7 @@ public final class InterfaceMetaUtils { // Cache Util methods // Start: BridgeEntryCache - public void addBridgeEntryToCache(BigInteger dpnId, BridgeEntry bridgeEntry) { + public void addBridgeEntryToCache(Uint64 dpnId, BridgeEntry bridgeEntry) { bridgeEntryMap.put(dpnId, bridgeEntry); } @@ -417,7 +416,7 @@ public final class InterfaceMetaUtils { addBridgeEntryToCache(bridgeEntry.key().getDpid(), bridgeEntry); } - public void removeFromBridgeEntryCache(BigInteger dpnId) { + public void removeFromBridgeEntryCache(Uint64 dpnId) { bridgeEntryMap.remove(dpnId); } @@ -425,13 +424,13 @@ public final class InterfaceMetaUtils { removeFromBridgeEntryCache(bridgeEntry.key().getDpid()); } - public BridgeEntry getBridgeEntryFromCache(BigInteger dpnId) { + public BridgeEntry getBridgeEntryFromCache(Uint64 dpnId) { return bridgeEntryMap.get(dpnId); } // End: Bridge Entry Cache //Start: BridgeRefEntry Cache - public void addBridgeRefEntryToCache(BigInteger dpnId, BridgeRefEntry bridgeRefEntry) { + public void addBridgeRefEntryToCache(Uint64 dpnId, BridgeRefEntry bridgeRefEntry) { bridgeRefEntryMap.put(dpnId, bridgeRefEntry); } @@ -439,7 +438,7 @@ public final class InterfaceMetaUtils { addBridgeRefEntryToCache(bridgeRefEntry.key().getDpid(), bridgeRefEntry); } - public void removeFromBridgeRefEntryCache(BigInteger dpnId) { + public void removeFromBridgeRefEntryCache(Uint64 dpnId) { bridgeRefEntryMap.remove(dpnId); } @@ -447,7 +446,7 @@ public final class InterfaceMetaUtils { removeFromBridgeRefEntryCache(bridgeRefEntry.key().getDpid()); } - public BridgeRefEntry getBridgeRefEntryFromCache(BigInteger dpnId) { + public BridgeRefEntry getBridgeRefEntryFromCache(Uint64 dpnId) { return bridgeRefEntryMap.get(dpnId); } 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 fb863ac61..0948f146d 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 @@ -27,6 +27,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.AlivenessMonitorListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.LivenessState; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorEvent; +import org.opendaylight.yangtools.yang.common.Uint32; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,7 +62,7 @@ public class AlivenessMonitorListenerImpl implements AlivenessMonitorListener { @Override public void onMonitorEvent(MonitorEvent notification) { ListenableFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, tx -> { - Long monitorId = notification.getEventData().getMonitorId(); + Uint32 monitorId = notification.getEventData().getMonitorId(); String tunnelInterface = AlivenessMonitorUtils.getInterfaceFromMonitorId(tx, monitorId); if (tunnelInterface == null) { LOG.debug("Either monitoring for interface not started by Interfacemgr or it is not LLDP monitoring"); 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 d132368f7..b5dde272c 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 @@ -10,11 +10,8 @@ package org.opendaylight.genius.interfacemanager.listeners; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; -import com.google.common.base.Function; import com.google.common.util.concurrent.ListenableFuture; - import com.google.common.util.concurrent.MoreExecutors; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -24,7 +21,6 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; 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; @@ -61,6 +57,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -254,12 +251,12 @@ public class InterfaceInventoryStateListener nodeConnectorIdOld = new NodeConnectorId(ofportIds.get(0)); } if (nodeConnectorIdOld != null && !nodeConnectorId.equals(nodeConnectorIdOld)) { - BigInteger dpnIdOld = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorIdOld); - BigInteger dpnIdNew = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpnIdOld = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorIdOld); + Uint64 dpnIdNew = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); if (!Objects.equals(dpnIdOld, dpnIdNew)) { - if ((fcNodeConnectorNew.getReason() != PortReason.Add) - && (interfaceState.getOperStatus() - != Interface.OperStatus.Unknown)) { + if (fcNodeConnectorNew.getReason() != PortReason.Add + && interfaceState.getOperStatus() + != Interface.OperStatus.Unknown) { LOG.error("Dropping Port update event for {}, as DPN id is changed from {} to {}", fcNodeConnectorNew.getName(), dpnIdOld, dpnIdNew); return; @@ -418,7 +415,7 @@ public class InterfaceInventoryStateListener NodeConnectorId nodeConnectorId = nodeConnectorIdOld != null && !nodeConnectorIdNew.equals(nodeConnectorIdOld) ? nodeConnectorIdOld : nodeConnectorIdNew; // delete the port entry from interface operational DS - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); futures.add(txRunner.applyWithNewTransactionChainAndClose(txChain -> txChain.applyWithNewReadWriteTransactionAndSubmit(OPERATIONAL, operTx -> { @@ -463,22 +460,18 @@ public class InterfaceInventoryStateListener InterfaceManagerCommonUtils.deleteDpnToInterface(dpId, interfaceName, operTx); } return Optional.empty(); - }).transform(new Function, Void>() { - @Nullable - @Override - public Void apply(@Nullable Optional optionalJob) { - if (optionalJob != null && optionalJob.isPresent()) { - txChain.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, - (InterruptibleCheckedConsumer, ? - extends Exception>) optionalJob.get()); - } - return null; + }).transform((@Nullable Optional optionalJob) -> { + if (optionalJob != null && optionalJob.isPresent()) { + txChain.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, + (InterruptibleCheckedConsumer, ? + extends Exception>) optionalJob.get()); } + return null; }, MoreExecutors.directExecutor()))); return futures; } - private void handleTunnelMonitoringRemoval(TypedReadWriteTransaction tx, BigInteger dpId, + private void handleTunnelMonitoringRemoval(TypedReadWriteTransaction tx, Uint64 dpId, String removedInterfaceName, IfTunnel ifTunnel) throws ExecutionException, InterruptedException { interfaceManagerCommonUtils.removeTunnelIngressFlow(tx, ifTunnel, dpId, removedInterfaceName); 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 a251dd1e7..6e03467bb 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 @@ -11,15 +11,12 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.util.concurrent.ListenableFuture; - -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; 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; @@ -46,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -188,7 +186,7 @@ public class InterfaceTopologyStateListener LOG.info("DataPathId found as null for Bridge Augmentation: {}... returning...", bridgeNew); return Collections.emptyList(); } - BigInteger dpnId = IfmUtil.getDpnId(bridgeNew.getDatapathId()); + Uint64 dpnId = IfmUtil.getDpnId(bridgeNew.getDatapathId()); LOG.debug("adding bridge references for bridge: {}, dpn: {}", bridgeNew, dpnId); // create bridge reference entry in interface meta operational DS return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> { @@ -218,7 +216,7 @@ public class InterfaceTopologyStateListener @Override public List> call() { - BigInteger dpnId = IfmUtil.getDpnId(bridgeNew.getDatapathId()); + Uint64 dpnId = IfmUtil.getDpnId(bridgeNew.getDatapathId()); if (dpnId == null) { LOG.warn("Got Null DPID for Bridge: {}", bridgeNew); 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 a6ce775cc..ce2fde359 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 @@ -13,6 +13,7 @@ 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; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -26,7 +27,6 @@ import javax.annotation.PreDestroy; 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.AsyncClusteredDataTreeChangeListenerBase; @@ -127,7 +127,8 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener LOG.info("Scheduling port statistics request"); PortStatRequestTask portStatRequestTask = new PortStatRequestTask(); scheduledResult = portStatExecutorService.scheduleWithFixedDelay(portStatRequestTask, - ifmConfig.getIfmStatsDefPollInterval(), ifmConfig.getIfmStatsDefPollInterval(), TimeUnit.MINUTES); + ifmConfig.getIfmStatsDefPollInterval().toJava(), ifmConfig.getIfmStatsDefPollInterval().toJava(), + TimeUnit.MINUTES); } /* @@ -162,7 +163,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener Futures.addCallback(ncStatsFuture, new FutureCallback>() { @Override - public void onFailure(@NonNull Throwable error) { + public void onFailure(Throwable error) { LOG.error("getNodeConnectorStatistics RPC failed for node: {} ", node, error); } @@ -188,7 +189,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener Futures.addCallback(flowStatsFuture, new FutureCallback>() { @Override - public void onFailure(@NonNull Throwable error) { + public void onFailure(Throwable error) { LOG.error("getFlowStatistics RPC failed for node: {} ", node, error); } @@ -252,6 +253,8 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener * - creates/updates new OF Port counters using Infrautils metrics API * - set counter with values fetched from NodeConnectorStatistics */ + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void processNodeConnectorStatistics(GetNodeConnectorStatisticsOutput nodeConnectorStatisticsOutput, String dpid) { String port = ""; @@ -289,7 +292,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener } Counter counter = getCounter(CounterConstants.IFM_PORT_COUNTER_OFPORT_DURATION, dpid, port, portUuid,null); - long ofPortDuration = ncStatsAndPortMap.getDuration().getSecond().getValue(); + long ofPortDuration = ncStatsAndPortMap.getDuration().getSecond().getValue().toJava(); updateCounter(counter, ofPortDuration); counter = getCounter(CounterConstants.IFM_PORT_COUNTER_OFPORT_PKT_RECVDROP, dpid, port, portUuid, null); @@ -326,13 +329,15 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener * - creates/updates Flow table counters using Infrautils metrics API * - set counter with values fetched from FlowStatistics */ + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void processFlowStatistics(GetFlowStatisticsOutput flowStatsOutput, String dpid) { Map flowTableMap = new HashMap<>(); // Get all flows for node from RPC result List flowTableAndStatisticsMapList = flowStatsOutput.nonnullFlowAndStatisticsMapList(); for (FlowAndStatisticsMapList flowAndStatisticsMap : flowTableAndStatisticsMapList) { - short tableId = flowAndStatisticsMap.getTableId(); + short tableId = flowAndStatisticsMap.getTableId().toJava(); // populate map to maintain flow count per table flowTableMap.computeIfAbsent(tableId, key -> new AtomicInteger(0)).incrementAndGet(); } @@ -422,7 +427,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener } } if (nodes.size() > 0) { - delayStatsQuery = ifmConfig.getIfmStatsDefPollInterval() / nodes.size(); + delayStatsQuery = ifmConfig.getIfmStatsDefPollInterval().toJava() / nodes.size(); } else { stopPortStatRequestTask(); delayStatsQuery = 0; @@ -444,7 +449,7 @@ public class NodeConnectorStatsImpl extends AsyncClusteredDataTreeChangeListener return; } nodes.add(dpId); - delayStatsQuery = ifmConfig.getIfmStatsDefPollInterval() / nodes.size(); + delayStatsQuery = ifmConfig.getIfmStatsDefPollInterval().toJava() / nodes.size(); if (nodes.size() == 1) { schedulePortStatRequestTask(); } 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 62bf6034e..63e3cc379 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 @@ -15,7 +15,6 @@ 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 java.math.BigInteger; import java.time.Duration; import java.util.ArrayList; import java.util.Collections; @@ -23,7 +22,6 @@ import java.util.List; import javax.inject.Inject; 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.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -58,6 +56,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -143,7 +142,7 @@ public final class OvsInterfaceConfigAddHelper { return; } - BigInteger dpId = parentRefs.getDatapathNodeIdentifier(); + Uint64 dpId = parentRefs.getDatapathNodeIdentifier(); if (dpId == null) { LOG.warn("dpid for interface: {} Not Found. No DPID provided. " + "Creation of OF-Port not supported.", interfaceNew.getName()); @@ -215,7 +214,7 @@ public final class OvsInterfaceConfigAddHelper { } private long createLogicalTunnelSelectGroup(TypedWriteTransaction tx, - BigInteger srcDpnId, String interfaceName, int lportTag) { + Uint64 srcDpnId, String interfaceName, int lportTag) { long groupId = IfmUtil.getLogicalTunnelSelectGroupId(lportTag); Group group = MDSALUtil.buildGroup(groupId, interfaceName, GroupTypes.GroupSelect, MDSALUtil.buildBucketLists(Collections.emptyList())); @@ -243,7 +242,7 @@ public final class OvsInterfaceConfigAddHelper { } private void setupTunnelFlowsAndMonitoring(Interface interfaceNew, TypedWriteTransaction confTx, - IfTunnel ifTunnel, BigInteger dpId, + IfTunnel ifTunnel, Uint64 dpId, List> futures) { // if TEP is already configured on switch, start LLDP monitoring and // program tunnel ingress flow @@ -268,7 +267,7 @@ public final class OvsInterfaceConfigAddHelper { } @Override - public void onFailure(@NonNull Throwable throwable) { + public void onFailure(Throwable throwable) { LOG.error("Unable to add tunnel monitoring", throwable); } }, MoreExecutors.directExecutor()); 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 8fd08281e..9d195a93b 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 @@ -11,14 +11,12 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; 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; @@ -50,6 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeRef; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -120,7 +119,7 @@ public final class OvsInterfaceConfigRemoveHelper { } cleanUpInterfaceWithUnknownState(interfaceName, parentRefs, null, tx); - BigInteger dpId = IfmUtil.getDpnFromInterface(ifState); + Uint64 dpId = IfmUtil.getDpnFromInterface(ifState); EVENT_LOGGER.debug("IFM-OvsInterfaceConfig,REMOVE {}", interfaceName); FlowBasedServicesUtils.removeIngressFlow(interfaceName, dpId, txRunner, futures); @@ -145,7 +144,7 @@ public final class OvsInterfaceConfigRemoveHelper { TypedWriteTransaction operTx, TypedReadWriteTransaction confTx) throws ExecutionException, InterruptedException { LOG.info("removing tunnel configuration for interface {}", interfaceName); - BigInteger dpId = null; + Uint64 dpId = null; if (parentRefs != null) { dpId = parentRefs.getDatapathNodeIdentifier(); } @@ -206,7 +205,7 @@ public final class OvsInterfaceConfigRemoveHelper { } public void removeTunnelIngressFlow(TypedReadWriteTransaction confTx, - String interfaceName, IfTunnel ifTunnel, BigInteger dpId) throws ExecutionException, InterruptedException { + String interfaceName, IfTunnel ifTunnel, Uint64 dpId) throws ExecutionException, InterruptedException { NodeConnectorId ncId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(interfaceName, interfaceManagerCommonUtils); if (ncId == null) { @@ -240,13 +239,13 @@ public final class OvsInterfaceConfigRemoveHelper { private static class VlanMemberStateRemoveWorker implements Callable>> { private final ManagedNewTransactionRunner txRunner; private final InterfaceManagerCommonUtils interfaceManagerCommonUtils; - private final BigInteger dpId; + private final Uint64 dpId; private final String interfaceName; private final InterfaceParentEntry interfaceParentEntry; VlanMemberStateRemoveWorker(ManagedNewTransactionRunner txRunner, InterfaceManagerCommonUtils interfaceManagerCommonUtils, - BigInteger dpId, String interfaceName, InterfaceParentEntry interfaceParentEntry) { + Uint64 dpId, String interfaceName, InterfaceParentEntry interfaceParentEntry) { this.txRunner = txRunner; this.interfaceManagerCommonUtils = interfaceManagerCommonUtils; this.dpId = dpId; @@ -280,14 +279,14 @@ public final class OvsInterfaceConfigRemoveHelper { } private void removeLogicalTunnelSelectGroup(TypedReadWriteTransaction tx, - BigInteger srcDpnId, String interfaceName, int lportTag) throws ExecutionException, InterruptedException { + Uint64 srcDpnId, String interfaceName, int lportTag) throws ExecutionException, InterruptedException { long groupId = IfmUtil.getLogicalTunnelSelectGroupId(lportTag); LOG.debug("MULTIPLE_VxLAN_TUNNELS: group id {} removed for {} srcDpnId {}", groupId, interfaceName, srcDpnId); mdsalApiManager.removeGroup(tx, srcDpnId, groupId); } - private void removeLogicalTunnelGroup(BigInteger dpnId, String ifaceName, int lportTag, + private void removeLogicalTunnelGroup(Uint64 dpnId, String ifaceName, int lportTag, TypedWriteTransaction operTx, TypedReadWriteTransaction confTx) throws ExecutionException, InterruptedException { LOG.debug("MULTIPLE_VxLAN_TUNNELS: unbind & delete Interface State for logic tunnel group {}", ifaceName); 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 6154cb3a6..ae4eaa11e 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 @@ -11,13 +11,11 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; 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; @@ -33,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.met import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntryKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +88,7 @@ public class OvsVlanMemberConfigRemoveHelper { .getInterfaceState(tx, parentRefs.getParentInterface()); if (ifState != null) { LOG.debug("delete vlan member interface state {}", interfaceOld.getName()); - BigInteger dpId = IfmUtil.getDpnFromInterface(ifState); + Uint64 dpId = IfmUtil.getDpnFromInterface(ifState); interfaceManagerCommonUtils.deleteInterfaceStateInformation(interfaceOld.getName(), tx); // TODO skitt The following is another configuration transaction, we'll deal with it later FlowBasedServicesUtils.removeIngressFlow(interfaceOld.getName(), dpId, txRunner, futures); 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 1a3e3e854..d81560254 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 @@ -14,13 +14,11 @@ 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 java.math.BigInteger; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; 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.DataBroker; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; @@ -37,6 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Fl import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,7 +124,7 @@ public final class OvsInterfaceStateAddHelper { if (InterfaceManagerCommonUtils.isVlanInterface(iface) && iface.isEnabled() && ifState .getOperStatus() == org.opendaylight.yang.gen.v1.urn .ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Up) { - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); FlowBasedServicesUtils.installLportIngressFlow(dpId, portNo, iface, futures, txRunner, ifState.getIfIndex()); futures.add(FlowBasedServicesUtils.bindDefaultEgressDispatcherService(txRunner, iface, @@ -142,7 +141,7 @@ public final class OvsInterfaceStateAddHelper { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.Interface interfaceInfo, String interfaceName, long portNo) { EVENT_LOGGER.debug("IFM-OvsInterfaceState,ADD,TunnelIngressFlow {}", interfaceName); - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); ListenableFuture future = txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { interfaceManagerCommonUtils.addTunnelIngressFlow( tx, interfaceInfo.augmentation(IfTunnel.class), dpId, portNo, interfaceName, ifIndex); @@ -157,7 +156,7 @@ public final class OvsInterfaceStateAddHelper { } @Override - public void onFailure(@NonNull Throwable throwable) { + public void onFailure(Throwable throwable) { LOG.error("Unable to add tunnel monitoring", throwable); } }, MoreExecutors.directExecutor()); @@ -166,7 +165,7 @@ public final class OvsInterfaceStateAddHelper { public static boolean validateTunnelPortAttributes(NodeConnectorId nodeConnectorId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.Interface iface) { - BigInteger currentDpnId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 currentDpnId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); if (iface != null) { ParentRefs parentRefs = iface.augmentation(ParentRefs.class); if (!currentDpnId.equals(parentRefs.getDatapathNodeIdentifier())) { 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 ca6defa3b..8aa4f8fe4 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 @@ -10,12 +10,10 @@ package org.opendaylight.genius.interfacemanager.renderer.ovs.statehelpers; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collections; 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; @@ -33,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfdStatus; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,8 +70,8 @@ public class OvsInterfaceTopologyStateUpdateHelper { OvsdbBridgeAugmentation bridgeNew, OvsdbBridgeAugmentation bridgeOld) { return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> { - BigInteger dpnIdNew = IfmUtil.getDpnId(bridgeNew.getDatapathId()); - BigInteger dpnIdOld = IfmUtil.getDpnId(bridgeOld.getDatapathId()); + Uint64 dpnIdNew = IfmUtil.getDpnId(bridgeNew.getDatapathId()); + Uint64 dpnIdOld = IfmUtil.getDpnId(bridgeOld.getDatapathId()); LOG.debug("updating bridge references for bridge: {}, dpnNew: {}, dpnOld: {}", bridgeNew, dpnIdNew, dpnIdOld); 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 e80475038..44e7e6eb8 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 @@ -11,7 +11,6 @@ import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CR import com.google.common.collect.Maps; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -20,7 +19,6 @@ import java.util.Map; import java.util.UUID; 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; @@ -76,6 +74,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,7 +124,7 @@ public class SouthboundUtils { // To keep the mapping between Tunnel Types and Tunnel Interfaces private static final Map, Class> - TUNNEL_TYPE_MAP = new HashMap, Class>() { + TUNNEL_TYPE_MAP = new HashMap<>() { { put(TunnelTypeGre.class, InterfaceTypeGre.class); put(TunnelTypeMplsOverGre.class, InterfaceTypeGre.class); @@ -215,7 +214,7 @@ public class SouthboundUtils { int vlanId = 0; IfL2vlan ifL2vlan = iface.augmentation(IfL2vlan.class); if (ifL2vlan != null && ifL2vlan.getVlanId() != null) { - vlanId = ifL2vlan.getVlanId().getValue(); + vlanId = ifL2vlan.getVlanId().getValue().toJava(); } Map options = Maps.newHashMap(); @@ -389,8 +388,8 @@ public class SouthboundUtils { public static boolean ifBfdStatusNotEqual(OvsdbTerminationPointAugmentation tpOld, OvsdbTerminationPointAugmentation tpNew) { - return (tpNew.getInterfaceBfdStatus() != null - && (tpOld == null || !tpNew.getInterfaceBfdStatus().equals(tpOld.getInterfaceBfdStatus()))); + return tpNew.getInterfaceBfdStatus() != null + && (tpOld == null || !tpNew.getInterfaceBfdStatus().equals(tpOld.getInterfaceBfdStatus())); } public static boolean changeInBfdMonitoringDetected(OvsdbTerminationPointAugmentation tpOld, @@ -426,7 +425,7 @@ public class SouthboundUtils { } @SuppressFBWarnings("DM_DEFAULT_ENCODING") - public static String generateOfTunnelName(BigInteger dpId, IfTunnel ifTunnel) { + public static String generateOfTunnelName(Uint64 dpId, IfTunnel ifTunnel) { String sourceKey = ifTunnel.getTunnelSource().stringValue(); String remoteKey = ifTunnel.getTunnelDestination().stringValue(); if (ifTunnel.isTunnelSourceIpFlow() != null) { 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 0be59112f..b4898a7fd 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 @@ -5,19 +5,16 @@ * 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.interfacemanager.rpcservice; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; 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.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -77,6 +74,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.get.dpn._interface.list.output.InterfacesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,7 +101,7 @@ public class InterfaceManagerServiceImpl implements InterfaceManagerService { @Override public ListenableFuture getDpidFromInterface(GetDpidFromInterfaceInput input) { String interfaceName = input.getIntfName(); - BigInteger dpId; + Uint64 dpId; InterfaceKey interfaceKey = new InterfaceKey(interfaceName); Interface interfaceInfo = interfaceManagerCommonUtils.getInterfaceFromConfigDS(interfaceKey); if (interfaceInfo == null) { @@ -154,7 +152,7 @@ public class InterfaceManagerServiceImpl implements InterfaceManagerService { public ListenableFuture getEgressInstructionsForInterface( GetEgressInstructionsForInterfaceInput input) { List instructions = IfmUtil.getEgressInstructionsForInterface(input.getIntfName(), - input.getTunnelKey(), interfaceManagerCommonUtils, false); + input.getTunnelKey().toJava(), interfaceManagerCommonUtils, false); return Futures.immediateFuture( new GetEgressInstructionsForInterfaceOutputBuilder().setInstruction(instructions).build()); } @@ -194,8 +192,8 @@ public class InterfaceManagerServiceImpl implements InterfaceManagerService { @Override public ListenableFuture getEgressActionsForInterface( GetEgressActionsForInterfaceInput input) { - List actionsList = IfmUtil.getEgressActionsForInterface(input.getIntfName(), input.getTunnelKey(), - input.getActionKey(), interfaceManagerCommonUtils, false); + List actionsList = IfmUtil.getEgressActionsForInterface(input.getIntfName(), + input.getTunnelKey().toJava(), input.getActionKey(), interfaceManagerCommonUtils, false); // TODO as above, simplify the success case later, as we have the failure case below return Futures .immediateFuture(new GetEgressActionsForInterfaceOutputBuilder().setAction(actionsList).build()); @@ -204,7 +202,7 @@ public class InterfaceManagerServiceImpl implements InterfaceManagerService { @Override public ListenableFuture getPortFromInterface(GetPortFromInterfaceInput input) { String interfaceName = input.getIntfName(); - BigInteger dpId = null; + Uint64 dpId = null; long portNo = 0; org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.state.Interface ifState = interfaceManagerCommonUtils @@ -262,7 +260,7 @@ public class InterfaceManagerServiceImpl implements InterfaceManagerService { @Override public ListenableFuture getDpnInterfaceList(GetDpnInterfaceListInput input) { - BigInteger dpnid = input.getDpid(); + Uint64 dpnid = input.getDpid(); InstanceIdentifier id = InstanceIdentifier.builder(DpnToInterfaceList.class) .child(DpnToInterface.class, new DpnToInterfaceKey(dpnid)).build(); Optional entry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, id, dataBroker); 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 0f3e6468e..9b5b9aba6 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 @@ -10,11 +10,9 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.confi import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; 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; @@ -26,6 +24,7 @@ import org.opendaylight.genius.utils.ServiceIndex; 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +46,7 @@ public class FlowBasedEgressServicesConfigBindHelper extends AbstractFlowBasedSe @Override protected void bindServiceOnInterface(List> futures, BoundServices boundServiceNew, List allServices, BoundServicesState boundServiceState) { - BigInteger dpId = boundServiceState.getDpid(); + Uint64 dpId = boundServiceState.getDpid(); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { Interface iface = interfaceManagerCommonUtils.getInterfaceFromConfigDS(boundServiceState.getInterfaceName()); @@ -59,7 +58,8 @@ public class FlowBasedEgressServicesConfigBindHelper extends AbstractFlowBasedSe // some value since this is the only service bound. FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, boundServiceNew, boundServiceState.getInterfaceName(), tx, boundServiceState.getIfIndex(), - NwConstants.DEFAULT_SERVICE_INDEX, (short) (boundServiceNew.getServicePriority() + 1), iface); + NwConstants.DEFAULT_SERVICE_INDEX, (short) (boundServiceNew.getServicePriority().toJava() + 1), + iface); return; } allServices.remove(boundServiceNew); @@ -73,24 +73,25 @@ public class FlowBasedEgressServicesConfigBindHelper extends AbstractFlowBasedSe NwConstants.DEFAULT_EGRESS_SERVICE_INDEX); // dummy service // index if (low != null) { - nextServiceIndex = low.getServicePriority(); + nextServiceIndex = low.getServicePriority().toJava(); if (low.equals(highest)) { // In this case the match criteria of existing service should be // changed. BoundServices lower = FlowBasedServicesUtils.getHighAndLowPriorityService(allServices, low)[0]; - short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority() - : low.getServicePriority() + 1); + short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority().toJava() + : low.getServicePriority().toJava() + 1); LOG.trace("Installing egress dispatcher table entry for existing service {} service match on " + "service index {} update with service index {}", low, low.getServicePriority(), lowerServiceIndex); FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, low, boundServiceState.getInterfaceName(), - tx, boundServiceState.getIfIndex(), low.getServicePriority(), lowerServiceIndex, iface); + tx, boundServiceState.getIfIndex(), low.getServicePriority().toJava(), + lowerServiceIndex, iface); } else { - currentServiceIndex = boundServiceNew.getServicePriority(); + currentServiceIndex = boundServiceNew.getServicePriority().toJava(); } } if (high != null) { - currentServiceIndex = boundServiceNew.getServicePriority(); + currentServiceIndex = boundServiceNew.getServicePriority().toJava(); if (high.equals(highest)) { LOG.trace("Installing egress dispatcher table entry for existing service {} service match on " + "service index {} update with service index {}", @@ -104,7 +105,7 @@ public class FlowBasedEgressServicesConfigBindHelper extends AbstractFlowBasedSe high, high.getServicePriority(), currentServiceIndex); FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, high, boundServiceState.getInterfaceName(), tx, boundServiceState.getIfIndex(), - high.getServicePriority(), currentServiceIndex, iface); + high.getServicePriority().toJava(), currentServiceIndex, iface); } } LOG.trace("Installing egress dispatcher table entry " 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 4b3cb99d6..66d317b40 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 @@ -10,11 +10,9 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.confi import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; 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; @@ -25,6 +23,7 @@ import org.opendaylight.genius.mdsalutil.NwConstants; 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,7 +50,7 @@ public class FlowBasedEgressServicesConfigUnbindHelper extends AbstractFlowBased futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { Interface iface = interfaceManagerCommonUtils.getInterfaceFromConfigDS(boundServicesState.getInterfaceName()); - BigInteger dpId = boundServicesState.getDpid(); + Uint64 dpId = boundServicesState.getDpid(); if (boundServices.isEmpty()) { // Remove default entry from Lport Dispatcher Table. FlowBasedServicesUtils.removeEgressDispatcherFlows(dpId, boundServicesState.getInterfaceName(), @@ -73,10 +72,10 @@ public class FlowBasedEgressServicesConfigUnbindHelper extends AbstractFlowBased LOG.trace("Deleting egress dispatcher table entry for lower service {}, match service index {}", low, low.getServicePriority()); FlowBasedServicesUtils.removeEgressDispatcherFlows(dpId, boundServicesState.getInterfaceName(), - tx, low.getServicePriority()); + tx, low.getServicePriority().toJava()); BoundServices lower = FlowBasedServicesUtils.getHighAndLowPriorityService(boundServices, low)[0]; - short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority() - : low.getServicePriority() + 1); + short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority().toJava() + : low.getServicePriority().toJava() + 1); LOG.trace("Installing new egress dispatcher table entry for lower service {}, match service index " + "{}, update service index {}", low, NwConstants.DEFAULT_SERVICE_INDEX, lowerServiceIndex); @@ -86,11 +85,11 @@ public class FlowBasedEgressServicesConfigUnbindHelper extends AbstractFlowBased } } else { LOG.trace("Deleting egress dispatcher table entry for service {}, match service index {}", - boundServiceOld, boundServiceOld.getServicePriority()); + boundServiceOld, boundServiceOld.getServicePriority().toJava()); FlowBasedServicesUtils.removeEgressDispatcherFlows(dpId, boundServicesState.getInterfaceName(), - tx, boundServiceOld.getServicePriority()); - short lowerServiceIndex = (short) (low != null ? low.getServicePriority() - : boundServiceOld.getServicePriority() + 1); + tx, boundServiceOld.getServicePriority().toJava()); + short lowerServiceIndex = (short) (low != null ? low.getServicePriority().toJava() + : boundServiceOld.getServicePriority().toJava() + 1); BoundServices highest = FlowBasedServicesUtils.getHighestPriorityService(boundServices); if (high.equals(highest)) { LOG.trace("Update the existing higher service {}, match service index {}, update service index {}", @@ -100,10 +99,10 @@ public class FlowBasedEgressServicesConfigUnbindHelper extends AbstractFlowBased NwConstants.DEFAULT_SERVICE_INDEX, lowerServiceIndex, iface); } else { LOG.trace("Update the existing higher service {}, match service index {}, update service index {}", - high, high.getServicePriority(), lowerServiceIndex); + high, high.getServicePriority().toJava(), lowerServiceIndex); FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, high, boundServicesState.getInterfaceName(), tx, boundServicesState.getIfIndex(), - high.getServicePriority(), lowerServiceIndex, iface); + high.getServicePriority().toJava(), lowerServiceIndex, iface); } } })); 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 33ec17516..e7bffff4b 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 @@ -10,13 +10,11 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.confi import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.List; import java.util.Map; 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; @@ -30,6 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.re 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,8 +64,8 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS private void bindServiceOnTunnel(List> futures, BoundServices boundServiceNew, List allServices, BoundServicesState boundServiceState) { - long portNo = boundServiceState.getPortNo(); - BigInteger dpId = boundServiceState.getDpid(); + long portNo = boundServiceState.getPortNo().toJava(); + Uint64 dpId = boundServiceState.getDpid(); LOG.info("binding ingress service {} for tunnel port: {}", boundServiceNew.getServiceName(), boundServiceState.getInterfaceName()); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { @@ -84,14 +83,14 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS Map tmpServicesMap = new ConcurrentHashMap<>(); short highestPriority = 0xFF; for (BoundServices boundService : allServices) { - if (boundService.getServicePriority() < boundServiceNew.getServicePriority()) { + if (boundService.getServicePriority().toJava() < boundServiceNew.getServicePriority().toJava()) { isCurrentServiceHighestPriority = false; break; } if (!boundService.equals(boundServiceNew)) { - tmpServicesMap.put(boundService.getServicePriority(), boundService); - if (boundService.getServicePriority() < highestPriority) { - highestPriority = boundService.getServicePriority(); + tmpServicesMap.put(boundService.getServicePriority().toJava(), boundService); + if (boundService.getServicePriority().toJava() < highestPriority) { + highestPriority = boundService.getServicePriority().toJava(); } } } @@ -99,12 +98,14 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS if (!isCurrentServiceHighestPriority) { FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, boundServiceNew, boundServiceState.getInterfaceName(), tx, boundServiceState.getIfIndex(), - boundServiceNew.getServicePriority(), (short) (boundServiceNew.getServicePriority() + 1)); + boundServiceNew.getServicePriority().toJava(), + (short) (boundServiceNew.getServicePriority().toJava() + 1)); } else { BoundServices serviceToReplace = tmpServicesMap.get(highestPriority); FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, serviceToReplace, boundServiceState.getInterfaceName(), tx, boundServiceState.getIfIndex(), - serviceToReplace.getServicePriority(), (short) (serviceToReplace.getServicePriority() + 1)); + serviceToReplace.getServicePriority().toJava(), + (short) (serviceToReplace.getServicePriority().toJava() + 1)); List matches = FlowBasedServicesUtils.getMatchInfoForTunnelPortAtIngressTable(dpId, portNo); // Separate transactions to remove and install flows @@ -122,7 +123,7 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS private void bindServiceOnVlan(List> futures, BoundServices boundServiceNew, List allServices, BoundServicesState boundServiceState) { - BigInteger dpId = boundServiceState.getDpid(); + Uint64 dpId = boundServiceState.getDpid(); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { LOG.info("binding ingress service {} for vlan port: {}", boundServiceNew.getServiceName(), boundServiceState .getInterfaceName()); @@ -132,7 +133,7 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS // service bound. FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, boundServiceNew, boundServiceState.getInterfaceName(), tx, boundServiceState.getIfIndex(), - NwConstants.DEFAULT_SERVICE_INDEX, (short) (boundServiceNew.getServicePriority() + 1)); + NwConstants.DEFAULT_SERVICE_INDEX, (short) (boundServiceNew.getServicePriority().toJava() + 1)); return; } allServices.remove(boundServiceNew); @@ -142,28 +143,28 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS BoundServices high = highLowPriorityService[1]; BoundServices highest = FlowBasedServicesUtils.getHighestPriorityService(allServices); short currentServiceIndex = NwConstants.DEFAULT_SERVICE_INDEX; - short nextServiceIndex = (short) (boundServiceNew.getServicePriority() + 1); // dummy + short nextServiceIndex = (short) (boundServiceNew.getServicePriority().toJava() + 1); // dummy // service // index if (low != null) { - nextServiceIndex = low.getServicePriority(); + nextServiceIndex = low.getServicePriority().toJava(); if (low.equals(highest)) { // In this case the match criteria of existing service should be // changed. BoundServices lower = FlowBasedServicesUtils.getHighAndLowPriorityService(allServices, low)[0]; - short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority() - : low.getServicePriority() + 1); + short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority().toJava() + : low.getServicePriority().toJava() + 1); LOG.trace("Installing ingress dispatcher table entry for existing service {} service match on " + "service index {} update with service index {}", low, low.getServicePriority(), lowerServiceIndex); FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, low, boundServiceState.getInterfaceName(), - tx, boundServiceState.getIfIndex(), low.getServicePriority(), lowerServiceIndex); + tx, boundServiceState.getIfIndex(), low.getServicePriority().toJava(), lowerServiceIndex); } else { - currentServiceIndex = boundServiceNew.getServicePriority(); + currentServiceIndex = boundServiceNew.getServicePriority().toJava(); } } if (high != null) { - currentServiceIndex = boundServiceNew.getServicePriority(); + currentServiceIndex = boundServiceNew.getServicePriority().toJava(); if (high.equals(highest)) { LOG.trace("Installing ingress dispatcher table entry for existing service {} service match on " + "service index {} update with service index {}", @@ -174,9 +175,10 @@ public class FlowBasedIngressServicesConfigBindHelper extends AbstractFlowBasedS } else { LOG.trace("Installing ingress dispatcher table entry for existing service {} service match on " + "service index {} update with service index {}", - high, high.getServicePriority(), currentServiceIndex); + high, high.getServicePriority().toJava(), currentServiceIndex); FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, high, boundServiceState.getInterfaceName(), - tx, boundServiceState.getIfIndex(), high.getServicePriority(), currentServiceIndex); + tx, boundServiceState.getIfIndex(), high.getServicePriority().toJava(), + currentServiceIndex); } } LOG.trace("Installing ingress dispatcher table entry for new service match on service index {} update with " 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 05b834eff..9fbd83b68 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 @@ -10,13 +10,11 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.confi import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.List; import java.util.Map; 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; @@ -30,6 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.re 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,7 +63,7 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase LOG.info("unbinding ingress service {} for vlan port: {}", boundServiceOld.getServiceName(), boundServicesState.getInterfaceName()); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { - BigInteger dpId = boundServicesState.getDpid(); + Uint64 dpId = boundServicesState.getDpid(); if (boundServices == null || boundServices.isEmpty()) { // Remove default entry from Lport Dispatcher Table. FlowBasedServicesUtils.removeLPortDispatcherFlow(dpId, boundServicesState.getInterfaceName(), @@ -84,12 +83,12 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase if (low != null) { // delete the lower services flow entry. LOG.trace("Deleting ingress dispatcher table entry for lower service {}, match service index {}", - low, low.getServicePriority()); + low, low.getServicePriority().toJava()); FlowBasedServicesUtils.removeLPortDispatcherFlow(dpId, boundServicesState.getInterfaceName(), low, - tx, low.getServicePriority()); + tx, low.getServicePriority().toJava()); BoundServices lower = FlowBasedServicesUtils.getHighAndLowPriorityService(boundServices, low)[0]; - short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority() - : low.getServicePriority() + 1); + short lowerServiceIndex = (short) (lower != null ? lower.getServicePriority().toJava() + : low.getServicePriority().toJava() + 1); LOG.trace("Installing new ingress dispatcher table entry for lower service {}, match service index " + "{}, update service index {}", low, NwConstants.DEFAULT_SERVICE_INDEX, lowerServiceIndex); @@ -100,9 +99,9 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase LOG.trace("Deleting ingress dispatcher table entry for service {}, match service index {}", boundServiceOld, boundServiceOld.getServicePriority()); FlowBasedServicesUtils.removeLPortDispatcherFlow(dpId, boundServicesState.getInterfaceName(), - boundServiceOld, tx, boundServiceOld.getServicePriority()); - short lowerServiceIndex = (short) (low != null ? low.getServicePriority() - : boundServiceOld.getServicePriority() + 1); + boundServiceOld, tx, boundServiceOld.getServicePriority().toJava()); + short lowerServiceIndex = (short) (low != null ? low.getServicePriority().toJava() + : boundServiceOld.getServicePriority().toJava() + 1); BoundServices highest = FlowBasedServicesUtils.getHighestPriorityService(boundServices); if (high.equals(highest)) { LOG.trace("Update the existing higher service {}, match service index {}, update service index {}", @@ -113,7 +112,7 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase LOG.trace("Update the existing higher service {}, match service index {}, update service index {}", high, high.getServicePriority(), lowerServiceIndex); FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, high, boundServicesState.getInterfaceName(), - tx, boundServicesState.getIfIndex(), high.getServicePriority(), lowerServiceIndex); + tx, boundServicesState.getIfIndex(), high.getServicePriority().toJava(), lowerServiceIndex); } } })); @@ -122,7 +121,7 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase private void unbindServiceOnTunnel(List> futures, BoundServices boundServiceOld, List boundServices, BoundServicesState boundServicesState) { futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { - BigInteger dpId = boundServicesState.getDpid(); + Uint64 dpId = boundServicesState.getDpid(); LOG.info("unbinding ingress service {} for tunnel port: {}", boundServiceOld.getServiceName(), boundServicesState.getInterfaceName()); @@ -137,20 +136,20 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase Map tmpServicesMap = new ConcurrentHashMap<>(); short highestPriority = 0xFF; for (BoundServices boundService : boundServices) { - tmpServicesMap.put(boundService.getServicePriority(), boundService); - if (boundService.getServicePriority() < highestPriority) { - highestPriority = boundService.getServicePriority(); + tmpServicesMap.put(boundService.getServicePriority().toJava(), boundService); + if (boundService.getServicePriority().toJava() < highestPriority) { + highestPriority = boundService.getServicePriority().toJava(); } } - if (highestPriority < boundServiceOld.getServicePriority()) { + if (highestPriority < boundServiceOld.getServicePriority().toJava()) { FlowBasedServicesUtils.removeLPortDispatcherFlow(dpId, boundServicesState.getInterfaceName(), - boundServiceOld, tx, boundServiceOld.getServicePriority()); + boundServiceOld, tx, boundServiceOld.getServicePriority().toJava()); return; } List matches; - long portNo = boundServicesState.getPortNo(); + long portNo = boundServicesState.getPortNo().toJava(); matches = FlowBasedServicesUtils.getMatchInfoForTunnelPortAtIngressTable(dpId, portNo); BoundServices toBeMoved = tmpServicesMap.get(highestPriority); @@ -160,7 +159,7 @@ public class FlowBasedIngressServicesConfigUnbindHelper extends AbstractFlowBase FlowBasedServicesUtils.installInterfaceIngressFlow(dpId, iface, toBeMoved, tx, matches, boundServicesState.getIfIndex(), NwConstants.VLAN_INTERFACE_INGRESS_TABLE); FlowBasedServicesUtils.removeLPortDispatcherFlow(dpId, iface.getName(), toBeMoved, tx, - toBeMoved.getServicePriority()); + toBeMoved.getServicePriority().toJava()); })); } 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 86e39139f..4bf82eb03 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 @@ -204,8 +204,8 @@ public class FlowBasedServicesConfigListener implements ClusteredDataTreeChangeL * and the functionality will remain same for all other applications as it was earlier. */ if (boundServiceNew.getServicePriority() != null && ( - boundServiceNew.getServicePriority() == NwConstants.ACL_SERVICE_INDEX - || boundServiceNew.getServicePriority() == NwConstants.EGRESS_ACL_SERVICE_INDEX) + boundServiceNew.getServicePriority().toJava() == NwConstants.ACL_SERVICE_INDEX + || boundServiceNew.getServicePriority().toJava() == NwConstants.EGRESS_ACL_SERVICE_INDEX) && !Objects.equals(boundServiceOld, boundServiceNew)) { LOG.info("Bound services flow update for service {}", boundServiceNew.getServiceName()); add(serviceKey, boundServiceNew, boundServicesList); 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 017fb9bf4..c9dcb3f06 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.listeners; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; @@ -27,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.ser import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,14 +61,14 @@ public class FlowBasedServicesNodeStateListener extends AbstractSyncDataTreeChan @Override public void add(@NonNull InstanceIdentifier instanceIdentifier, @NonNull Node node) { - final BigInteger dpId = getDpnID(node); + final Uint64 dpId = getDpnID(node); if (dpId == null) { return; } bindServicesOnTunnelType(dpId); } - private void bindServicesOnTunnelType(final BigInteger dpId) { + private void bindServicesOnTunnelType(final Uint64 dpId) { LOG.debug("Received node add event for {}", dpId); for (final Class serviceMode : FlowBasedServicesUtils.SERVICE_MODE_MAP.values()) { for (final String interfaceName : FlowBasedServicesUtils.INTERFACE_TYPE_BASED_SERVICE_BINDING_KEYWORDS) { @@ -84,11 +84,11 @@ public class FlowBasedServicesNodeStateListener extends AbstractSyncDataTreeChan private static class RendererStateInterfaceBindWorker implements Callable>> { private final String iface; - final BigInteger dpnId; + final Uint64 dpnId; final FlowBasedServicesStateAddable flowBasedServicesStateAddable; RendererStateInterfaceBindWorker(final FlowBasedServicesStateAddable flowBasedServicesStateAddable, - final BigInteger dpnId, + final Uint64 dpnId, final String iface) { this.flowBasedServicesStateAddable = flowBasedServicesStateAddable; this.dpnId = dpnId; @@ -103,12 +103,12 @@ public class FlowBasedServicesNodeStateListener extends AbstractSyncDataTreeChan } } - private BigInteger getDpnID(final Node id) { + private static Uint64 getDpnID(final Node id) { final String[] node = id.getId().getValue().split(":"); if (node.length < 2) { LOG.warn("Unexpected nodeId {}", id.getId().getValue()); return null; } - return new BigInteger(node[1]); + return Uint64.valueOf(node[1]); } } diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateAddable.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateAddable.java index bb38d8ecb..7ae542bac 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateAddable.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateAddable.java @@ -8,16 +8,16 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.factory; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.List; 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.ServiceModeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices; +import org.opendaylight.yangtools.yang.common.Uint64; public interface FlowBasedServicesStateAddable { void bindServices(List> futures, Interface ifaceState, List allServices, Class serviceMode); - void bindServicesOnInterfaceType(List> futures, BigInteger dpnId, String ifaceName); + void bindServicesOnInterfaceType(List> futures, Uint64 dpnId, String ifaceName); } diff --git a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateRemovable.java b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateRemovable.java index 12af4dac3..6b0e5bb8b 100644 --- a/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateRemovable.java +++ b/interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/state/factory/FlowBasedServicesStateRemovable.java @@ -8,14 +8,14 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.factory; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.List; 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.ServiceModeBase; +import org.opendaylight.yangtools.yang.common.Uint64; public interface FlowBasedServicesStateRemovable { void unbindServices(List> futures, Interface ifaceState, Class serviceMode); - void unbindServicesOnInterfaceType(List> futures, BigInteger dpnId, String ifaceName); + void unbindServicesOnInterfaceType(List> futures, Uint64 dpnId, String ifaceName); } 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 00de8c5e4..11f8d3565 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 @@ -10,7 +10,6 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.List; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore.Configuration; @@ -23,6 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.re 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.ServiceModeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,7 +69,7 @@ public abstract class AbstractFlowBasedServicesStateBindHelper implements FlowBa List allServices, Interface ifState); @Override - public abstract void bindServicesOnInterfaceType(List> futures, BigInteger dpnId, + public abstract void bindServicesOnInterfaceType(List> futures, Uint64 dpnId, String ifaceName); } 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 39a007810..565ff9dea 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 @@ -8,12 +8,10 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.helpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Comparator; 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; @@ -25,6 +23,7 @@ import org.opendaylight.genius.mdsalutil.NwConstants; 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,11 +46,11 @@ public class FlowBasedEgressServicesStateBindHelper extends AbstractFlowBasedSer Interface ifState) { LOG.info("bind all egress services for interface: {}", ifState.getName()); NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState); - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); allServices.sort(Comparator.comparing(BoundServices::getServicePriority)); BoundServices highestPriority = allServices.remove(0); - short nextServiceIndex = (short) (allServices.size() > 0 ? allServices.get(0).getServicePriority() - : highestPriority.getServicePriority() + 1); + short nextServiceIndex = (short) (allServices.size() > 0 ? allServices.get(0).getServicePriority().toJava() + : highestPriority.getServicePriority().toJava() + 1); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.Interface iface = interfaceManagerCommonUtils .getInterfaceFromConfigDS(ifState.getName()); @@ -61,18 +60,20 @@ public class FlowBasedEgressServicesStateBindHelper extends AbstractFlowBasedSer for (BoundServices boundService : allServices) { if (prev != null) { FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, prev, ifState.getName(), tx, - ifState.getIfIndex(), prev.getServicePriority(), boundService.getServicePriority(), iface); + ifState.getIfIndex(), prev.getServicePriority().toJava(), + boundService.getServicePriority().toJava(), iface); } prev = boundService; } if (prev != null) { FlowBasedServicesUtils.installEgressDispatcherFlows(dpId, prev, ifState.getName(), tx, - ifState.getIfIndex(), prev.getServicePriority(), (short) (prev.getServicePriority() + 1), - iface); + ifState.getIfIndex(), prev.getServicePriority().toJava(), + (short) (prev.getServicePriority().toJava() + 1), iface); } } @Override - public void bindServicesOnInterfaceType(List> futures, BigInteger dpnId, String ifaceName) { + public void bindServicesOnInterfaceType(List> futures, Uint64 dpnId, String ifaceName) { + // TODO: No-op? } } 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 9960a9561..68b8cb90f 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 @@ -8,12 +8,10 @@ package org.opendaylight.genius.interfacemanager.servicebindings.flowbased.state.helpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Comparator; 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; @@ -28,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.re 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,7 +62,7 @@ public class FlowBasedIngressServicesStateBindHelper extends AbstractFlowBasedSe .getInterfaceFromConfigDS(ifState.getName()); NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState); long portNo = IfmUtil.getPortNumberFromNodeConnectorId(nodeConnectorId); - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); List matches = FlowBasedServicesUtils.getMatchInfoForTunnelPortAtIngressTable(dpId, portNo); BoundServices highestPriorityBoundService = FlowBasedServicesUtils.getHighestPriorityService(allServices); FlowBasedServicesUtils.installInterfaceIngressFlow(dpId, iface, highestPriorityBoundService, @@ -72,8 +71,8 @@ public class FlowBasedIngressServicesStateBindHelper extends AbstractFlowBasedSe for (BoundServices boundService : allServices) { if (!boundService.equals(highestPriorityBoundService)) { FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, boundService, ifState.getName(), - tx, ifState.getIfIndex(), boundService.getServicePriority(), - (short) (boundService.getServicePriority() + 1)); + tx, ifState.getIfIndex(), boundService.getServicePriority().toJava(), + (short) (boundService.getServicePriority().toJava() + 1)); } } } @@ -82,29 +81,32 @@ public class FlowBasedIngressServicesStateBindHelper extends AbstractFlowBasedSe Interface ifState) { LOG.info("bind all ingress services for vlan port: {}", ifState.getName()); NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState); - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); allServices.sort(Comparator.comparing(BoundServices::getServicePriority)); BoundServices highestPriority = allServices.remove(0); - short nextServiceIndex = (short) (allServices.size() > 0 ? allServices.get(0).getServicePriority() - : highestPriority.getServicePriority() + 1); + short nextServiceIndex = (short) (allServices.size() > 0 ? allServices.get(0).getServicePriority().toJava() + : highestPriority.getServicePriority().toJava() + 1); FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, highestPriority, ifState.getName(), tx, ifState.getIfIndex(), NwConstants.DEFAULT_SERVICE_INDEX, nextServiceIndex); BoundServices prev = null; for (BoundServices boundService : allServices) { if (prev != null) { FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, prev, ifState.getName(), tx, - ifState.getIfIndex(), prev.getServicePriority(), boundService.getServicePriority()); + ifState.getIfIndex(), prev.getServicePriority().toJava(), + boundService.getServicePriority().toJava()); } prev = boundService; } if (prev != null) { FlowBasedServicesUtils.installLPortDispatcherFlow(dpId, prev, ifState.getName(), tx, - ifState.getIfIndex(), prev.getServicePriority(), (short) (prev.getServicePriority() + 1)); + ifState.getIfIndex(), prev.getServicePriority().toJava(), + (short) (prev.getServicePriority().toJava() + 1)); } } @Override - public void bindServicesOnInterfaceType(List> futures, BigInteger dpnId, String ifaceName) { + public void bindServicesOnInterfaceType(List> futures, Uint64 dpnId, String ifaceName) { + // FIXME: does this mean this is not finished? LOG.info("bindServicesOnInterfaceType Ingress - WIP"); } } 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 91b6416d0..a2d46475c 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 @@ -13,7 +13,6 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -87,6 +86,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -144,7 +144,7 @@ public final class FlowBasedServicesUtils { } @Nullable - public static BigInteger getDpnIdFromInterface( + public static Uint64 getDpnIdFromInterface( org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang .ietf.interfaces.rev140508.interfaces.state.Interface ifState) { if (ifState != null) { @@ -155,13 +155,13 @@ public final class FlowBasedServicesUtils { return null; } - public static List getMatchInfoForVlanPortAtIngressTable(BigInteger dpId, long portNo, Interface iface) { + public static List getMatchInfoForVlanPortAtIngressTable(Uint64 dpId, long portNo, Interface iface) { List matches = new ArrayList<>(); matches.add(new MatchInPort(dpId, portNo)); int vlanId = 0; IfL2vlan l2vlan = iface.augmentation(IfL2vlan.class); if (l2vlan != null) { - vlanId = l2vlan.getVlanId() == null ? 0 : l2vlan.getVlanId().getValue(); + vlanId = l2vlan.getVlanId() == null ? 0 : l2vlan.getVlanId().getValue().toJava(); } if (vlanId >= 0 && l2vlan.getL2vlanMode() != IfL2vlan.L2vlanMode.Transparent) { matches.add(new MatchVlanVid(vlanId)); @@ -170,7 +170,7 @@ public final class FlowBasedServicesUtils { } @NonNull - public static List getMatchInfoForTunnelPortAtIngressTable(BigInteger dpId, long portNo) { + public static List getMatchInfoForTunnelPortAtIngressTable(Uint64 dpId, long portNo) { List matches = new ArrayList<>(); matches.add(new MatchInPort(dpId, portNo)); return matches; @@ -190,7 +190,7 @@ public final class FlowBasedServicesUtils { return matches; } - public static void installInterfaceIngressFlow(BigInteger dpId, Interface iface, BoundServices boundServiceNew, + public static void installInterfaceIngressFlow(Uint64 dpId, Interface iface, BoundServices boundServiceNew, TypedWriteTransaction tx, List matches, int lportTag, short tableId) { List instructions = boundServiceNew.augmentation(StypeOpenflow.class).getInstruction(); @@ -199,7 +199,7 @@ public final class FlowBasedServicesUtils { int vlanId = 0; IfL2vlan l2vlan = iface.augmentation(IfL2vlan.class); if (l2vlan != null && l2vlan.getVlanId() != null) { - vlanId = l2vlan.getVlanId().getValue(); + vlanId = l2vlan.getVlanId().getValue().toJava(); } if (vlanId != 0) { // incrementing instructionSize and using it as actionKey. Because @@ -209,11 +209,11 @@ public final class FlowBasedServicesUtils { } if (lportTag != 0L) { - BigInteger[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(instructions); - short index = boundServiceNew.getServicePriority(); - BigInteger metadata = MetaDataUtil.getMetaDataForLPortDispatcher(lportTag, ++index, metadataValues[0], + Uint64[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(instructions); + short index = boundServiceNew.getServicePriority().toJava(); + Uint64 metadata = MetaDataUtil.getMetaDataForLPortDispatcher(lportTag, ++index, metadataValues[0], isExternal(iface)); - BigInteger metadataMask = MetaDataUtil.getMetaDataMaskForLPortDispatcher( + Uint64 metadataMask = MetaDataUtil.getMetaDataMaskForLPortDispatcher( MetaDataUtil.METADATA_MASK_SERVICE_INDEX, MetaDataUtil.METADATA_MASK_LPORT_TAG_SH_FLAG, metadataValues[1]); instructionSet.add( @@ -238,14 +238,14 @@ public final class FlowBasedServicesUtils { String serviceRef = boundServiceNew.getServiceName(); String flowRef = getFlowRef(dpId, NwConstants.VLAN_INTERFACE_INGRESS_TABLE, iface.getName(), - boundServiceNew.getServicePriority()); + boundServiceNew.getServicePriority().toJava()); StypeOpenflow stypeOpenflow = boundServiceNew.augmentation(StypeOpenflow.class); - Flow ingressFlow = MDSALUtil.buildFlowNew(tableId, flowRef, stypeOpenflow.getFlowPriority(), serviceRef, 0, 0, - stypeOpenflow.getFlowCookie(), matches, instructionSet); + Flow ingressFlow = MDSALUtil.buildFlowNew(tableId, flowRef, stypeOpenflow.getFlowPriority().toJava(), + serviceRef, 0, 0, stypeOpenflow.getFlowCookie(), matches, instructionSet); installFlow(dpId, ingressFlow, tx); } - public static void installFlow(BigInteger dpId, Flow flow, TypedWriteTransaction writeTransaction) { + public static void installFlow(Uint64 dpId, Flow flow, TypedWriteTransaction writeTransaction) { FlowKey flowKey = new FlowKey(new FlowId(flow.getId())); Node nodeDpn = buildInventoryDpnNode(dpId); InstanceIdentifier flowInstanceId = InstanceIdentifier.builder(Nodes.class) @@ -256,12 +256,12 @@ public final class FlowBasedServicesUtils { EVENT_LOGGER.debug("IFM,InstallFlow {}", flow.getId()); } - private static Node buildInventoryDpnNode(BigInteger dpnId) { + private static Node buildInventoryDpnNode(Uint64 dpnId) { NodeId nodeId = new NodeId("openflow:" + dpnId); return new NodeBuilder().setId(nodeId).withKey(new NodeKey(nodeId)).build(); } - public static void installLPortDispatcherFlow(BigInteger dpId, BoundServices boundService, String interfaceName, + public static void installLPortDispatcherFlow(Uint64 dpId, BoundServices boundService, String interfaceName, TypedWriteTransaction tx, int interfaceTag, short currentServiceIndex, short nextServiceIndex) { String serviceRef = boundService.getServiceName(); @@ -273,10 +273,10 @@ public final class FlowBasedServicesUtils { StypeOpenflow stypeOpenFlow = boundService.augmentation(StypeOpenflow.class); List serviceInstructions = stypeOpenFlow.getInstruction(); int instructionSize = serviceInstructions != null ? serviceInstructions.size() : 0; - BigInteger[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(serviceInstructions); - BigInteger metadata = MetaDataUtil.getMetaDataForLPortDispatcher(interfaceTag, nextServiceIndex, + Uint64[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(serviceInstructions); + Uint64 metadata = MetaDataUtil.getMetaDataForLPortDispatcher(interfaceTag, nextServiceIndex, metadataValues[0]); - BigInteger metadataMask = MetaDataUtil.getWriteMetaDataMaskForDispatcherTable(); + Uint64 metadataMask = MetaDataUtil.getWriteMetaDataMaskForDispatcherTable(); // build the final instruction for LPort Dispatcher table flow entry List instructions = new ArrayList<>(); @@ -301,14 +301,13 @@ public final class FlowBasedServicesUtils { String flowRef = getFlowRef(dpId, NwConstants.LPORT_DISPATCHER_TABLE, interfaceName, currentServiceIndex); Flow ingressFlow = MDSALUtil.buildFlowNew(NwConstants.LPORT_DISPATCHER_TABLE, flowRef, - DEFAULT_DISPATCHER_PRIORITY, serviceRef, 0, 0, stypeOpenFlow.getFlowCookie(), matches, - instructions); + DEFAULT_DISPATCHER_PRIORITY, serviceRef, 0, 0, stypeOpenFlow.getFlowCookie(), matches, instructions); LOG.debug("Installing LPort Dispatcher Flow on DPN {}, for interface {}, with flowRef {}", dpId, interfaceName, flowRef); installFlow(dpId, ingressFlow, tx); } - public static void installEgressDispatcherFlows(BigInteger dpId, BoundServices boundService, String interfaceName, + public static void installEgressDispatcherFlows(Uint64 dpId, BoundServices boundService, String interfaceName, TypedWriteTransaction tx, int interfaceTag, short currentServiceIndex, short nextServiceIndex, Interface iface) { LOG.debug("Installing Egress Dispatcher Flows on dpn : {}, for interface : {}", dpId, interfaceName); @@ -319,14 +318,14 @@ public final class FlowBasedServicesUtils { // this flow drops traffic targeted to external interfaces if they // arrived // from an external interface (marked with the SH bit) - if (boundService.getServicePriority() == ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME, + if (boundService.getServicePriority().toJava() == ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME, NwConstants.DEFAULT_EGRESS_SERVICE_INDEX)) { installEgressDispatcherSplitHorizonFlow(dpId, boundService, interfaceName, tx, interfaceTag, currentServiceIndex, iface); } } - private static void installEgressDispatcherFlow(BigInteger dpId, BoundServices boundService, String interfaceName, + private static void installEgressDispatcherFlow(Uint64 dpId, BoundServices boundService, String interfaceName, TypedWriteTransaction tx, int interfaceTag, short currentServiceIndex, short nextServiceIndex) { @@ -343,10 +342,10 @@ public final class FlowBasedServicesUtils { // build the final instruction for LPort Dispatcher table flow entry List finalApplyActions = new ArrayList<>(); List instructions = new ArrayList<>(); - if (boundService.getServicePriority() != ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME, + if (boundService.getServicePriority().toJava() != ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME, NwConstants.DEFAULT_EGRESS_SERVICE_INDEX)) { - BigInteger[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(serviceInstructions); - BigInteger metadataMask = MetaDataUtil.getWriteMetaDataMaskForEgressDispatcherTable(); + Uint64[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(serviceInstructions); + Uint64 metadataMask = MetaDataUtil.getWriteMetaDataMaskForEgressDispatcherTable(); instructions.add(MDSALUtil.buildAndGetWriteMetadaInstruction(metadataValues[0], metadataMask, instructions.size())); finalApplyActions.add(MDSALUtil.createSetReg6Action(finalApplyActions.size(), 0, 31, @@ -380,13 +379,13 @@ public final class FlowBasedServicesUtils { String flowRef = getFlowRef(dpId, NwConstants.EGRESS_LPORT_DISPATCHER_TABLE, interfaceName, currentServiceIndex); Flow egressFlow = MDSALUtil.buildFlowNew(NwConstants.EGRESS_LPORT_DISPATCHER_TABLE, flowRef, - boundService.getServicePriority(), serviceRef, 0, 0, stypeOpenflow.getFlowCookie(), matches, - instructions); + boundService.getServicePriority().toJava(), serviceRef, 0, 0, stypeOpenflow.getFlowCookie(), + matches, instructions); LOG.debug("Installing Egress Dispatcher Flow for interface : {}, with flow-ref : {}", interfaceName, flowRef); installFlow(dpId, egressFlow, tx); } - public static void installEgressDispatcherSplitHorizonFlow(BigInteger dpId, BoundServices boundService, + public static void installEgressDispatcherSplitHorizonFlow(Uint64 dpId, BoundServices boundService, String interfaceName, TypedWriteTransaction tx, int interfaceTag, short currentServiceIndex, Interface iface) { // only install split horizon drop flows for external interfaces @@ -398,9 +397,8 @@ public final class FlowBasedServicesUtils { LOG.debug("Installing split horizon drop flow for external interface {} on dpId {}", interfaceName, dpId); } - BigInteger shFlagSet = BigInteger.ONE; // BigInteger.ONE is used for - // checking the Split-Horizon - // flag + // Uint64.ONE is used for checking the Split-Horizon flag + Uint64 shFlagSet = Uint64.ONE; List shMatches = FlowBasedServicesUtils.getMatchInfoForEgressDispatcherTable(interfaceTag, currentServiceIndex); shMatches.add(new MatchMetadata(shFlagSet, MetaDataUtil.METADATA_MASK_SH_FLAG)); @@ -413,16 +411,17 @@ public final class FlowBasedServicesUtils { shFlagSet); String serviceRef = boundService.getServiceName(); // This must be higher priority than the egress flow - int splitHorizonFlowPriority = boundService.getServicePriority() + 1; + int splitHorizonFlowPriority = boundService.getServicePriority().toJava() + 1; StypeOpenflow stypeOpenFlow = boundService.augmentation(StypeOpenflow.class); Flow egressSplitHorizonFlow = MDSALUtil.buildFlow(NwConstants.EGRESS_LPORT_DISPATCHER_TABLE, flowRef, - splitHorizonFlowPriority, serviceRef, 0, 0, stypeOpenFlow.getFlowCookie(), shMatches, shInstructions); + splitHorizonFlowPriority, serviceRef, 0, 0, stypeOpenFlow.getFlowCookie(), + shMatches, shInstructions); installFlow(dpId, egressSplitHorizonFlow, tx); } public static BoundServices getBoundServices(String serviceName, short servicePriority, int flowPriority, - BigInteger cookie, List instructions) { + Uint64 cookie, List instructions) { StypeOpenflowBuilder augBuilder = new StypeOpenflowBuilder().setFlowCookie(cookie).setFlowPriority(flowPriority) .setInstruction(instructions); return new BoundServicesBuilder().withKey(new BoundServicesKey(servicePriority)).setServiceName(serviceName) @@ -497,7 +496,7 @@ public final class FlowBasedServicesUtils { IfmUtil.bindService(tx, interfaceName, serviceInfo, ServiceModeEgress.class); } - public static void removeIngressFlow(String interfaceName, BigInteger dpId, ManagedNewTransactionRunner txRunner, + public static void removeIngressFlow(String interfaceName, Uint64 dpId, ManagedNewTransactionRunner txRunner, List> futures) { if (dpId == null) { return; @@ -517,10 +516,10 @@ public final class FlowBasedServicesUtils { })); } - public static void removeIngressFlow(String name, BoundServices serviceOld, BigInteger dpId, + public static void removeIngressFlow(String name, BoundServices serviceOld, Uint64 dpId, TypedWriteTransaction writeTransaction) { String flowKeyStr = getFlowRef(dpId, NwConstants.VLAN_INTERFACE_INGRESS_TABLE, name, - serviceOld.getServicePriority()); + serviceOld.getServicePriority().toJava()); LOG.debug("Removing Ingress Flow {}", flowKeyStr); FlowKey flowKey = new FlowKey(new FlowId(flowKeyStr)); Node nodeDpn = buildInventoryDpnNode(dpId); @@ -532,7 +531,7 @@ public final class FlowBasedServicesUtils { writeTransaction.delete(flowInstanceId); } - public static void removeLPortDispatcherFlow(BigInteger dpId, String iface, BoundServices boundServicesOld, + public static void removeLPortDispatcherFlow(Uint64 dpId, String iface, BoundServices boundServicesOld, TypedWriteTransaction writeTransaction, short currentServiceIndex) { LOG.debug("Removing LPort Dispatcher Flows {}, {}", dpId, iface); @@ -551,14 +550,14 @@ public final class FlowBasedServicesUtils { EVENT_LOGGER.debug("IFM,removeFlow {}", flowRef); } - public static void removeEgressDispatcherFlows(BigInteger dpId, String iface, + public static void removeEgressDispatcherFlows(Uint64 dpId, String iface, TypedWriteTransaction writeTransaction, short currentServiceIndex) { LOG.debug("Removing Egress Dispatcher Flows {}, {}", dpId, iface); removeEgressDispatcherFlow(dpId, iface, writeTransaction, currentServiceIndex); removeEgressSplitHorizonDispatcherFlow(dpId, iface, writeTransaction); } - private static void removeEgressDispatcherFlow(BigInteger dpId, String iface, + private static void removeEgressDispatcherFlow(Uint64 dpId, String iface, TypedWriteTransaction writeTransaction, short currentServiceIndex) { // build the flow and install it String flowRef = getFlowRef(dpId, NwConstants.EGRESS_LPORT_DISPATCHER_TABLE, iface, @@ -574,10 +573,10 @@ public final class FlowBasedServicesUtils { EVENT_LOGGER.debug("IFM,removeFlow {}", flowRef); } - public static void removeEgressSplitHorizonDispatcherFlow(BigInteger dpId, String iface, + public static void removeEgressSplitHorizonDispatcherFlow(Uint64 dpId, String iface, TypedWriteTransaction writeTransaction) { - // BigInteger.ONE is used for checking the Split-Horizon flag - BigInteger shFlagSet = BigInteger.ONE; + // Uint64.ONE is used for checking the Split-Horizon flag + Uint64 shFlagSet = Uint64.ONE; String shFlowRef = getSplitHorizonFlowRef(dpId, NwConstants.EGRESS_LPORT_DISPATCHER_TABLE, iface, shFlagSet); FlowKey shFlowKey = new FlowKey(new FlowId(shFlowRef)); @@ -590,16 +589,16 @@ public final class FlowBasedServicesUtils { writeTransaction.delete(shFlowInstanceId); } - public static String getFlowRef(short tableId, BigInteger dpnId, String infName) { + public static String getFlowRef(short tableId, Uint64 dpnId, String infName) { return String.format("%d:%s:%s", tableId, dpnId, infName); } - private static String getFlowRef(BigInteger dpnId, short tableId, String iface, short currentServiceIndex) { + private static String getFlowRef(Uint64 dpnId, short tableId, String iface, short currentServiceIndex) { return String.valueOf(dpnId) + NwConstants.FLOWID_SEPARATOR + tableId + NwConstants.FLOWID_SEPARATOR + iface + NwConstants.FLOWID_SEPARATOR + currentServiceIndex; } - private static String getSplitHorizonFlowRef(BigInteger dpnId, short tableId, String iface, BigInteger shFlag) { + private static String getSplitHorizonFlowRef(Uint64 dpnId, short tableId, String iface, Uint64 shFlag) { return String.valueOf(dpnId) + NwConstants.FLOWID_SEPARATOR + tableId + NwConstants.FLOWID_SEPARATOR + iface + NwConstants.FLOWID_SEPARATOR + shFlag.toString(); } @@ -630,7 +629,7 @@ public final class FlowBasedServicesUtils { List availableServiceInfos = new ArrayList<>(serviceInfos); availableServiceInfos.sort(Comparator.comparing(BoundServices::getServicePriority)); for (BoundServices availableServiceInfo : availableServiceInfos) { - if (currentServiceInfo.getServicePriority() < availableServiceInfo.getServicePriority()) { + if (currentServiceInfo.getServicePriority().toJava() < availableServiceInfo.getServicePriority().toJava()) { lower = availableServiceInfo; break; } else { @@ -648,21 +647,22 @@ public final class FlowBasedServicesUtils { BoundServices highPriorityService = availableServiceInfos.get(0); availableServiceInfos.remove(0); for (BoundServices availableServiceInfo : availableServiceInfos) { - if (availableServiceInfo.getServicePriority() < highPriorityService.getServicePriority()) { + if (availableServiceInfo.getServicePriority().toJava() + < highPriorityService.getServicePriority().toJava()) { highPriorityService = availableServiceInfo; } } return highPriorityService; } - public static void installLportIngressFlow(BigInteger dpId, long portNo, Interface iface, + public static void installLportIngressFlow(Uint64 dpId, long portNo, Interface iface, List> futures, ManagedNewTransactionRunner txRunner, int lportTag) { int vlanId = 0; boolean isVlanTransparent = false; IfL2vlan l2vlan = iface.augmentation(IfL2vlan.class); if (l2vlan != null) { - vlanId = l2vlan.getVlanId() == null ? 0 : l2vlan.getVlanId().getValue(); + vlanId = l2vlan.getVlanId() == null ? 0 : l2vlan.getVlanId().getValue().toJava(); isVlanTransparent = l2vlan.getL2vlanMode() == IfL2vlan.L2vlanMode.Transparent; } int instructionKey = 0; @@ -683,9 +683,9 @@ public final class FlowBasedServicesUtils { if (!actions.isEmpty()) { instructions.add(MDSALUtil.buildApplyActionsInstruction(actions, instructionKey++)); } - BigInteger metadata = MetaDataUtil.getMetaDataForLPortDispatcher(lportTag, (short) 0, BigInteger.ZERO, + Uint64 metadata = MetaDataUtil.getMetaDataForLPortDispatcher(lportTag, (short) 0, Uint64.ZERO, isExternal(iface)); - BigInteger metadataMask = MetaDataUtil + Uint64 metadataMask = MetaDataUtil .getMetaDataMaskForLPortDispatcher(MetaDataUtil.METADATA_MASK_LPORT_TAG_SH_FLAG); instructions.add(MDSALUtil.buildAndGetWriteMetadaInstruction(metadata, metadataMask, instructionKey++)); instructions @@ -705,7 +705,7 @@ public final class FlowBasedServicesUtils { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface interfaceState, Class serviceMode) { NodeConnectorId nodeConnectorId = IfmUtil.getNodeConnectorIdFromInterface(interfaceState); - BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId); long portNo = IfmUtil.getPortNumberFromNodeConnectorId(nodeConnectorId); BoundServicesStateKey boundServicesStateKey = new BoundServicesStateKey(interfaceState.getName(), serviceMode); return new BoundServicesStateBuilder().setDpid(dpId).setIfIndex(interfaceState.getIfIndex()) diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/IfmUtilTest.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/IfmUtilTest.java index 2d48e3d52..4e2283a9b 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/IfmUtilTest.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/IfmUtilTest.java @@ -5,19 +5,18 @@ * 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.interfacemanager.test; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; -import java.math.BigInteger; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.genius.interfacemanager.IfmUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yangtools.yang.common.Uint64; public class IfmUtilTest { @@ -31,9 +30,9 @@ public class IfmUtilTest { @Test public void testDpnConversions() { - String nodeId = IfmUtil.buildDpnNodeId(BigInteger.valueOf(101)).getValue(); + String nodeId = IfmUtil.buildDpnNodeId(Uint64.valueOf(101)).getValue(); assertEquals("openflow:101", nodeId); when(ncId.getValue()).thenReturn("openflow:101:11"); - assertEquals(new BigInteger("101"), IfmUtil.getDpnFromNodeConnectorId(ncId)); + assertEquals(Uint64.valueOf(101), IfmUtil.getDpnFromNodeConnectorId(ncId)); } } 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 1bc1b96b1..38eac9da1 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 @@ -28,13 +28,11 @@ import static org.opendaylight.genius.mdsalutil.NwConstants.VLAN_INTERFACE_INGRE import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; import com.google.common.base.Optional; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.concurrent.Future; import javax.inject.Inject; - import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -158,6 +156,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Component tests for interface manager. @@ -281,7 +280,7 @@ public class InterfaceManagerConfigurationTest { // c) check expected flow entries were created in Interface Ingress // Table - BigInteger dpnId = BigInteger.valueOf(1); + Uint64 dpnId = Uint64.ONE; String ingressFlowRef = FlowBasedServicesUtils.getFlowRef(VLAN_INTERFACE_INGRESS_TABLE, dpnId, INTERFACE_NAME); FlowKey ingressFlowKey = new FlowKey(new FlowId(ingressFlowRef)); Node nodeDpn = InterfaceManagerTestUtil.buildInventoryDpnNode(dpnId); @@ -578,7 +577,7 @@ public class InterfaceManagerConfigurationTest { assertEqualBeans(PARENT_INTERFACE, interfaceInfo.augmentation(ParentRefs.class).getParentInterface()); // 3. fetch dpn-id corresponding to an interface - BigInteger dpnId = interfaceManager.getDpnForInterface(INTERFACE_NAME); + Uint64 dpnId = interfaceManager.getDpnForInterface(INTERFACE_NAME); Assert.assertEquals(DPN_ID_1, dpnId); // 4. fetch parent-interface corresponding to an interface @@ -926,7 +925,7 @@ public class InterfaceManagerConfigurationTest { assertEqualBeans(ExpectedInterfaceListFromDpn.checkDpnToInterfaceList(), actualDpnInterfaceList.get(0)); } - private void createDpnToInterface(BigInteger dpId, String infName, + private void createDpnToInterface(Uint64 dpId, String infName, Class interfaceType) throws Exception { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpId); 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 8b0483722..f28b0e683 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 @@ -14,7 +14,6 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - import org.awaitility.core.ConditionTimeoutException; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; @@ -76,6 +75,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,8 +91,8 @@ public final class InterfaceManagerTestUtil { public static final String TUNNEL_INTERFACE_NAME = "tun414a856a7a4"; public static final String TRUNK_INTERFACE_NAME = "23701c04-7e58-4c65-9425-78a80d49a219"; - public static final BigInteger DPN_ID_1 = BigInteger.valueOf(1); - public static final BigInteger DPN_ID_2 = BigInteger.valueOf(2); + public static final Uint64 DPN_ID_1 = Uint64.ONE; + public static final Uint64 DPN_ID_2 = Uint64.valueOf(2); public static final long PORT_NO_1 = 2; public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1")); @@ -126,7 +126,7 @@ public final class InterfaceManagerTestUtil { return ifaceBuilder.build(); } - static Node buildInventoryDpnNode(BigInteger dpnId) { + static Node buildInventoryDpnNode(Uint64 dpnId) { NodeId nodeId = new NodeId("openflow:" + dpnId); Node nodeDpn = new NodeBuilder().setId(nodeId).withKey(new NodeKey(nodeId)).build(); @@ -154,16 +154,16 @@ public final class InterfaceManagerTestUtil { return fcNodeConnector.build(); } - static NodeConnectorId buildNodeConnectorId(BigInteger dpn, long portNo) { + static NodeConnectorId buildNodeConnectorId(Uint64 dpn, long portNo) { return new NodeConnectorId(buildNodeConnectorString(dpn, portNo)); } - static String buildNodeConnectorString(BigInteger dpn, long portNo) { + static String buildNodeConnectorString(Uint64 dpn, long portNo) { return IfmConstants.OF_URI_PREFIX + dpn + IfmConstants.OF_URI_SEPARATOR + portNo; } static InstanceIdentifier - buildNodeConnectorInstanceIdentifier(BigInteger dpn, long portNo) { + buildNodeConnectorInstanceIdentifier(Uint64 dpn, long portNo) { NodeConnectorId nodeConnectorId = buildNodeConnectorId(dpn, portNo); NodeId nodeId = IfmUtil.getNodeIdFromNodeConnectorId(nodeConnectorId); InstanceIdentifier @@ -259,7 +259,7 @@ public final class InterfaceManagerTestUtil { interfaceInfo = InterfaceManagerTestUtil.buildInterface(ifaceName, ifaceName, true, ifType, parentRefs.getParentInterface(), IfL2vlan.L2vlanMode.Trunk); } else { - interfaceInfo = buildTunnelInterface(parentRefs.getDatapathNodeIdentifier(),ifaceName, ifaceName, + interfaceInfo = buildTunnelInterface(parentRefs.getDatapathNodeIdentifier().toJava(),ifaceName, ifaceName, true, TunnelTypeVxlan.class, "1.1.1.1", "2.2.2.2"); } InstanceIdentifier interfaceInstanceIdentifier = IfmUtil.buildId(ifaceName); @@ -282,7 +282,7 @@ public final class InterfaceManagerTestUtil { Class ifType) throws TransactionCommitFailedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + 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); @@ -293,7 +293,7 @@ public final class InterfaceManagerTestUtil { static void updateFlowCapableNodeConnectorState(DataBroker dataBroker, String interfaceName, Class ifType, boolean isLive) throws TransactionCommitFailedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + 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); @@ -304,7 +304,7 @@ public final class InterfaceManagerTestUtil { static void removeFlowCapableNodeConnectorState(DataBroker dataBroker, Class ifType) throws TransactionCommitFailedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + 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(); @@ -355,7 +355,7 @@ public final class InterfaceManagerTestUtil { } static BoundServices getBoundServices(String serviceName, short servicePriority, int flowPriority, - BigInteger cookie, List instructions) { + Uint64 cookie, List instructions) { StypeOpenflowBuilder augBuilder = new StypeOpenflowBuilder().setFlowCookie(cookie).setFlowPriority(flowPriority) .setInstruction(instructions); return new BoundServicesBuilder().withKey(new BoundServicesKey(servicePriority)).setServiceName(serviceName) diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceInfo.xtend b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceInfo.xtend index 428ef1117..dadd1a8b0 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceInfo.xtend +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceInfo.xtend @@ -12,11 +12,12 @@ import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceA import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceOpState import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceType import org.opendaylight.genius.interfacemanager.globals.VlanInterfaceInfo +import org.opendaylight.yangtools.yang.common.Uint64 class ExpectedInterfaceInfo { static def newInterfaceInfo(Integer lportTag, String ifaceName, String parentInterface, InterfaceInfo.InterfaceType ifaceType) { - new InterfaceInfo(1bi, parentInterface) => [ + new InterfaceInfo(Uint64.ONE, parentInterface) => [ adminState = InterfaceAdminState.ENABLED interfaceName = ifaceName interfaceTag = 1 @@ -29,7 +30,7 @@ class ExpectedInterfaceInfo { } static def newVlanInterfaceInfo() { - new VlanInterfaceInfo(1bi, "tap23701c04-7e", 0 as short) => [ + new VlanInterfaceInfo(Uint64.ONE, "tap23701c04-7e", 0 as short) => [ adminState = InterfaceAdminState.ENABLED interfaceName = "23701c04-7e58-4c65-9425-78a80d49a218" interfaceTag = 1 diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedPortFromInterface.xtend b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/PortFromInterfaceOutput.xtend similarity index 91% rename from interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedPortFromInterface.xtend rename to interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/PortFromInterfaceOutput.xtend index af66f4cf4..5789528fd 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedPortFromInterface.xtend +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/PortFromInterfaceOutput.xtend @@ -8,6 +8,7 @@ package org.opendaylight.genius.interfacemanager.test.xtend import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetPortFromInterfaceOutputBuilder +import org.opendaylight.yangtools.yang.common.Uint64 import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan @@ -15,7 +16,7 @@ class PortFromInterfaceOutput { static def newPortFromInterfaceOutput() { new GetPortFromInterfaceOutputBuilder >> [ - dpid = 1bi + dpid = Uint64.ONE phyAddress = "AA:AA:AA:AA:AA:AA" portname = "23701c04-7e58-4c65-9425-78a80d49a218" portno = 2L diff --git a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java index 17e52bd1b..297c11244 100644 --- a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java +++ b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.interfacemanager.shell; -import java.math.BigInteger; import java.util.Formatter; import org.apache.felix.service.command.CommandSession; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; @@ -19,6 +18,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options; +import org.opendaylight.yangtools.yang.common.Uint64; public final class IfmCLIUtil { private static final String VLAN_OUTPUT_FORMAT_LINE1 = "%-55s"; @@ -60,7 +60,7 @@ public final class IfmCLIUtil { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); IfL2vlan l2vlan = iface.augmentation(IfL2vlan.class); - int vlanId = l2vlan != null ? l2vlan.getVlanId() != null ? l2vlan.getVlanId().getValue() : 0 : 0; + int vlanId = l2vlan != null ? l2vlan.getVlanId() != null ? l2vlan.getVlanId().getValue().toJava() : 0 : 0; session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT_LINE1, iface.getName())); sb.setLength(0); @@ -166,7 +166,7 @@ public final class IfmCLIUtil { fmt.close(); } - static void showBridgePortsHeader(CommandSession session, BigInteger dpnId) { + static void showBridgePortsHeader(CommandSession session, Uint64 dpnId) { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); session.getConsole().println(fmt 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 0ec7915e8..1f904b260 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 @@ -15,6 +15,7 @@ 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,10 +39,11 @@ public class ShowOvsPorts extends OsgiCommandSupport { @Override protected Object doExecute() { LOG.debug("Executing show ovs-ports command"); - List ports = interfaceManager.getPortsOnBridge(dpnId); + final Uint64 id = Uint64.valueOf(dpnId); + List ports = interfaceManager.getPortsOnBridge(id); if (!ports.isEmpty()) { - IfmCLIUtil.showBridgePortsHeader(session, dpnId); + IfmCLIUtil.showBridgePortsHeader(session, id); } for (OvsdbTerminationPointAugmentation port: ports) { IfmCLIUtil.showBridgePortsOutput(session, port); diff --git a/interfacemanager/pom.xml b/interfacemanager/pom.xml index 52dcb7a47..999e9904c 100644 --- a/interfacemanager/pom.xml +++ b/interfacemanager/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/Ipv6Util.java b/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/Ipv6Util.java index d0c9077ef..a314b5c9d 100644 --- a/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/Ipv6Util.java +++ b/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/Ipv6Util.java @@ -69,8 +69,8 @@ public final class Ipv6Util { checksum += getSummation(ip6Hdr.getDestinationIpv6()); checksum = normalizeChecksum(checksum); - checksum += ip6Hdr.getIpv6Length(); - checksum += ip6Hdr.getNextHeader(); + checksum += ip6Hdr.getIpv6Length().toJava(); + checksum += ip6Hdr.getNextHeader().toJava(); int icmp6Offset = Ipv6Constants.ICMPV6_OFFSET; long value = (packet[icmp6Offset] & 0xff) << 8 | packet[icmp6Offset + 1] & 0xff; @@ -147,7 +147,8 @@ public final class Ipv6Util { Arrays.fill(data, (byte) 0); ByteBuffer buf = ByteBuffer.wrap(data); - long flowLabel = (long) (ip6Pdu.getVersion() & 0x0f) << 28 | ip6Pdu.getFlowLabel() & 0x0fffffff; + long flowLabel = (long) (ip6Pdu.getVersion().toJava() & 0x0f) << 28 + | ip6Pdu.getFlowLabel().toJava() & 0x0fffffff; buf.putInt((int) flowLabel); buf.putShort((short) ip6Pdu.getIpv6Length().intValue()); buf.put((byte) ip6Pdu.getNextHeader().shortValue()); diff --git a/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/decoders/Ipv6NaDecoder.java b/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/decoders/Ipv6NaDecoder.java index 839890885..7145bb9ce 100644 --- a/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/decoders/Ipv6NaDecoder.java +++ b/ipv6util/api/src/main/java/org/opendaylight/genius/ipv6util/api/decoders/Ipv6NaDecoder.java @@ -69,13 +69,13 @@ public class Ipv6NaDecoder { naPdu.setTargetAddress(Ipv6Address.getDefaultInstance( InetAddress.getByAddress(BitBufferHelper.getBits(data, bitOffset, 128)).getHostAddress())); - if (naPdu.getIpv6Length() > Ipv6Constants.ICMPV6_NA_LENGTH_WO_OPTIONS) { + if (naPdu.getIpv6Length().toJava() > Ipv6Constants.ICMPV6_NA_LENGTH_WO_OPTIONS) { bitOffset = bitOffset + 128; naPdu.setOptionType(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset, 8))); bitOffset = bitOffset + 8; naPdu.setTargetAddrLength(BitBufferHelper.getShort(BitBufferHelper.getBits(data, bitOffset, 8))); bitOffset = bitOffset + 8; - if (naPdu.getOptionType() == Ipv6Constants.ICMP_V6_OPTION_TARGET_LLA) { + if (naPdu.getOptionType().toJava() == Ipv6Constants.ICMP_V6_OPTION_TARGET_LLA) { naPdu.setTargetLlAddress(new MacAddress( Ipv6Util.bytesToHexString(BitBufferHelper.getBits(data, bitOffset, 48)))); } diff --git a/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NdUtilServiceImpl.java b/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NdUtilServiceImpl.java index 395559c7f..3f510a046 100644 --- a/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NdUtilServiceImpl.java +++ b/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NdUtilServiceImpl.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; @@ -32,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeCon import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,7 +63,7 @@ public class Ipv6NdUtilServiceImpl implements Ipv6NdUtilService { Ipv6Address srcIpv6Address; String interfaceName = null; String macAddr = null; - BigInteger dpnId; + Uint64 dpnId; int localErrorCount = 0; targetIpv6Address = ndInput.getTargetIpAddress(); @@ -75,8 +75,8 @@ public class Ipv6NdUtilServiceImpl implements Ipv6NdUtilService { GetPortFromInterfaceOutput portResult = getPortFromInterface(interfaceName); checkNotNull(portResult); dpnId = portResult.getDpid(); - Long portid = portResult.getPortno(); - checkArgument(null != dpnId && BigInteger.ZERO != dpnId, DPN_NOT_FOUND_ERROR, interfaceName); + Long portid = portResult.getPortno().toJava(); + checkArgument(null != dpnId && Uint64.ZERO != dpnId, DPN_NOT_FOUND_ERROR, interfaceName); NodeConnectorRef nodeRef = MDSALUtil.getNodeConnRef(dpnId, portid.toString()); checkNotNull(nodeRef, NODE_CONNECTOR_NOT_FOUND_ERROR, interfaceName); @@ -127,7 +127,7 @@ public class Ipv6NdUtilServiceImpl implements Ipv6NdUtilService { SendNeighborSolicitationToOfGroupInput ndInput) { RpcResultBuilder successBuilder = RpcResultBuilder.success(); ipv6NsHelper.transmitNeighborSolicitationToOfGroup(ndInput.getDpId(), ndInput.getSourceLlAddress(), - ndInput.getSourceIpv6(), ndInput.getTargetIpAddress(), ndInput.getOfGroupId()); + ndInput.getSourceIpv6(), ndInput.getTargetIpAddress(), ndInput.getOfGroupId().toJava()); return successBuilder.buildFuture(); } diff --git a/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelper.java b/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelper.java index 04d921ca0..d863946f9 100644 --- a/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelper.java +++ b/ipv6util/impl/src/main/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelper.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.ipv6util.nd; -import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.ByteBuffer; @@ -40,6 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.Pa import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,17 +110,17 @@ public class Ipv6NsHelper { } private byte[] fillNeighborSolicitationPacket(NeighborSolicitationPacket pdu) { - ByteBuffer buf = ByteBuffer.allocate(Ipv6Constants.ICMPV6_OFFSET + pdu.getIpv6Length()); + ByteBuffer buf = ByteBuffer.allocate(Ipv6Constants.ICMPV6_OFFSET + pdu.getIpv6Length().toJava()); buf.put(Ipv6Util.convertEthernetHeaderToByte(pdu), 0, 14); buf.put(Ipv6Util.convertIpv6HeaderToByte(pdu), 0, 40); - buf.put(icmp6NsPayloadtoByte(pdu), 0, pdu.getIpv6Length()); + buf.put(icmp6NsPayloadtoByte(pdu), 0, pdu.getIpv6Length().toJava()); int checksum = Ipv6Util.calculateIcmpv6Checksum(buf.array(), pdu); buf.putShort(Ipv6Constants.ICMPV6_OFFSET + 2, (short) checksum); return buf.array(); } - public boolean transmitNeighborSolicitation(BigInteger dpnId, NodeConnectorRef nodeRef, MacAddress srcMacAddress, + public boolean transmitNeighborSolicitation(Uint64 dpnId, NodeConnectorRef nodeRef, MacAddress srcMacAddress, Ipv6Address srcIpv6Address, Ipv6Address targetIpv6Address) { byte[] txPayload = frameNeighborSolicitationRequest(srcMacAddress, srcIpv6Address, targetIpv6Address); NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd"); @@ -135,7 +135,7 @@ public class Ipv6NsHelper { return true; } - public void transmitNeighborSolicitationToOfGroup(BigInteger dpId, MacAddress srcMacAddress, + public void transmitNeighborSolicitationToOfGroup(Uint64 dpId, MacAddress srcMacAddress, Ipv6Address srcIpv6Address, Ipv6Address targetIpv6Address, long ofGroupId) { byte[] txPayload = frameNeighborSolicitationRequest(srcMacAddress, srcIpv6Address, targetIpv6Address); List lstActionInfo = new ArrayList<>(); diff --git a/ipv6util/impl/src/test/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelperTest.java b/ipv6util/impl/src/test/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelperTest.java index 904de6f0d..200160edd 100644 --- a/ipv6util/impl/src/test/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelperTest.java +++ b/ipv6util/impl/src/test/java/org/opendaylight/genius/ipv6util/nd/Ipv6NsHelperTest.java @@ -9,12 +9,11 @@ package org.opendaylight.genius.ipv6util.nd; import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import org.junit.Before; @@ -37,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.Tr import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; public class Ipv6NsHelperTest { private Ipv6NsHelper instance; @@ -56,7 +56,7 @@ public class Ipv6NsHelperTest { doReturn(RpcResultBuilder.status(true).buildFuture()).when(pktProcessService) .transmitPacket(any(TransmitPacketInput.class)); - BigInteger dpnId = BigInteger.valueOf(1); + Uint64 dpnId = Uint64.ONE; String macAddr = "08:00:27:FE:8F:95"; boolean retValue; Ipv6Address srcIpv6Address = new Ipv6Address("2001:db8::1"); @@ -98,7 +98,7 @@ public class Ipv6NsHelperTest { doReturn(RpcResultBuilder.status(true).buildFuture()).when(pktProcessService) .transmitPacket(any(TransmitPacketInput.class)); - BigInteger dpnId = BigInteger.valueOf(1); + Uint64 dpnId = Uint64.ONE; String macAddr = "08:00:27:FE:8F:95"; boolean retValue; Ipv6Address srcIpv6Address = new Ipv6Address("2001:db8::1"); @@ -164,7 +164,7 @@ public class Ipv6NsHelperTest { doReturn(RpcResultBuilder.status(true).buildFuture()).when(pktProcessService) .transmitPacket(any(TransmitPacketInput.class)); - BigInteger dpnId = BigInteger.valueOf(1); + Uint64 dpnId = Uint64.ONE; MacAddress srcMacAddress = new MacAddress("08:00:27:FE:8F:95"); Ipv6Address srcIpv6Address = new Ipv6Address("2001:db8::1"); Ipv6Address targetIpv6Address = new Ipv6Address("2001:db8::2"); @@ -180,7 +180,7 @@ public class Ipv6NsHelperTest { doReturn(RpcResultBuilder.status(true).buildFuture()).when(pktProcessService) .transmitPacket(any(TransmitPacketInput.class)); - BigInteger dpnId = BigInteger.valueOf(1); + Uint64 dpnId = Uint64.ONE; MacAddress srcMacAddress = new MacAddress("08:00:27:FE:8F:95"); Ipv6Address srcIpv6Address = new Ipv6Address("2001:db8::1"); Ipv6Address targetIpv6Address = new Ipv6Address("2001:db8::2"); diff --git a/ipv6util/pom.xml b/ipv6util/pom.xml index 3097216ee..0eedd3e5a 100644 --- a/ipv6util/pom.xml +++ b/ipv6util/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 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 d9667dcfd..72818855e 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.api; import com.google.common.base.Optional; -import java.math.BigInteger; import java.util.Collection; import java.util.List; import java.util.Map; @@ -18,10 +17,11 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. 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; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList; +import org.opendaylight.yangtools.yang.common.Uint64; public interface IITMProvider { // APIs used by i - void createLocalCache(BigInteger dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, + void createLocalCache(Uint64 dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, String gatewayIp, String transportZone); void commitTeps(); @@ -36,7 +36,7 @@ public interface IITMProvider { void showCache(String cacheName); - void deleteVtep(BigInteger dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, + void deleteVtep(Uint64 dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, String gatewayIp, String transportZone); void configureTunnelType(String transportZone, String tunnelType); diff --git a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java index 8ce11d849..0dcc66d4b 100644 --- a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java +++ b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java @@ -7,15 +7,14 @@ */ package org.opendaylight.genius.itm.globals; -import java.math.BigInteger; - import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd; +import org.opendaylight.yangtools.yang.common.Uint64; public interface ITMConstants { String ITM_SERVICE_NAME = "ITM"; - BigInteger COOKIE_ITM = new BigInteger("9000000", 16); - BigInteger COOKIE_ITM_EXTERNAL = new BigInteger("9050000", 16); + Uint64 COOKIE_ITM = Uint64.valueOf("9000000", 16).intern(); + Uint64 COOKIE_ITM_EXTERNAL = Uint64.valueOf("9050000", 16).intern(); String ITM_IDPOOL_NAME = "Itmservices"; long ITM_IDPOOL_START = 1L; diff --git a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/utils/DpnTepInterfaceInfo.java b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/utils/DpnTepInterfaceInfo.java index 7bc1a1412..a09eb2b56 100644 --- a/itm/itm-api/src/main/java/org/opendaylight/genius/itm/utils/DpnTepInterfaceInfo.java +++ b/itm/itm-api/src/main/java/org/opendaylight/genius/itm/utils/DpnTepInterfaceInfo.java @@ -7,10 +7,10 @@ */ package org.opendaylight.genius.itm.utils; -import java.math.BigInteger; import org.immutables.value.Value; import org.opendaylight.genius.infra.OpenDaylightImmutableStyle; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase; +import org.opendaylight.yangtools.yang.common.Uint64; @Value.Immutable @OpenDaylightImmutableStyle @@ -24,5 +24,5 @@ public interface DpnTepInterfaceInfo { boolean isInternal(); - BigInteger getRemoteDPN(); + Uint64 getRemoteDPN(); } 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 07aeac110..8602c0de0 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.cache; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -32,6 +31,7 @@ import org.opendaylight.infrautils.utils.concurrent.NamedSimpleReentrantLock.Acq 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; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,7 +88,7 @@ public class DPNTEPsInfoCache extends InstanceIdDataObjectCache { // Check if the destination End Point has come try (Acquired lock = directTunnelUtils.lockTunnel(tunnelEndPointInfo.getDstEndPointInfo())) { Optional dstInfoOpt = getDPNTepFromDPNId( - new BigInteger(tunnelEndPointInfo.getDstEndPointInfo())); + Uint64.valueOf(tunnelEndPointInfo.getDstEndPointInfo())); if (dstInfoOpt.isPresent()) { dstDpnTepsInfo = dstInfoOpt.get(); } else { @@ -111,7 +111,7 @@ public class DPNTEPsInfoCache extends InstanceIdDataObjectCache { if (srcDpnTepsInfo == null) { try (Acquired lock = directTunnelUtils.lockTunnel(tunnelEndPointInfo.getSrcEndPointInfo())) { Optional srcInfoOpt = getDPNTepFromDPNId( - new BigInteger(tunnelEndPointInfo.getSrcEndPointInfo())); + Uint64.valueOf(tunnelEndPointInfo.getSrcEndPointInfo())); if (srcInfoOpt.isPresent()) { srcDpnTepsInfo = srcInfoOpt.get(); } else { @@ -146,10 +146,10 @@ public class DPNTEPsInfoCache extends InstanceIdDataObjectCache { } } - public List getDPNTepListFromDPNId(List dpnIds) { + public List getDPNTepListFromDPNId(List dpnIds) { Collection meshedDpnList = this.getAllPresent() ; List cfgDpnList = new ArrayList<>(); - for (BigInteger dpnId : dpnIds) { + for (Uint64 dpnId : dpnIds) { for (DPNTEPsInfo teps : meshedDpnList) { if (dpnId.equals(teps.getDPNID())) { cfgDpnList.add(teps); @@ -159,7 +159,7 @@ public class DPNTEPsInfoCache extends InstanceIdDataObjectCache { return cfgDpnList; } - public Optional getDPNTepFromDPNId(BigInteger dpnId) { + public Optional getDPNTepFromDPNId(Uint64 dpnId) { Collection meshedDpnList = this.getAllPresent() ; return meshedDpnList.stream().filter(info -> dpnId.equals(info.getDPNID())).findFirst(); } 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 a6752f68f..9f1ae7a5b 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.cache; -import java.math.BigInteger; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -47,11 +46,12 @@ 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.teps.state.dpns.teps.RemoteDpns; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.teps.state.dpns.teps.RemoteDpnsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class DpnTepStateCache extends DataObjectCache { +public class DpnTepStateCache extends DataObjectCache { private static final Logger LOG = LoggerFactory.getLogger(DpnTepStateCache.class); private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("GeniusEventLogger"); @@ -171,10 +171,10 @@ public class DpnTepStateCache extends DataObjectCache { } private DpnTepInterfaceInfo getDpnTepInterface(String srcDpnId, String dstDpnId) { - return getDpnTepInterface(new BigInteger(srcDpnId), new BigInteger(dstDpnId)); + return getDpnTepInterface(Uint64.valueOf(srcDpnId), Uint64.valueOf(dstDpnId)); } - public DpnTepInterfaceInfo getDpnTepInterface(BigInteger srcDpnId, BigInteger dstDpnId) { + public DpnTepInterfaceInfo getDpnTepInterface(Uint64 srcDpnId, Uint64 dstDpnId) { DpnTepInterfaceInfo dpnTepInterfaceInfo = dpnTepInterfaceMap.get(getDpnId(srcDpnId, dstDpnId)); if (dpnTepInterfaceInfo == null) { try { @@ -201,7 +201,7 @@ public class DpnTepStateCache extends DataObjectCache { return dpnTepInterfaceMap.get(getDpnId(srcDpnId, dstDpnId)); } - public void removeTepFromDpnTepInterfaceConfigDS(BigInteger srcDpnId) throws TransactionCommitFailedException { + public void removeTepFromDpnTepInterfaceConfigDS(Uint64 srcDpnId) throws TransactionCommitFailedException { Collection dpnsTeps = this.getAllPresent(); for (DpnsTeps dpnTep : dpnsTeps) { if (!Objects.equals(dpnTep.getSourceDpnId(), srcDpnId)) { @@ -220,17 +220,18 @@ public class DpnTepStateCache extends DataObjectCache { } } else { // The source DPn id is the one to be removed - InstanceIdentifier dpnsTepsII = buildDpnsTepsInstanceIdentifier(dpnTep.getSourceDpnId()); + InstanceIdentifier dpnsTepsII + = buildDpnsTepsInstanceIdentifier(dpnTep.getSourceDpnId()); SingleTransactionDataBroker.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, dpnsTepsII); } } } - private InstanceIdentifier buildDpnsTepsInstanceIdentifier(BigInteger srcDpnId) { + private static InstanceIdentifier buildDpnsTepsInstanceIdentifier(Uint64 srcDpnId) { return InstanceIdentifier.builder(DpnTepsState.class).child(DpnsTeps.class, new DpnsTepsKey(srcDpnId)).build(); } - private InstanceIdentifier buildRemoteDpnsInstanceIdentifier(BigInteger srcDpnId, BigInteger dstDpnId) { + private static InstanceIdentifier buildRemoteDpnsInstanceIdentifier(Uint64 srcDpnId, Uint64 dstDpnId) { DpnsTepsKey dpnsTepsKey = new DpnsTepsKey(srcDpnId); RemoteDpnsKey remoteDpnsKey = new RemoteDpnsKey(dstDpnId); return InstanceIdentifier.builder(DpnTepsState.class).child(DpnsTeps.class, dpnsTepsKey) @@ -263,14 +264,15 @@ public class DpnTepStateCache extends DataObjectCache { return getDpnTepInterface(endPointInfo.getSrcEndPointInfo(), endPointInfo.getDstEndPointInfo()); } - private String getDpnId(BigInteger src, BigInteger dst) { + // FIXME: this seems to be a cache key -- it should use a composite structure rather than string concat + private String getDpnId(Uint64 src, Uint64 dst) { return src + ":" + dst; } public Interface getInterfaceFromCache(String tunnelName) { TunnelEndPointInfo endPointInfo = getTunnelEndPointInfoFromCache(tunnelName); - BigInteger srcDpnId = new BigInteger(endPointInfo.getSrcEndPointInfo()); - BigInteger dstDpnId = new BigInteger(endPointInfo.getDstEndPointInfo()); + Uint64 srcDpnId = Uint64.valueOf(endPointInfo.getSrcEndPointInfo()); + Uint64 dstDpnId = Uint64.valueOf(endPointInfo.getDstEndPointInfo()); Interface iface = null ; int monitoringInt = 1000; DpnTepInterfaceInfo dpnTepInfo = getDpnTepInterface(srcDpnId, dstDpnId); diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OfEndPointCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OfEndPointCache.java index 685b6dae3..56142d68c 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OfEndPointCache.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/OfEndPointCache.java @@ -7,35 +7,33 @@ */ package org.opendaylight.genius.itm.cache; -import java.math.BigInteger; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import javax.inject.Singleton; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton public class OfEndPointCache { - private static final Logger LOG = LoggerFactory.getLogger(OfEndPointCache.class); - private final ConcurrentMap ofEndPtMap = - new ConcurrentHashMap<>(); + private final ConcurrentMap ofEndPtMap = new ConcurrentHashMap<>(); - public void add(BigInteger dpnId, String ofTunnelName) { + public void add(Uint64 dpnId, String ofTunnelName) { ofEndPtMap.put(dpnId, ofTunnelName); } - public String get(BigInteger dpnId) { + public String get(Uint64 dpnId) { return ofEndPtMap.get(dpnId); } - public String remove(BigInteger dpnId) { + public String remove(Uint64 dpnId) { return ofEndPtMap.remove(dpnId); } - public Set getAll() { + public Set getAll() { return ofEndPtMap.keySet(); } } \ No newline at end of file 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 3a900f922..1058681ec 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.cache; -import java.math.BigInteger; import javax.inject.Inject; import javax.inject.Singleton; import org.opendaylight.controller.md.sal.binding.api.DataBroker; @@ -18,9 +17,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.B 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; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; @Singleton -public class OvsBridgeEntryCache extends DataObjectCache { +public class OvsBridgeEntryCache extends DataObjectCache { @Inject public OvsBridgeEntryCache(DataBroker dataBroker, CacheProvider cacheProvider) { 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 17e6b4e69..fa04f33ea 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.cache; -import java.math.BigInteger; import javax.inject.Inject; import javax.inject.Singleton; import org.opendaylight.controller.md.sal.binding.api.DataBroker; @@ -18,9 +17,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.O 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; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; @Singleton -public class OvsBridgeRefEntryCache extends DataObjectCache { +public class OvsBridgeRefEntryCache extends DataObjectCache { @Inject public OvsBridgeRefEntryCache(DataBroker dataBroker, CacheProvider cacheProvider) { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/ItmCliUtils.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/ItmCliUtils.java index 2c05ef9b8..557930782 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/ItmCliUtils.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/ItmCliUtils.java @@ -29,6 +29,7 @@ public final class ItmCliUtils { * the dpn ids * @return the list */ + // FIXME: this seems to be completely unused public static List constructDpnIdList(final String dpnIds) { final List lstDpnIds = new ArrayList<>(); if (StringUtils.isNotBlank(dpnIds)) { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepAdd.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepAdd.java index b78c9c2cc..10e4dbd63 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepAdd.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepAdd.java @@ -12,6 +12,7 @@ import org.apache.karaf.shell.commands.Argument; import org.apache.karaf.shell.commands.Command; import org.apache.karaf.shell.console.OsgiCommandSupport; import org.opendaylight.genius.itm.api.IITMProvider; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,7 @@ public class TepAdd extends OsgiCommandSupport { LOG.debug("Executing create TEP command dpnId={}, portName={}, vlanId={}, ipAddress={}," + " subnetMask={}, gatewayIp={}, transportZone={}", dpnId, portName, vlanId, ipAddress, subnetMask, gatewayIp, transportZone); - itmProvider.createLocalCache(dpnId, portName, vlanId, ipAddress, subnetMask, gatewayIp, + itmProvider.createLocalCache(Uint64.valueOf(dpnId), portName, vlanId, ipAddress, subnetMask, gatewayIp, transportZone); } catch (Exception e) { LOG.error("Exception occurred during execution of command \"tep-add\"", e); 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 9a741c9a5..9c7f21b73 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 @@ -12,7 +12,6 @@ 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.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -66,6 +65,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -111,7 +111,7 @@ public class TepCommandHelper { } @SuppressWarnings("checkstyle:IllegalCatch") - public void createLocalCache(BigInteger dpnId, String ipAddress, + public void createLocalCache(Uint64 dpnId, String ipAddress, String transportZone) throws TepException { CHECK.incrementAndGet(); @@ -165,7 +165,7 @@ public class TepCommandHelper { } - public boolean checkTepPerTzPerDpn(String tzone, BigInteger dpnId) { + public boolean checkTepPerTzPerDpn(String tzone, Uint64 dpnId) { // check in local cache if (transportZonesHashMap.containsKey(tzone)) { List vtepList = transportZonesHashMap.get(tzone); @@ -328,7 +328,7 @@ public class TepCommandHelper { } @SuppressWarnings("checkstyle:IllegalCatch") - public void deleteVtep(BigInteger dpnId, String ipAddress, + public void deleteVtep(Uint64 dpnId, String ipAddress, String transportZone) throws TepException { final VtepsKey vtepkey = new VtepsKey(dpnId); @@ -446,7 +446,7 @@ public class TepCommandHelper { } // Show DPN-ID and Bridge mapping - public void showBridges(Map dpnIdBridgeRefMap) { + public void showBridges(Map dpnIdBridgeRefMap) { System.out.println(String.format("%-16s %-16s %-36s%n", "DPN-ID", "Bridge-Name", "Bridge-UUID") + "------------------------------------------------------------------------"); dpnIdBridgeRefMap.forEach((dpnId, ovsdbBridgeRef) -> { @@ -458,7 +458,7 @@ public class TepCommandHelper { } // deletes from ADD-cache if it exists. - public boolean isInCache(BigInteger dpnId, String ipAddress, + public boolean isInCache(Uint64 dpnId, String ipAddress, String transportZone) throws TepException { boolean exists = false; final VtepsKey vtepkey = new VtepsKey(dpnId); @@ -508,19 +508,18 @@ public class TepCommandHelper { tunnelType = StringUtils.upperCase(tunnelType); tunType = ItmUtils.TUNNEL_TYPE_MAP.get(tunnelType); - List tzList = null; + InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class).build(); Optional tzones = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); TransportZone tzone = new TransportZoneBuilder().withKey(new TransportZoneKey(transportZoneName)) .setTunnelType(tunType).build(); + List tzList = new ArrayList<>(); if (tzones.isPresent()) { - tzList = tzones.get().getTransportZone(); - if (tzList == null || tzList.isEmpty()) { - tzList = new ArrayList<>(); + final List lst = tzones.get().getTransportZone(); + if (lst != null) { + tzList.addAll(lst); } - } else { - tzList = new ArrayList<>(); } tzList.add(tzone); TransportZones transportZones = new TransportZonesBuilder().setTransportZone(tzList).build(); @@ -557,7 +556,7 @@ public class TepCommandHelper { InstanceIdentifier.builder(TunnelMonitorInterval.class).build(); Optional storedTunnelMonitor = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); - if (!storedTunnelMonitor.isPresent() || storedTunnelMonitor.get().getInterval() != interval) { + if (!storedTunnelMonitor.isPresent() || storedTunnelMonitor.get().getInterval().toJava() != interval) { TunnelMonitorInterval tunnelMonitor = new TunnelMonitorIntervalBuilder().setInterval(interval).build(); Futures.addCallback(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> tx.merge(path, tunnelMonitor, true)), ItmUtils.DEFAULT_WRITE_CALLBACK, diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepDelete.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepDelete.java index 2058383fd..fe68fffb7 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepDelete.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepDelete.java @@ -12,6 +12,7 @@ import org.apache.karaf.shell.commands.Argument; import org.apache.karaf.shell.commands.Command; import org.apache.karaf.shell.console.OsgiCommandSupport; import org.opendaylight.genius.itm.api.IITMProvider; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +51,8 @@ public class TepDelete extends OsgiCommandSupport { + "gatewayIp transportZone"); return null; } - itmProvider.deleteVtep(dpnId, portName, vlanId, ipAddress, subnetMask, gatewayIp, transportZone); + itmProvider.deleteVtep(Uint64.valueOf(dpnId), portName, vlanId, ipAddress, subnetMask, gatewayIp, + transportZone); LOG.trace("Executing delete TEP command"); return null; diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowBridges.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowBridges.java index 781802fa9..6dfac2096 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowBridges.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowBridges.java @@ -19,6 +19,7 @@ import org.opendaylight.genius.itm.api.IITMProvider; import org.opendaylight.genius.itm.cache.OvsBridgeRefEntryCache; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.meta.rev171210.ovs.bridge.ref.info.OvsBridgeRefEntry; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,20 +49,22 @@ public class TepShowBridges extends OsgiCommandSupport { @Override protected Object doExecute() { + final Uint64 id = dpnId == null ? null : Uint64.valueOf(dpnId); + if (interfaceManager.isItmDirectTunnelsEnabled()) { Collection ovsBridgeRefEntries = ovsBridgeRefEntryCache.getAllPresent(); itmProvider.showBridges(ovsBridgeRefEntries.stream() - .filter(dpnId == null + .filter(id == null ? ovsBridgeRefEntry -> true - : ovsBridgeRefEntry -> ovsBridgeRefEntry.getDpid().equals(dpnId)) + : ovsBridgeRefEntry -> id.equals(ovsBridgeRefEntry.getDpid())) .collect(Collectors.toMap(ovsBridgeRefEntry -> ovsBridgeRefEntry.getDpid(), ovsBridgeRefEntry -> ovsBridgeRefEntry.getOvsBridgeReference()))); } else { - Map bridgeRefEntryMap = interfaceManager.getBridgeRefEntryMap(); + Map bridgeRefEntryMap = interfaceManager.getBridgeRefEntryMap(); itmProvider.showBridges(bridgeRefEntryMap.keySet().stream() - .filter(dpnId == null + .filter(id == null ? key -> true - : key -> key.equals(dpnId)) + : key -> id.equals(key)) .collect(Collectors.toMap(key -> key, key -> bridgeRefEntryMap.get(key).getBridgeReference()))); } 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 f9af7901d..0e4a0d9aa 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,15 +7,13 @@ */ package org.opendaylight.genius.itm.confighelpers; -import static org.opendaylight.genius.infra.Datastore.Configuration; - import com.google.common.base.Optional; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.math.BigInteger; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.ExecutionException; +import org.opendaylight.genius.infra.Datastore.Configuration; import org.opendaylight.genius.infra.TypedReadWriteTransaction; import org.opendaylight.genius.infra.TypedWriteTransaction; import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache; @@ -43,6 +41,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.DeviceVteps; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Vteps; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -96,7 +95,7 @@ public class ItmExternalTunnelAddWorker { } } - public void buildTunnelsFromDpnToExternalEndPoint(List dpnId, IpAddress extIp, + public void buildTunnelsFromDpnToExternalEndPoint(List dpnId, IpAddress extIp, Class tunType, TypedWriteTransaction tx) { Collection cfgDpnList = dpnId == null ? dpnTEPsInfoCache.getAllPresent() @@ -155,8 +154,9 @@ public class ItmExternalTunnelAddWorker { TransportZone transportZone = transportZoneOptional.get(); //do we need to check tunnel type? if (transportZone.getDeviceVteps() != null && !transportZone.getDeviceVteps().isEmpty()) { - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() + : ITMConstants.DUMMY_VLANID; for (DeviceVteps hwVtepDS : transportZone.getDeviceVteps()) { //dont mesh if hwVteps and OVS-tep have same ip-address if (Objects.equals(hwVtepDS.getIpAddress(), tep.getIpAddress())) { @@ -195,8 +195,8 @@ public class ItmExternalTunnelAddWorker { Class tunType = TunnelTypeVxlan.class; if (transportZoneOptional.isPresent()) { TransportZone tzone = transportZoneOptional.get(); - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() : ITMConstants.DUMMY_VLANID; //do we need to check tunnel type? if (tzone.getDeviceVteps() != null && !tzone.getDeviceVteps().isEmpty()) { for (DeviceVteps hwVtepDS : tzone.getDeviceVteps()) { @@ -284,7 +284,7 @@ public class ItmExternalTunnelAddWorker { } //for tunnels from OVS - private boolean wireUp(BigInteger dpnId, String portname, Integer vlanId, IpAddress srcIp, Boolean remoteIpFlow, + private boolean wireUp(Uint64 dpnId, String portname, Integer vlanId, IpAddress srcIp, Boolean remoteIpFlow, String dstNodeId, IpAddress dstIp, Class tunType, Boolean monitorEnabled, Integer monitorInterval, Class monitorProtocol, 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 88a8d6a35..42951a89e 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.base.Optional; -import java.math.BigInteger; import java.util.Collection; import java.util.List; import java.util.Objects; @@ -34,6 +33,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.DeviceVteps; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Vteps; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,8 +56,8 @@ public final class ItmExternalTunnelDeleteWorker { TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0); // The membership in the listener will always be 1, to get the actual membership // read from the DS - List originalTzMembership = ItmUtils.getOriginalTzMembership(firstEndPt, teps.getDPNID(), - meshedDpnList); + List originalTzMembership = ItmUtils.getOriginalTzMembership(firstEndPt, + teps.getDPNID(), meshedDpnList); if (originalTzMembership.size() == 1) { String interfaceName = firstEndPt.getInterfaceName(); String trunkInterfaceName = ItmUtils.getTrunkInterfaceName(interfaceName, @@ -159,9 +159,10 @@ public final class ItmExternalTunnelDeleteWorker { } if (originalTZone.getVteps() != null) { - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() + : ITMConstants.DUMMY_VLANID; for (Vteps vtep : originalTZone.getVteps()) { // TOR-OVS @@ -177,8 +178,8 @@ public final class ItmExternalTunnelDeleteWorker { } private static void deleteTunnelsInTransportZone(String zoneName, DPNTEPsInfo dpn, TunnelEndPoints srcTep, - List cfgdhwVteps, TypedReadWriteTransaction tx) - throws InterruptedException, ExecutionException { + List cfgdhwVteps, TypedReadWriteTransaction tx) + throws InterruptedException, ExecutionException { InstanceIdentifier tzonePath = InstanceIdentifier.builder(TransportZones.class) .child(TransportZone.class, new TransportZoneKey(zoneName)).build(); Optional tz = tx.read(tzonePath).get(); @@ -204,7 +205,7 @@ public final class ItmExternalTunnelDeleteWorker { } } - private static void deleteTrunksOvsTor(BigInteger dpnid, String interfaceName, IpAddress cssIpAddress, + private static void deleteTrunksOvsTor(Uint64 dpnid, String interfaceName, IpAddress cssIpAddress, String topologyId, String nodeId, IpAddress hwIpAddress, Class tunType, TypedReadWriteTransaction tx) throws ExecutionException, InterruptedException { // OVS-TOR 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 542ae3f5f..772610e68 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 @@ -13,7 +13,6 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.time.Duration; import java.util.ArrayList; import java.util.Collection; @@ -75,6 +74,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tun import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -180,8 +180,7 @@ public final class ItmInternalTunnelAddWorker { if (!ItmUtils.getIntersection(srcte.nonnullTzMembership(), dstte.nonnullTzMembership()).isEmpty()) { // wire them up - wireUpBidirectionalTunnel(tx, srcte, dstte, srcDpn.getDPNID(), dstDpn.getDPNID(), - mdsalManager); + wireUpBidirectionalTunnel(tx, srcte, dstte, srcDpn.getDPNID(), dstDpn.getDPNID(), mdsalManager); if (!ItmTunnelAggregationHelper.isTunnelAggregationEnabled()) { // CHECK THIS -- Assumption -- One end point per Dpn per transport zone break; @@ -193,8 +192,8 @@ public final class ItmInternalTunnelAddWorker { } private void wireUpBidirectionalTunnel(TypedReadWriteTransaction tx, TunnelEndPoints srcte, - TunnelEndPoints dstte, BigInteger srcDpnId, BigInteger dstDpnId, IMdsalApiManager mdsalManager) - throws ExecutionException, InterruptedException, OperationFailedException { + TunnelEndPoints dstte, Uint64 srcDpnId, Uint64 dstDpnId, IMdsalApiManager mdsalManager) + throws ExecutionException, InterruptedException, OperationFailedException { // Setup the flow for LLDP monitoring -- PUNT TO CONTROLLER if (monitorProtocol.isAssignableFrom(TunnelMonitoringTypeLldp.class)) { @@ -214,8 +213,8 @@ public final class ItmInternalTunnelAddWorker { } private boolean wireUp(TypedWriteTransaction tx, TunnelEndPoints srcte, TunnelEndPoints dstte, - BigInteger srcDpnId, BigInteger dstDpnId) - throws ExecutionException, InterruptedException, OperationFailedException { + Uint64 srcDpnId, Uint64 dstDpnId) + throws ExecutionException, InterruptedException, OperationFailedException { // Wire Up logic LOG.trace("Wiring between source tunnel end points {}, destination tunnel end points {}", srcte, dstte); String interfaceName = srcte.getInterfaceName(); @@ -241,7 +240,7 @@ public final class ItmInternalTunnelAddWorker { return true; } - private void createTunnelInterface(TunnelEndPoints srcte, TunnelEndPoints dstte, BigInteger srcDpnId, + private void createTunnelInterface(TunnelEndPoints srcte, TunnelEndPoints dstte, Uint64 srcDpnId, Class tunType, String trunkInterfaceName, String parentInterfaceName) { String gateway = srcte.getIpAddress().getIpv4Address() != null ? "0.0.0.0" : "::"; IpAddress gatewayIpObj = IpAddressBuilder.getDefaultInstance(gateway); @@ -265,17 +264,8 @@ public final class ItmInternalTunnelAddWorker { ItmUtils.ITM_CACHE.addInterface(iface); } - private static void createLogicalTunnelInterface(BigInteger srcDpnId, - Class tunType, String interfaceName) { - Interface iface = ItmUtils.buildLogicalTunnelInterface(srcDpnId, interfaceName, - String.format("%s %s",ItmUtils.convertTunnelTypetoString(tunType), "Interface"), true); - InstanceIdentifier trunkIdentifier = ItmUtils.buildId(interfaceName); - ITMBatchingUtils.update(trunkIdentifier, iface, ITMBatchingUtils.EntityType.DEFAULT_CONFIG); - ItmUtils.ITM_CACHE.addInterface(iface); - } - - private static void createInternalTunnel(TypedWriteTransaction tx, BigInteger srcDpnId, - BigInteger dstDpnId, Class tunType, String trunkInterfaceName) { + private static void createInternalTunnel(TypedWriteTransaction tx, Uint64 srcDpnId, + Uint64 dstDpnId, Class tunType, String trunkInterfaceName) { InstanceIdentifier path = InstanceIdentifier.create(TunnelList.class) .child(InternalTunnel.class, new InternalTunnelKey(dstDpnId, srcDpnId, tunType)); InternalTunnel tnl = ItmUtils.buildInternalTunnel(srcDpnId, dstDpnId, tunType, trunkInterfaceName); @@ -286,7 +276,7 @@ public final class ItmInternalTunnelAddWorker { ItmUtils.ITM_CACHE.addInternalTunnel(tnl); } - private String createLogicalGroupTunnel(BigInteger srcDpnId, BigInteger dstDpnId) { + private String createLogicalGroupTunnel(Uint64 srcDpnId, Uint64 dstDpnId) { boolean tunnelAggregationEnabled = ItmTunnelAggregationHelper.isTunnelAggregationEnabled(); if (!tunnelAggregationEnabled) { return null; @@ -301,11 +291,11 @@ public final class ItmInternalTunnelAddWorker { private static class ItmTunnelAggregationWorker implements Callable>> { private final String logicTunnelGroupName; - private final BigInteger srcDpnId; - private final BigInteger dstDpnId; + private final Uint64 srcDpnId; + private final Uint64 dstDpnId; private final ManagedNewTransactionRunner txRunner; - ItmTunnelAggregationWorker(String logicGroupName, BigInteger srcDpnId, BigInteger dstDpnId, DataBroker broker) { + ItmTunnelAggregationWorker(String logicGroupName, Uint64 srcDpnId, Uint64 dstDpnId, DataBroker broker) { this.logicTunnelGroupName = logicGroupName; this.srcDpnId = srcDpnId; this.dstDpnId = dstDpnId; @@ -328,11 +318,20 @@ public final class ItmInternalTunnelAddWorker { } })); } + + private static void createLogicalTunnelInterface(Uint64 srcDpnId, + Class tunType, String interfaceName) { + Interface iface = ItmUtils.buildLogicalTunnelInterface(srcDpnId, interfaceName, + String.format("%s %s",ItmUtils.convertTunnelTypetoString(tunType), "Interface"), true); + InstanceIdentifier trunkIdentifier = ItmUtils.buildId(interfaceName); + ITMBatchingUtils.update(trunkIdentifier, iface, ITMBatchingUtils.EntityType.DEFAULT_CONFIG); + ItmUtils.ITM_CACHE.addInterface(iface); + } } - private void createInternalDirectTunnels(TunnelEndPoints srcte, TunnelEndPoints dstte, BigInteger srcDpnId, - BigInteger dstDpnId, Class tunType, String trunkInterfaceName, - String parentInterfaceName) throws OperationFailedException { + private void createInternalDirectTunnels(TunnelEndPoints srcte, TunnelEndPoints dstte, Uint64 srcDpnId, + Uint64 dstDpnId, Class tunType, String trunkInterfaceName, + String parentInterfaceName) throws OperationFailedException { IpAddress gatewayIpObj = IpAddressBuilder.getDefaultInstance("0.0.0.0"); IpAddress gwyIpAddress = gatewayIpObj; LOG.debug("Creating Trunk Interface with parameters trunk I/f Name - {}, parent I/f name - {}, source IP - {}," @@ -359,7 +358,7 @@ public final class ItmInternalTunnelAddWorker { dpnsTepsBuilder.setSourceDpnId(srcDpnId); if (useOfTunnel) { String tunnelType = ItmUtils.convertTunnelTypetoString(srcte.getTunnelType()); - ofTunnelPortName = directTunnelUtils.generateOfPortName(srcDpnId, tunnelType); + ofTunnelPortName = DirectTunnelUtils.generateOfPortName(srcDpnId, tunnelType); dpnsTepsBuilder.setOfTunnel(ofTunnelPortName); } RemoteDpnsBuilder remoteDpn = new RemoteDpnsBuilder(); @@ -393,7 +392,7 @@ public final class ItmInternalTunnelAddWorker { return; } - BigInteger dpId = parentRefs.getDatapathNodeIdentifier(); + Uint64 dpId = parentRefs.getDatapathNodeIdentifier(); if (dpId == null) { LOG.warn("dpid for interface: {} Not Found. No DPID provided. Creation of OF-Port not supported.", iface.getName()); @@ -448,11 +447,11 @@ public final class ItmInternalTunnelAddWorker { } } - private boolean createTunnelPort(BigInteger dpId) { + private boolean createTunnelPort(Uint64 dpId) { if (!itmCfg.isUseOfTunnels()) { return true; } - return (ofEndPointCache.get(dpId) == null); + return ofEndPointCache.get(dpId) == null; } private void addPortToBridgeOnCallback(Interface iface, String portName, OvsBridgeRefEntry bridgeRefEntry) { 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 ca1a5ea8a..273f3696a 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 @@ -12,7 +12,6 @@ import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -70,6 +69,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -165,7 +165,7 @@ public class ItmInternalTunnelDeleteWorker { } else { if (checkIfTrunkExists(dstDpn.getDPNID(), srcDpn.getDPNID(), - srcTep.getTunnelType(), dataBroker)) { + srcTep.getTunnelType(), dataBroker)) { // remove all trunk interfaces LOG.trace("Invoking removeTrunkInterface between source TEP {} , " + "Destination TEP {} ", srcTep, dstTep); @@ -260,7 +260,7 @@ public class ItmInternalTunnelDeleteWorker { } private void removeTrunkInterface(TypedWriteTransaction tx, TunnelEndPoints srcTep, - TunnelEndPoints dstTep, BigInteger srcDpnId, BigInteger dstDpnId) { + TunnelEndPoints dstTep, Uint64 srcDpnId, Uint64 dstDpnId) { String trunkfwdIfName = ItmUtils.getTrunkInterfaceName(srcTep.getInterfaceName(), srcTep.getIpAddress().stringValue(), dstTep.getIpAddress().stringValue(), @@ -306,14 +306,14 @@ public class ItmInternalTunnelDeleteWorker { removeLogicalGroupTunnel(dstDpnId, srcDpnId); } - private static boolean checkIfTrunkExists(BigInteger srcDpnId, BigInteger dstDpnId, + private static boolean checkIfTrunkExists(Uint64 srcDpnId, Uint64 dstDpnId, Class tunType, DataBroker dataBroker) { InstanceIdentifier path = InstanceIdentifier.create(TunnelList.class) .child(InternalTunnel.class, new InternalTunnelKey(dstDpnId, srcDpnId, tunType)); return ItmUtils.read(LogicalDatastoreType.CONFIGURATION,path, dataBroker).isPresent(); } - private void removeLogicalGroupTunnel(BigInteger srcDpnId, BigInteger dstDpnId) { + private void removeLogicalGroupTunnel(Uint64 srcDpnId, Uint64 dstDpnId) { boolean tunnelAggregationEnabled = ItmTunnelAggregationHelper.isTunnelAggregationEnabled(); if (!tunnelAggregationEnabled) { return; @@ -327,11 +327,11 @@ public class ItmInternalTunnelDeleteWorker { private static class ItmTunnelAggregationDeleteWorker implements Callable>> { private final String logicTunnelName; - private final BigInteger srcDpnId; - private final BigInteger dstDpnId; + private final Uint64 srcDpnId; + private final Uint64 dstDpnId; private final ManagedNewTransactionRunner txRunner; - ItmTunnelAggregationDeleteWorker(String groupName, BigInteger srcDpnId, BigInteger dstDpnId, DataBroker db) { + ItmTunnelAggregationDeleteWorker(String groupName, Uint64 srcDpnId, Uint64 dstDpnId, DataBroker db) { this.logicTunnelName = groupName; this.srcDpnId = srcDpnId; this.dstDpnId = dstDpnId; @@ -380,7 +380,7 @@ public class ItmInternalTunnelDeleteWorker { } private void removeTunnelInterfaceFromOvsdb(TypedReadWriteTransaction tx, TunnelEndPoints srcTep, - TunnelEndPoints dstTep, BigInteger srcDpnId, BigInteger dstDpnId) { + TunnelEndPoints dstTep, Uint64 srcDpnId, Uint64 dstDpnId) { String trunkfwdIfName = ItmUtils.getTrunkInterfaceName(srcTep.getInterfaceName(), srcTep.getIpAddress().getIpv4Address().getValue(), dstTep.getIpAddress().getIpv4Address().getValue(), @@ -413,8 +413,8 @@ public class ItmInternalTunnelDeleteWorker { } } - private boolean checkIfTepInterfaceExists(BigInteger srcDpnId, BigInteger dstDpnId) { - DpnTepInterfaceInfo dpnTepInterfaceInfo = dpnTepStateCache.getDpnTepInterface(srcDpnId,dstDpnId); + private boolean checkIfTepInterfaceExists(Uint64 srcDpnId, Uint64 dstDpnId) { + DpnTepInterfaceInfo dpnTepInterfaceInfo = dpnTepStateCache.getDpnTepInterface(srcDpnId, dstDpnId); if (dpnTepInterfaceInfo != null) { return dpnTepInterfaceInfo.getTunnelName() != null; } @@ -422,7 +422,7 @@ public class ItmInternalTunnelDeleteWorker { } private void removeConfiguration(TypedReadWriteTransaction tx, Interface interfaceOld, - ParentRefs parentRefs) throws ExecutionException, InterruptedException, OperationFailedException { + ParentRefs parentRefs) throws ExecutionException, InterruptedException, OperationFailedException { IfTunnel ifTunnel = interfaceOld.augmentation(IfTunnel.class); if (ifTunnel != null) { // Check if the same transaction can be used across Config and operational shards @@ -435,7 +435,7 @@ public class ItmInternalTunnelDeleteWorker { throws ExecutionException, InterruptedException, OperationFailedException { LOG.info("removing tunnel configuration for {}", interfaceName); - BigInteger dpId = null; + Uint64 dpId = null; if (parentRefs != null) { dpId = parentRefs.getDatapathNodeIdentifier(); } @@ -477,7 +477,7 @@ public class ItmInternalTunnelDeleteWorker { directTunnelUtils.removeLportTagInterfaceMap(interfaceName); } - private OvsdbBridgeRef getOvsdbBridgeRef(BigInteger dpId) throws ReadFailedException { + private OvsdbBridgeRef getOvsdbBridgeRef(Uint64 dpId) throws ReadFailedException { Optional ovsBridgeRefEntryOptional = ovsBridgeRefEntryCache.get(dpId); Optional ovsBridgeEntryOptional; OvsdbBridgeRef ovsdbBridgeRef = null; @@ -500,7 +500,7 @@ public class ItmInternalTunnelDeleteWorker { } private void removeTunnelIngressFlow(TypedReadWriteTransaction tx, String interfaceName, - BigInteger dpId) throws ExecutionException, InterruptedException { + Uint64 dpId) throws ExecutionException, InterruptedException { directTunnelUtils.removeTunnelIngressFlow(tx, dpId, interfaceName); } 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 f40f16f2f..095c1c953 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -36,6 +35,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.teps.state.dpns.teps.RemoteDpns; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.teps.state.dpns.teps.RemoteDpnsBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -137,12 +137,13 @@ public class ItmMonitorWorker implements Callable>> } remoteDpnTepNewList.add(remoteDpnNew); LOG.debug("toggleMonitoring: RemoteDpnNew {}", remoteDpnNew); - directTunnelUtils.updateBfdConfiguration(dpnTeps.getSourceDpnId(), remoteDpnNew, ovsBridgeRefEntry); + directTunnelUtils.updateBfdConfiguration(dpnTeps.getSourceDpnId(), + remoteDpnNew, ovsBridgeRefEntry); } updateMonitoringDS(dpnTeps.getSourceDpnId(), remoteDpnTepNewList, tx); } - public void updateMonitoringDS(BigInteger sourceDpnId,List remoteDpnTepNewList, + public void updateMonitoringDS(Uint64 sourceDpnId, List remoteDpnTepNewList, TypedWriteTransaction tx) { InstanceIdentifier iid = DirectTunnelUtils.createDpnTepsInstanceIdentifier(sourceDpnId); DpnsTepsBuilder builder = new DpnsTepsBuilder().withKey(new DpnsTepsKey(sourceDpnId)) diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedMoveWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedMoveWorker.java index d3e3a0614..20a19e014 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedMoveWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepsNotHostedMoveWorker.java @@ -8,13 +8,13 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Vteps; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +40,7 @@ public class ItmTepsNotHostedMoveWorker implements Callable OvsdbTepAddConfigHelper.addVtepInITMConfigDS( - vtepsList, null /*tepIpAddress*/, tzName, BigInteger.ZERO, + vtepsList, null /*tepIpAddress*/, tzName, Uint64.ZERO, false, tx))); } } 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 f97268a5c..abf5d72d8 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; @@ -16,6 +15,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.genius.infra.Datastore; import org.opendaylight.genius.infra.ManagedNewTransactionRunner; 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; import org.slf4j.LoggerFactory; @@ -25,11 +25,11 @@ public class ItmTepsNotHostedRemoveWorker implements Callable tx, - BigInteger srcDpnId, String interfaceName, int lportTag) { + Uint64 srcDpnId, String interfaceName, int lportTag) { Group group = prepareLogicalTunnelSelectGroup(interfaceName, lportTag); LOG.debug("MULTIPLE_VxLAN_TUNNELS: group id {} installed for {} srcDpnId {}", group.getGroupId().getValue(), interfaceName, srcDpnId); @@ -191,14 +192,15 @@ public class ItmTunnelAggregationHelper { if (listActionInfo.isEmpty()) { LOG.warn("MULTIPLE_VxLAN_TUNNELS: could not build Egress bucket for {}", interfaceName); } - Integer portWeight = ifTunnel.getWeight() != null ? ifTunnel.getWeight() : DEFAULT_WEIGHT; + Integer portWeight = ifTunnel.getWeight() != null ? ifTunnel.getWeight().toJava() : DEFAULT_WEIGHT; return MDSALUtil.buildBucket(MDSALUtil.buildActions(listActionInfo), portWeight, bucketId, portNumber, MDSALUtil.WATCH_GROUP); } - private void updateTunnelAggregationGroup( - TypedWriteTransaction tx, - InterfaceParentEntry parentEntry) { + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") + private void updateTunnelAggregationGroup(TypedWriteTransaction tx, + InterfaceParentEntry parentEntry) { String logicTunnelName = parentEntry.getParentInterface(); InternalTunnel logicInternalTunnel = ItmUtils.ITM_CACHE.getInternalTunnel(logicTunnelName); if (logicInternalTunnel == null) { @@ -208,7 +210,7 @@ public class ItmTunnelAggregationHelper { InterfaceInfo ifLogicTunnel = interfaceManager.getInterfaceInfoFromOperationalDataStore(logicTunnelName); long groupId = ifLogicTunnel != null ? interfaceManager.getLogicalTunnelSelectGroupId(ifLogicTunnel.getInterfaceTag()) : INVALID_ID; - BigInteger srcDpnId = logicInternalTunnel.getSourceDPN(); + Uint64 srcDpnId = logicInternalTunnel.getSourceDPN(); List listBuckets = new ArrayList<>(); List interfaceChildEntries = parentEntry.getInterfaceChildEntry(); if (interfaceChildEntries == null || interfaceChildEntries.isEmpty()) { @@ -249,6 +251,8 @@ public class ItmTunnelAggregationHelper { } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void updateTunnelAggregationGroupBucket(Interface ifaceState, IfTunnel ifTunnel, ParentRefs parentRefs, InterfaceParentEntry groupParentEntry, int action, TypedReadWriteTransaction tx) @@ -277,7 +281,7 @@ public class ItmTunnelAggregationHelper { } String lowerLayerIf = ifaceState.getLowerLayerIf().get(0); // openflow:dpnid:portnum String[] split = lowerLayerIf.split(IfmConstants.OF_URI_SEPARATOR); - BigInteger srcDpnId = new BigInteger(split[1]); + Uint64 srcDpnId = Uint64.valueOf(split[1]); int portNumber = Integer.parseInt(split[2]); if (action == ADD_TUNNEL) { if (!mdsalManager.groupExists(srcDpnId, groupId)) { @@ -292,6 +296,8 @@ public class ItmTunnelAggregationHelper { } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void updateLogicalTunnelGroupOperStatus(String logicalTunnelIfaceName, Interface ifaceState, InterfaceParentEntry parentEntry, TypedReadWriteTransaction tx) throws ExecutionException, InterruptedException { @@ -357,6 +363,8 @@ public class ItmTunnelAggregationHelper { tx.merge(idLogicGroup, ifaceBuilderChild.build(), CREATE_MISSING_PARENTS); } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void updateLogicalTunnelAdminStatus(String logicalTunnelName, Interface ifOrigin, Interface ifUpdated, InterfaceParentEntry parentEntry, TypedWriteTransaction tx) { @@ -374,6 +382,8 @@ public class ItmTunnelAggregationHelper { } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void updateInterfaceAdminStatus(String logicalTunnelName, Interface ifState, TypedWriteTransaction tx) { InterfaceInfo ifLogicTunnelInfo = interfaceManager.getInterfaceInfoFromOperationalDataStore(logicalTunnelName); 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 68604e983..965d1ef8d 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -37,6 +36,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.VtepsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,7 +66,7 @@ public final class OvsdbTepAddConfigHelper { boolean ofTunnel, DataBroker dataBroker, ManagedNewTransactionRunner txRunner) { List> futures = new ArrayList<>(); - BigInteger dpnId = BigInteger.valueOf(0); + Uint64 dpnId = Uint64.ZERO; if (strDpnId != null && !strDpnId.isEmpty()) { dpnId = MDSALUtil.getDpnId(strDpnId); @@ -102,7 +102,7 @@ public final class OvsdbTepAddConfigHelper { } - final BigInteger id = dpnId; + final Uint64 id = dpnId; final String name = tzName; futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> addConfig(name, id, tepIpAddress, ofTunnel, tx))); @@ -116,12 +116,12 @@ public final class OvsdbTepAddConfigHelper { * @param updatedVtepList updated Vteps list object which will have new TEP for addition * @param tepIpAddress TEP IP address in IpAddress object * @param tzName transport zone name in string - * @param dpid bridge datapath ID in BigInteger + * @param dpid bridge datapath ID * @param ofTunnel boolean flag for TEP to enable/disable of-tunnel feature on it * @param tx TypedWriteTransaction object */ public static void addVtepInITMConfigDS(List updatedVtepList, IpAddress tepIpAddress, String tzName, - BigInteger dpid, boolean ofTunnel, + Uint64 dpid, boolean ofTunnel, TypedWriteTransaction tx) { //Create TZ node path InstanceIdentifier tranzportZonePath = @@ -130,7 +130,7 @@ public final class OvsdbTepAddConfigHelper { // this check is needed to reuse same function from TransportZoneListener // when VTEP is moved from TepsNotHosted list to TZ configured from Northbound. - if (dpid.compareTo(BigInteger.ZERO) > 0) { + if (dpid.compareTo(Uint64.ZERO) > 0) { // create vtep VtepsKey vtepkey = new VtepsKey(dpid); Vteps vtepObj = @@ -167,13 +167,13 @@ public final class OvsdbTepAddConfigHelper { * * @param tzName transport zone name in string * @param tepIpAddress TEP IP address in IpAddress object - * @param dpid bridge datapath ID in BigInteger + * @param dpid bridge datapath ID * @param ofTunnel boolean flag for TEP to enable/disable of-tunnel feature on it * @param dataBroker data broker handle to perform operations on operational datastore * @param tx TypedWriteTransaction object */ protected static void addUnknownTzTepIntoTepsNotHosted(String tzName, IpAddress tepIpAddress, - BigInteger dpid, boolean ofTunnel, DataBroker dataBroker, + Uint64 dpid, boolean ofTunnel, DataBroker dataBroker, TypedWriteTransaction tx) { List vtepList; TepsInNotHostedTransportZone tepsInNotHostedTransportZone = @@ -243,7 +243,7 @@ public final class OvsdbTepAddConfigHelper { tx.merge(tepsInNotHostedTransportZoneIid, updatedTzone, true); } - private static void addConfig(String tzName, BigInteger dpnId, IpAddress ipAdd, + private static void addConfig(String tzName, Uint64 dpnId, IpAddress ipAdd, boolean ofTunnel, TypedWriteTransaction tx) { List vtepList = new ArrayList<>(); @@ -252,14 +252,14 @@ public final class OvsdbTepAddConfigHelper { } private static List> addUnknownTzTepIntoTepsNotHostedAndReturnFutures(String tzName, - IpAddress tepIpAddress, BigInteger id, boolean ofTunnel, + IpAddress tepIpAddress, Uint64 id, boolean ofTunnel, DataBroker dataBroker, ManagedNewTransactionRunner txRunner) { return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.OPERATIONAL, tx -> addUnknownTzTepIntoTepsNotHosted(tzName, tepIpAddress, id, ofTunnel, dataBroker, tx))); } private static List addVtepToUnknownVtepsList(List updatedVtepList, - IpAddress tepIpAddress, BigInteger dpid, + IpAddress tepIpAddress, Uint64 dpid, boolean ofTunnel) { // create vtep UnknownVtepsKey vtepkey = new UnknownVtepsKey(dpid); 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 2a078f887..f0d0515a4 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 @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.confighelpers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -32,6 +31,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.VtepsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,7 +61,7 @@ public final class OvsdbTepRemoveConfigHelper { DataBroker dataBroker, ManagedNewTransactionRunner txRunner) { List> futures = new ArrayList<>(); - BigInteger dpnId = BigInteger.ZERO; + Uint64 dpnId = Uint64.ZERO; LOG.trace("Remove TEP: TEP-IP: {}, TZ name: {}, DPID: {}", tepIp, tzName, strDpnId); if (strDpnId != null && !strDpnId.isEmpty()) { @@ -85,7 +85,7 @@ public final class OvsdbTepRemoveConfigHelper { // Case: Add TEP into corresponding TZ created from Northbound. transportZone = ItmUtils.getTransportZoneFromConfigDS(tzName, dataBroker); String name = tzName; - BigInteger id = dpnId; + Uint64 id = dpnId; if (transportZone == null) { // Case: TZ is not configured from Northbound, then add TEP into // "teps-in-not-hosted-transport-zone" @@ -121,7 +121,7 @@ public final class OvsdbTepRemoveConfigHelper { LOG.trace("Remove TEP from vtep list in subnet list of transport-zone."); dpnId = oldVtep.getDpnId(); String name = tzName; - BigInteger id = dpnId; + Uint64 id = dpnId; futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> removeVtepFromTZConfig(name, id, tx))); } else { @@ -136,11 +136,11 @@ public final class OvsdbTepRemoveConfigHelper { * Removes the TEP from subnet list in the transport zone list * from ITM configuration Datastore by delete operation with write transaction. * - * @param dpnId bridge datapath ID in BigInteger + * @param dpnId bridge datapath ID * @param tzName transport zone name in string * @param tx TypedWriteTransaction object */ - private static void removeVtepFromTZConfig(String tzName, BigInteger dpnId, + private static void removeVtepFromTZConfig(String tzName, Uint64 dpnId, TypedWriteTransaction tx) { VtepsKey vtepkey = new VtepsKey(dpnId); @@ -161,12 +161,12 @@ public final class OvsdbTepRemoveConfigHelper { * * @param tzName transport zone name in string * @param tepIpAddress TEP IP address in IpAddress object - * @param dpnId bridge datapath ID in BigInteger + * @param dpnId bridge datapath ID * @param dataBroker data broker handle to perform operations on operational datastore * @param tx TypedWriteTransaction object */ public static void removeUnknownTzTepFromTepsNotHosted(String tzName, IpAddress tepIpAddress, - BigInteger dpnId, DataBroker dataBroker, + Uint64 dpnId, DataBroker dataBroker, TypedWriteTransaction tx) { List vtepList; TepsInNotHostedTransportZone tepsInNotHostedTransportZone = @@ -182,12 +182,10 @@ public final class OvsdbTepRemoveConfigHelper { } else { // case: vtep list has elements boolean vtepFound = false; - UnknownVteps foundVtep = null; for (UnknownVteps vtep : vtepList) { if (Objects.equals(vtep.getDpnId(), dpnId)) { vtepFound = true; - foundVtep = vtep; break; } } @@ -201,7 +199,6 @@ public final class OvsdbTepRemoveConfigHelper { } else { removeVtepFromTepsNotHosted(tzName, dpnId, tx); } - vtepList.remove(foundVtep); } } } @@ -212,10 +209,10 @@ public final class OvsdbTepRemoveConfigHelper { * from ITM operational Datastore by delete operation with write transaction. * * @param tzName transport zone name in string - * @param dpnId bridge datapath ID in BigInteger + * @param dpnId bridge datapath ID * @param tx TypedWriteTransaction object */ - private static void removeVtepFromTepsNotHosted(String tzName, BigInteger dpnId, + private static void removeVtepFromTepsNotHosted(String tzName, Uint64 dpnId, TypedWriteTransaction tx) { InstanceIdentifier vtepPath = InstanceIdentifier.builder(NotHostedTransportZones.class) .child(TepsInNotHostedTransportZone.class, new TepsInNotHostedTransportZoneKey(tzName)) 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 68a3558b3..b798ad394 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.itm.impl; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -63,6 +62,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.A import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInputBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint32; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -156,11 +157,11 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi batchSize = ITMConstants.BATCH_SIZE; LOG.info("entered initialse"); if (itmConfig.getBatchSize() != null) { - batchSize = itmConfig.getBatchSize(); + batchSize = itmConfig.getBatchSize().toJava(); } batchInterval = ITMConstants.PERIODICITY; if (itmConfig.getBatchInterval() != null) { - batchInterval = itmConfig.getBatchInterval(); + batchInterval = itmConfig.getBatchInterval().toJava(); } ITMBatchingUtils.registerWithBatchManager(this.dataBroker,this.batchSize,this.batchInterval); } @@ -222,7 +223,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi CreateIdPoolInput createPool = new CreateIdPoolInputBuilder() .setPoolName(ITMConstants.ITM_IDPOOL_NAME) .setLow(ITMConstants.ITM_IDPOOL_START) - .setHigh(new BigInteger(ITMConstants.ITM_IDPOOL_SIZE).longValue()) + .setHigh(Uint32.valueOf(ITMConstants.ITM_IDPOOL_SIZE)) .build(); try { ListenableFuture> result = idManager.createIdPool(createPool); @@ -258,8 +259,8 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi } @Override - public void createLocalCache(BigInteger dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, - String gatewayIp, String transportZone) { + public void createLocalCache(Uint64 dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, + String gatewayIp, String transportZone) { if (tepCommandHelper != null) { try { tepCommandHelper.createLocalCache(dpnId, ipAddress, transportZone); @@ -316,8 +317,8 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi } @Override - public void deleteVtep(BigInteger dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, - String gatewayIp, String transportZone) { + public void deleteVtep(Uint64 dpnId, String portName, Integer vlanId, String ipAddress, String subnetMask, + String gatewayIp, String transportZone) { try { tepCommandHelper.deleteVtep(dpnId, ipAddress, transportZone); } catch (TepException e) { 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 09606d651..67947b56b 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 @@ -18,7 +18,6 @@ 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.math.BigInteger; import java.net.InetAddress; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -127,7 +126,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -150,18 +149,20 @@ public final class ItmUtils { 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(); private ItmUtils() { } - public static final FutureCallback DEFAULT_WRITE_CALLBACK = new FutureCallback() { + public static final FutureCallback DEFAULT_WRITE_CALLBACK = new FutureCallback<>() { @Override public void onSuccess(Void result) { LOG.debug("Success in Datastore write operation"); } @Override - public void onFailure(@NonNull Throwable error) { + public void onFailure(Throwable error) { LOG.error("Error in Datastore write operation", error); } }; @@ -248,7 +249,7 @@ public final class ItmUtils { //ITM cleanup:portname and vlanId are removed, causes change in generated //interface name: This has upgrade impact - public static String getInterfaceName(final BigInteger datapathid, final String portName, final Integer vlanId) { + public static String getInterfaceName(final Uint64 datapathid, final String portName, final Integer vlanId) { return String.format("%s:%s:%s", datapathid, portName, vlanId); } @@ -282,7 +283,7 @@ public final class ItmUtils { LOG.trace("Releasing Id for trunkInterface - {}", trunkInterfaceName); } - public static String getLogicalTunnelGroupName(BigInteger srcDpnId, BigInteger destDpnId) { + public static String getLogicalTunnelGroupName(Uint64 srcDpnId, Uint64 destDpnId) { String tunnelTypeStr = ITMConstants.TUNNEL_TYPE_LOGICAL_GROUP_VXLAN; String groupName = String.format("%s:%s:%s", srcDpnId.toString(), destDpnId.toString(), tunnelTypeStr); LOG.trace("logical tunnel group name is {}", groupName); @@ -294,16 +295,16 @@ public final class ItmUtils { return IetfInetUtil.INSTANCE.inetAddressFor(ip); } - public static InstanceIdentifier getDpnTepInstance(BigInteger dpIdKey) { + public static InstanceIdentifier getDpnTepInstance(Uint64 dpIdKey) { return InstanceIdentifier.builder(DpnEndpoints.class).child(DPNTEPsInfo.class, new DPNTEPsInfoKey(dpIdKey)) .build(); } - public static DPNTEPsInfo createDPNTepInfo(BigInteger dpId, List endpoints) { + public static DPNTEPsInfo createDPNTepInfo(Uint64 dpId, List endpoints) { return new DPNTEPsInfoBuilder().withKey(new DPNTEPsInfoKey(dpId)).setTunnelEndPoints(endpoints).build(); } - public static TunnelEndPoints createTunnelEndPoints(BigInteger dpnId, IpAddress ipAddress, String portName, + public static TunnelEndPoints createTunnelEndPoints(Uint64 dpnId, IpAddress ipAddress, String portName, boolean isOfTunnel, int vlanId, List zones, Class tunnelType, String tos) { @@ -316,7 +317,7 @@ public final class ItmUtils { .build(); } - public static TunnelEndPoints createDummyTunnelEndPoints(BigInteger dpnID, IpAddress ipAddress, boolean ofTunnel, + public static TunnelEndPoints createDummyTunnelEndPoints(Uint64 dpnID, IpAddress ipAddress, boolean ofTunnel, String tos, List zones, Class tunnelType, String port, int vlanID) { @@ -335,7 +336,7 @@ public final class ItmUtils { .child(Interface.class, new InterfaceKey(ifName)).augmentation(IfTunnel.class).build(); } - public static Interface buildLogicalTunnelInterface(BigInteger dpn, String ifName, String desc, boolean enabled) { + public static Interface buildLogicalTunnelInterface(Uint64 dpn, String ifName, String desc, boolean enabled) { InterfaceBuilder builder = new InterfaceBuilder().withKey(new InterfaceKey(ifName)).setName(ifName) .setDescription(desc).setEnabled(enabled).setType(Tunnel.class); ParentRefs parentRefs = new ParentRefsBuilder().setDatapathNodeIdentifier(dpn).build(); @@ -350,7 +351,7 @@ public final class ItmUtils { return builder.build(); } - public static Interface buildTunnelInterface(BigInteger dpn, String ifName, String desc, boolean enabled, + public static Interface buildTunnelInterface(Uint64 dpn, String ifName, String desc, boolean enabled, Class tunType, IpAddress localIp, IpAddress remoteIp, boolean internal, Boolean monitorEnabled, @@ -363,7 +364,7 @@ public final class ItmUtils { tunOptions); } - public static Interface buildTunnelInterface(BigInteger dpn, String ifName, String desc, boolean enabled, + public static Interface buildTunnelInterface(Uint64 dpn, String ifName, String desc, boolean enabled, Class tunType, IpAddress localIp, IpAddress remoteIp, boolean internal, Boolean monitorEnabled, @@ -417,7 +418,7 @@ public final class ItmUtils { return builder.build(); } - public static InternalTunnel buildInternalTunnel(BigInteger srcDpnId, BigInteger dstDpnId, + public static InternalTunnel buildInternalTunnel(Uint64 srcDpnId, Uint64 dstDpnId, Class tunType, String trunkInterfaceName) { return new InternalTunnelBuilder().withKey(new InternalTunnelKey(dstDpnId, srcDpnId, tunType)) @@ -441,10 +442,10 @@ public final class ItmUtils { .replace("-", ""); } - public static List getDpnTepListFromDpnId(DPNTEPsInfoCache dpnTEPsInfoCache, List dpnIds) { + public static List getDpnTepListFromDpnId(DPNTEPsInfoCache dpnTEPsInfoCache, List dpnIds) { Collection meshedDpnList = dpnTEPsInfoCache.getAllPresent(); List cfgDpnList = new ArrayList<>(); - for (BigInteger dpnId : dpnIds) { + for (Uint64 dpnId : dpnIds) { for (DPNTEPsInfo teps : meshedDpnList) { if (dpnId.equals(teps.getDPNID())) { cfgDpnList.add(teps); @@ -457,7 +458,7 @@ public final class ItmUtils { @SuppressWarnings("checkstyle:IllegalCatch") public static void addTerminatingServiceTable(TypedReadWriteTransaction tx, - BigInteger dpnId, IMdsalApiManager mdsalManager) { + Uint64 dpnId, IMdsalApiManager mdsalManager) { LOG.trace("Installing PUNT to Controller flow in DPN {} ", dpnId); List listActionInfo = new ArrayList<>(); listActionInfo.add(new ActionPuntToController()); @@ -465,7 +466,7 @@ public final class ItmUtils { try { List mkMatches = new ArrayList<>(); - mkMatches.add(new MatchTunnelId(BigInteger.valueOf(ITMConstants.LLDP_SERVICE_ID))); + mkMatches.add(new MatchTunnelId(Uint64.valueOf(ITMConstants.LLDP_SERVICE_ID))); List mkInstructions = new ArrayList<>(); mkInstructions.add(new InstructionApplyActions(listActionInfo)); @@ -473,9 +474,8 @@ public final class ItmUtils { FlowEntity terminatingServiceTableFlowEntity = MDSALUtil .buildFlowEntity(dpnId, NwConstants.INTERNAL_TUNNEL_TABLE, getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE, ITMConstants.LLDP_SERVICE_ID), - 5, String.format("%s:%d","ITM Flow Entry ", ITMConstants.LLDP_SERVICE_ID), 0, 0, - ITMConstants.COOKIE_ITM.add(BigInteger.valueOf(ITMConstants.LLDP_SERVICE_ID)), - mkMatches, mkInstructions); + 5, String.format("%s:%d","ITM Flow Entry :", ITMConstants.LLDP_SERVICE_ID), 0, 0, + COOKIE_ITM_LLD, mkMatches, mkInstructions); mdsalManager.addFlow(tx, terminatingServiceTableFlowEntity); } catch (Exception e) { LOG.error("Error while setting up Table 36 for {}", dpnId, e); @@ -484,7 +484,7 @@ public final class ItmUtils { @SuppressWarnings("checkstyle:IllegalCatch") public static void removeTerminatingServiceTable(TypedReadWriteTransaction tx, - BigInteger dpnId, IMdsalApiManager mdsalManager) { + Uint64 dpnId, IMdsalApiManager mdsalManager) { LOG.trace("Removing PUNT to Controller flow in DPN {} ", dpnId); try { @@ -596,7 +596,7 @@ public final class ItmUtils { return new ExternalTunnelKey(dst, src, tunType); } - public static List getTEPsForDpn(BigInteger srcDpn, Collection dpnList) { + public static List getTEPsForDpn(Uint64 srcDpn, Collection dpnList) { for (DPNTEPsInfo dpn : dpnList) { if (Objects.equals(dpn.getDPNID(), srcDpn)) { return new ArrayList<>(dpn.nonnullTunnelEndPoints()); @@ -650,7 +650,7 @@ public final class ItmUtils { if (externalTunnels != null) { for (ExternalTunnel tunnel : externalTunnels) { String tunnelInterfaceName = tunnel.getTunnelInterfaceName(); - if (tunnelInterfaceName != null && (tunnelInterfaceName.equalsIgnoreCase(interfaceName))) { + if (tunnelInterfaceName != null && tunnelInterfaceName.equalsIgnoreCase(interfaceName)) { LOG.trace("getExternalTunnelFromDS tunnelInterfaceName: {} ", tunnelInterfaceName); return tunnel; } @@ -918,7 +918,7 @@ public final class ItmUtils { } @NonNull - public static List getOriginalTzMembership(TunnelEndPoints srcTep, BigInteger dpnId, + public static List getOriginalTzMembership(TunnelEndPoints srcTep, Uint64 dpnId, Collection meshedDpnList) { LOG.trace("Original Membership for source DPN {}, source TEP {}", dpnId, srcTep); for (DPNTEPsInfo dstDpn : meshedDpnList) { @@ -994,7 +994,7 @@ public final class ItmUtils { } @NonNull - public static Optional getInternalTunnelFromDS(BigInteger srcDpn, BigInteger destDpn, + public static Optional getInternalTunnelFromDS(Uint64 srcDpn, Uint64 destDpn, Class type, DataBroker dataBroker) { InstanceIdentifier pathLogicTunnel = InstanceIdentifier.create(TunnelList.class) @@ -1108,8 +1108,8 @@ public final class ItmUtils { return tunType ; } - public static List getDpIdFromTransportzone(DataBroker dataBroker, String tzone) { - List listOfDpId = new ArrayList<>(); + public static List getDpIdFromTransportzone(DataBroker dataBroker, String tzone) { + List listOfDpId = new ArrayList<>(); InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class) .child(TransportZone.class, new TransportZoneKey(tzone)).build(); Optional transportZoneOptional = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, 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 fc80cdddb..ec9c300ef 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 @@ -76,7 +76,7 @@ public class TunnelMonitoringConfig implements AutoCloseable { try { Optional maybeTunnelInterval = tunnelMonitorIntervalCache.get(TUNNEL_MONITOR_INTERVAL_PATH); - return maybeTunnelInterval.isPresent() ? maybeTunnelInterval.get().getInterval() + return maybeTunnelInterval.isPresent() ? maybeTunnelInterval.get().getInterval().toJava() : ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL; } catch (ReadFailedException e) { LOG.warn("Read of {} failed", TUNNEL_MONITOR_INTERVAL_PATH, e); 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 e60b41aec..25d13ae51 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 @@ -9,6 +9,7 @@ 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.concurrent.Callable; @@ -118,6 +119,8 @@ public class TerminationPointStateListener } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private List> updateTunnelState(OvsdbTerminationPointAugmentation terminationPointNew) { final String interfaceName = terminationPointNew.getName(); final Interface.OperStatus interfaceBfdStatus = getTunnelOpState(terminationPointNew); 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 fb6d38641..0d4efde69 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 @@ -10,7 +10,7 @@ package org.opendaylight.genius.itm.itmdirecttunnels.listeners; import static org.opendaylight.genius.infra.Datastore.OPERATIONAL; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -19,7 +19,6 @@ import java.util.Objects; 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; @@ -59,6 +58,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -196,8 +196,8 @@ public class TunnelInventoryStateListener extends return; } else { for (Map.Entry entry : meshedMap.entrySet()) { - DpnTepInterfaceInfo infInfoForward = dpnTepStateCache.getDpnTepInterface(new BigInteger(srcDpn), - new BigInteger(entry.getKey())); + DpnTepInterfaceInfo infInfoForward = dpnTepStateCache.getDpnTepInterface(Uint64.valueOf(srcDpn), + Uint64.valueOf(entry.getKey())); if (infInfoForward == null) { unprocessedNCCache.add(srcDpn + ":" + entry.getKey(), new TunnelStateInfoBuilder().setNodeConnectorInfo(nodeConnectorInfo).build()); @@ -206,7 +206,7 @@ public class TunnelInventoryStateListener extends } DpnTepInterfaceInfo infInfoReverse = dpnTepStateCache.getDpnTepInterface( - new BigInteger(entry.getKey()), new BigInteger(srcDpn)); + Uint64.valueOf(entry.getKey()), Uint64.valueOf(srcDpn)); if (infInfoReverse == null) { unprocessedNCCache.add(entry.getKey() + ":" + srcDpn, @@ -244,9 +244,9 @@ public class TunnelInventoryStateListener extends if (DirectTunnelUtils.TUNNEL_PORT_PREDICATE.test(portName) && dpnTepStateCache.isInternal(portName)) { tunnelEndPtInfo = dpnTepStateCache.getTunnelEndPointInfoFromCache(portName); TunnelStateInfoBuilder builder = new TunnelStateInfoBuilder().setNodeConnectorInfo(nodeConnectorInfo); - dpntePsInfoCache.getDPNTepFromDPNId(new BigInteger(tunnelEndPtInfo.getSrcEndPointInfo())) + dpntePsInfoCache.getDPNTepFromDPNId(Uint64.valueOf(tunnelEndPtInfo.getSrcEndPointInfo())) .ifPresent(builder::setSrcDpnTepsInfo); - dpntePsInfoCache.getDPNTepFromDPNId(new BigInteger(tunnelEndPtInfo.getDstEndPointInfo())) + dpntePsInfoCache.getDPNTepFromDPNId(Uint64.valueOf(tunnelEndPtInfo.getDstEndPointInfo())) .ifPresent(builder::setDstDpnTepsInfo); tunnelStateInfo = builder.setTunnelEndPointInfo(tunnelEndPtInfo) .setDpnTepInterfaceInfo(dpnTepStateCache.getTunnelFromCache(portName)).build(); @@ -276,6 +276,8 @@ public class TunnelInventoryStateListener extends } } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private List> updateState(String interfaceName, FlowCapableNodeConnector flowCapableNodeConnectorNew, FlowCapableNodeConnector flowCapableNodeConnectorOld) { @@ -376,6 +378,8 @@ public class TunnelInventoryStateListener extends return !dpnTepInterfaceInfo.isMonitoringEnabled() && modifyOpState(dpnTepInterfaceInfo, opStateModified); } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private List> removeInterfaceStateConfiguration(NodeConnectorId nodeConnectorId, String interfaceName, FlowCapableNodeConnector @@ -383,7 +387,7 @@ public class TunnelInventoryStateListener extends List> futures = new ArrayList<>(); - BigInteger dpId = DirectTunnelUtils.getDpnFromNodeConnectorId(nodeConnectorId); + Uint64 dpId = DirectTunnelUtils.getDpnFromNodeConnectorId(nodeConnectorId); // In a genuine port delete scenario, the reason will be there in the incoming event, for all remaining // cases treat the event as DPN disconnect, if old and new ports are same. Else, this is a VM migration // scenario, and should be treated as port removal. @@ -395,12 +399,12 @@ public class TunnelInventoryStateListener extends LOG.debug("Received remove state for dpid {}", dpId.intValue()); for (Map.Entry entry : meshedMap.entrySet()) { if (!dpId.toString().equals(entry.getKey())) { - String fwdTunnel = dpnTepStateCache.getDpnTepInterface(dpId, new BigInteger(entry.getKey())) + String fwdTunnel = dpnTepStateCache.getDpnTepInterface(dpId, Uint64.valueOf(entry.getKey())) .getTunnelName(); LOG.debug("Fwd Tunnel name for {} : {} is {}", dpId.intValue(), entry.getKey(), fwdTunnel); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> updateInterfaceStateOnNodeRemove(tx, fwdTunnel, flowCapableNodeConnector))); - String bwdTunnel = dpnTepStateCache.getDpnTepInterface(new BigInteger(entry.getKey()), dpId) + String bwdTunnel = dpnTepStateCache.getDpnTepInterface(Uint64.valueOf(entry.getKey()), dpId) .getTunnelName(); LOG.debug("Bwd Tunnel name for {} : {} is {}", entry.getKey(), dpId.intValue(), bwdTunnel); futures.add(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, @@ -421,7 +425,7 @@ public class TunnelInventoryStateListener extends return futures; } - private class TunnelInterfaceStateUpdateWorker implements Callable { + private class TunnelInterfaceStateUpdateWorker implements Callable>> { private final InstanceIdentifier key; private final FlowCapableNodeConnector fcNodeConnectorOld; private final FlowCapableNodeConnector fcNodeConnectorNew; @@ -437,7 +441,7 @@ public class TunnelInventoryStateListener extends } @Override - public Object call() { + public List> call() { // If another renderer(for eg : OVS) needs to be supported, check can be performed here // to call the respective helpers. return updateState(interfaceName, fcNodeConnectorNew, fcNodeConnectorOld); @@ -450,7 +454,7 @@ public class TunnelInventoryStateListener extends } } - private class TunnelInterfaceStateRemoveWorker implements Callable { + private class TunnelInterfaceStateRemoveWorker implements Callable>> { private final NodeConnectorId nodeConnectorId; private final FlowCapableNodeConnector flowCapableNodeConnector; private final String interfaceName; @@ -464,7 +468,7 @@ public class TunnelInventoryStateListener extends } @Override - public Object call() { + public List> call() { // If another renderer(for eg : OVS) needs to be supported, check can be performed here // to call the respective helpers. return removeInterfaceStateConfiguration(nodeConnectorId, interfaceName, flowCapableNodeConnector); 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 2b3e5f36c..14b5d9f30 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 @@ -9,7 +9,7 @@ package org.opendaylight.genius.itm.itmdirecttunnels.listeners; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; @@ -40,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -128,13 +129,15 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh * This code is used to handle only a dpnId change scenario for a particular change, * which is not expected to happen in usual cases. */ + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private List> updateOvsBridgeRefEntry(InstanceIdentifier bridgeIid, - OvsdbBridgeAugmentation bridgeNew, - OvsdbBridgeAugmentation bridgeOld) { + OvsdbBridgeAugmentation bridgeNew, + OvsdbBridgeAugmentation bridgeOld) { return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> { - BigInteger dpnIdNew = directTunnelUtils.getDpnId(bridgeNew.getDatapathId()); - BigInteger dpnIdOld = directTunnelUtils.getDpnId(bridgeOld.getDatapathId()); + Uint64 dpnIdNew = directTunnelUtils.getDpnId(bridgeNew.getDatapathId()); + Uint64 dpnIdOld = directTunnelUtils.getDpnId(bridgeOld.getDatapathId()); LOG.debug("updating bridge references for bridge: {}, dpnNew: {}, dpnOld: {}", bridgeNew, dpnIdNew, dpnIdOld); @@ -153,10 +156,9 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh })); } - public List> removePortFromBridge(InstanceIdentifier - bridgeIid, - OvsdbBridgeAugmentation bridgeOld) { - BigInteger dpnId = directTunnelUtils.getDpnId(bridgeOld.getDatapathId()); + public List> removePortFromBridge(InstanceIdentifier bridgeIid, + OvsdbBridgeAugmentation bridgeOld) { + Uint64 dpnId = directTunnelUtils.getDpnId(bridgeOld.getDatapathId()); if (dpnId == null) { LOG.warn("Got Null DPID for Bridge: {}", bridgeOld); return Collections.emptyList(); @@ -173,8 +175,7 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh })); } - private void createOvsBridgeRefEntry(BigInteger dpnId, InstanceIdentifier bridgeIid, - WriteTransaction tx) { + private void createOvsBridgeRefEntry(Uint64 dpnId, InstanceIdentifier bridgeIid, WriteTransaction tx) { LOG.debug("Creating bridge ref entry for dpn: {} bridge: {}", dpnId, bridgeIid); OvsBridgeRefEntryKey bridgeRefEntryKey = new OvsBridgeRefEntryKey(dpnId); @@ -186,8 +187,7 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh tx.put(LogicalDatastoreType.OPERATIONAL, bridgeEntryId, tunnelDpnBridgeEntryBuilder.build(), true); } - private void deleteOvsBridgeRefEntry(BigInteger dpnId, - WriteTransaction tx) { + private void deleteOvsBridgeRefEntry(Uint64 dpnId, WriteTransaction tx) { LOG.debug("Deleting bridge ref entry for dpn: {}", dpnId); OvsBridgeRefEntryKey bridgeRefEntryKey = new OvsBridgeRefEntryKey(dpnId); @@ -196,7 +196,7 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh tx.delete(LogicalDatastoreType.OPERATIONAL, bridgeEntryId); } - private void addBridgeRefToBridgeTunnelEntry(BigInteger dpId, OvsdbBridgeRef ovsdbBridgeRef, WriteTransaction tx) { + private void addBridgeRefToBridgeTunnelEntry(Uint64 dpId, OvsdbBridgeRef ovsdbBridgeRef, WriteTransaction tx) { OvsBridgeEntryKey bridgeEntryKey = new OvsBridgeEntryKey(dpId); InstanceIdentifier bridgeEntryInstanceIdentifier = DirectTunnelUtils.getOvsBridgeEntryIdentifier(bridgeEntryKey); @@ -253,7 +253,7 @@ public class TunnelTopologyStateListener extends AbstractClusteredSyncDataTreeCh return Collections.emptyList(); } - BigInteger dpnId = directTunnelUtils.getDpnId(bridgeNew.getDatapathId()); + Uint64 dpnId = directTunnelUtils.getDpnId(bridgeNew.getDatapathId()); LOG.debug("adding bridge references for bridge: {}, dpn: {}", bridgeNew, dpnId); EVENT_LOGGER.debug("TunnelTopologyState, ADD bridge {} for {}", bridgeNew.getBridgeName(), dpnId); 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 43c1a331d..c927ed188 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 @@ -11,7 +11,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import com.google.common.util.concurrent.ListenableFuture; import edu.umd.cs.findbugs.annotations.CheckReturnValue; -import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; @@ -118,6 +117,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -206,19 +206,19 @@ public final class DirectTunnelUtils { return tunnelLocks.acquire(tunnelName); } - public BigInteger getDpnId(DatapathId datapathId) { + public Uint64 getDpnId(DatapathId datapathId) { if (datapathId != null) { String dpIdStr = datapathId.getValue().replace(":", ""); - return new BigInteger(dpIdStr, 16); + return Uint64.valueOf(dpIdStr, 16); } return null; } - public static BigInteger getDpnFromNodeConnectorId(NodeConnectorId portId) { + public static Uint64 getDpnFromNodeConnectorId(NodeConnectorId portId) { /* * NodeConnectorId is of form 'openflow:dpnid:portnum' */ - return new BigInteger(portId.getValue().split(ITMConstants.OF_URI_SEPARATOR)[1]); + return Uint64.valueOf(portId.getValue().split(ITMConstants.OF_URI_SEPARATOR)[1]); } public static long getPortNumberFromNodeConnectorId(NodeConnectorId portId) { @@ -262,7 +262,7 @@ public final class DirectTunnelUtils { .child(OvsBridgeRefEntry.class, bridgeRefEntryKey).build(); } - public static InstanceIdentifier createDpnTepsInstanceIdentifier(BigInteger sourceDpnId) { + public static InstanceIdentifier createDpnTepsInstanceIdentifier(Uint64 sourceDpnId) { return InstanceIdentifier.builder(DpnTepsState.class).child(DpnsTeps.class, new DpnsTepsKey(sourceDpnId)).build(); } @@ -360,7 +360,7 @@ public final class DirectTunnelUtils { } } - public static void createBridgeTunnelEntryInConfigDS(BigInteger dpId, String childInterface) { + public static void createBridgeTunnelEntryInConfigDS(Uint64 dpId, String childInterface) { OvsBridgeEntryKey bridgeEntryKey = new OvsBridgeEntryKey(dpId); OvsBridgeTunnelEntryKey bridgeTunnelEntryKey = new OvsBridgeTunnelEntryKey(childInterface); InstanceIdentifier bridgeTunnelEntryIid = @@ -370,7 +370,7 @@ public final class DirectTunnelUtils { ITMBatchingUtils.write(bridgeTunnelEntryIid, entryBuilder.build(), ITMBatchingUtils.EntityType.DEFAULT_CONFIG); } - public void addTunnelIngressFlow(TypedWriteTransaction tx, BigInteger dpnId, long portNo, + public void addTunnelIngressFlow(TypedWriteTransaction tx, Uint64 dpnId, long portNo, String interfaceName, int ifIndex, Ipv4Address ipAddress) { LOG.debug("Adding tunnel ingress flow for {}", interfaceName); List matches = new ArrayList<>(); @@ -380,8 +380,9 @@ public final class DirectTunnelUtils { if (itmConfig.isUseOfTunnels()) { matches.add(new NxMatchTunnelSourceIp(ipAddress)); } - mkInstructions.add(new InstructionWriteMetadata(MetaDataUtil.getLportTagMetaData(ifIndex) - .or(BigInteger.ONE), MetaDataUtil.METADATA_MASK_LPORT_TAG_SH_FLAG)); + mkInstructions.add(new InstructionWriteMetadata( + Uint64.fromLongBits(MetaDataUtil.getLportTagMetaData(ifIndex).longValue() | 1L), + MetaDataUtil.METADATA_MASK_LPORT_TAG_SH_FLAG)); short tableId = NwConstants.INTERNAL_TUNNEL_TABLE; mkInstructions.add(new InstructionGotoTable(tableId)); @@ -394,7 +395,7 @@ public final class DirectTunnelUtils { mdsalApiManager.addFlow(tx, flowEntity); } - public void removeTunnelIngressFlow(TypedReadWriteTransaction tx, BigInteger dpnId, + public void removeTunnelIngressFlow(TypedReadWriteTransaction tx, Uint64 dpnId, String interfaceName) throws ExecutionException, InterruptedException { LOG.debug("Removing tunnel ingress flow for {}", interfaceName); String flowRef = @@ -403,7 +404,7 @@ public final class DirectTunnelUtils { mdsalApiManager.removeFlow(tx, dpnId, flowRef, NwConstants.VLAN_INTERFACE_INGRESS_TABLE); } - public void addTunnelEgressFlow(TypedWriteTransaction tx, BigInteger dpnId, String portNo, + public void addTunnelEgressFlow(TypedWriteTransaction tx, Uint64 dpnId, String portNo, int dstId, String interfaceName, IpAddress dstIp) { LOG.debug("add tunnel egress flow for {}", interfaceName); List matches = new ArrayList<>(); @@ -422,7 +423,7 @@ public final class DirectTunnelUtils { mdsalApiManager.addFlow(tx, dpnId, egressFlow); } - public void removeTunnelEgressFlow(TypedReadWriteTransaction tx, BigInteger dpnId, + public void removeTunnelEgressFlow(TypedReadWriteTransaction tx, Uint64 dpnId, String interfaceName) throws ExecutionException, InterruptedException { LOG.debug("remove tunnel egress flow for {}", interfaceName); String flowRef = @@ -430,7 +431,7 @@ public final class DirectTunnelUtils { mdsalApiManager.removeFlow(tx, dpnId, flowRef, NwConstants.EGRESS_TUNNEL_TABLE); } - private String getTunnelInterfaceFlowRef(BigInteger dpnId, short tableId, String ifName) { + private String getTunnelInterfaceFlowRef(Uint64 dpnId, short tableId, String ifName) { return String.valueOf(dpnId) + tableId + ifName; } @@ -449,7 +450,7 @@ public final class DirectTunnelUtils { int vlanId = 0; IfL2vlan ifL2vlan = iface.augmentation(IfL2vlan.class); if (ifL2vlan != null && ifL2vlan.getVlanId() != null) { - vlanId = ifL2vlan.getVlanId().getValue(); + vlanId = ifL2vlan.getVlanId().getValue().toJava(); } Builder options = new ImmutableMap.Builder<>(); @@ -567,7 +568,7 @@ public final class DirectTunnelUtils { ITMBatchingUtils.delete(stateTnlId, ITMBatchingUtils.EntityType.DEFAULT_OPERATIONAL); } - public void updateBfdConfiguration(BigInteger srcDpnId, RemoteDpns remoteDpn, + public void updateBfdConfiguration(Uint64 srcDpnId, RemoteDpns remoteDpn, com.google.common.base.@NonNull Optional ovsBridgeRefEntry) { if (ovsBridgeRefEntry.isPresent()) { LOG.debug("creating bridge interface on dpn {}", srcDpnId); @@ -597,7 +598,7 @@ public final class DirectTunnelUtils { return entityOwnershipUtils.isEntityOwner(ITMConstants.ITM_CONFIG_ENTITY, ITMConstants.ITM_CONFIG_ENTITY); } - public static String generateOfPortName(BigInteger dpId, String tunnelType) { + public static String generateOfPortName(Uint64 dpId, String tunnelType) { String trunkInterfaceName = String.format("%s:%s", dpId.toString(), tunnelType); String uuidStr = UUID.nameUUIDFromBytes(trunkInterfaceName.getBytes(StandardCharsets.UTF_8)).toString() .substring(0, 12).replace("-", ""); diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/workers/TunnelStateAddWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/workers/TunnelStateAddWorker.java index a6da293f7..5807db58c 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/workers/TunnelStateAddWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/workers/TunnelStateAddWorker.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.itmdirecttunnels.workers; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutionException; @@ -40,6 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeCon import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,8 +93,9 @@ public final class TunnelStateAddWorker { if (stateTnl != null) { return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> { - BigInteger dpId = DirectTunnelUtils.getDpnFromNodeConnectorId(nodeConnectorId); - directTunnelUtils.addTunnelIngressFlow(tx, dpId, portNo, interfaceName, stateTnl.getIfIndex(), + Uint64 dpId = DirectTunnelUtils.getDpnFromNodeConnectorId(nodeConnectorId); + directTunnelUtils.addTunnelIngressFlow(tx, dpId, portNo, interfaceName, + stateTnl.getIfIndex().toJava(), tunnelStateInfo.getDstDpnTepsInfo().getTunnelEndPoints().get(0).getIpAddress() .getIpv4Address()); directTunnelUtils.addTunnelEgressFlow(tx, dpId, String.valueOf(portNo), diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/OvsdbNodeListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/OvsdbNodeListener.java index 4fbbc2854..b045c9b11 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/OvsdbNodeListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/OvsdbNodeListener.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.listeners; -import java.math.BigInteger; import java.time.Duration; import java.util.List; import javax.inject.Inject; @@ -43,6 +42,7 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -222,13 +222,14 @@ public class OvsdbNodeListener extends AbstractSyncDataTreeChangeListener */ if (isTzChanged) { IpAddress tepIpAddress = IpAddressBuilder.getDefaultInstance(newLocalIp); - BigInteger dpnId = MDSALUtil.getDpnId(strNewDpnId); + Uint64 dpnId = MDSALUtil.getDpnId(strNewDpnId); String tos = itmConfig.getDefaultTunnelTos(); Class tunnelType = TunnelTypeVxlan.class; List zones = ItmUtils.createTransportZoneMembership(oldTzName); - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() + : ITMConstants.DUMMY_VLANID; TunnelEndPoints tunnelEndPoints = ItmUtils.createDummyTunnelEndPoints(dpnId, tepIpAddress, newOfTunnel, tos, zones, tunnelType, portName, vlanId); diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java index 93623c06d..2bdb70d9f 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.itm.listeners; import com.google.common.base.Optional; import com.google.common.util.concurrent.FluentFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -73,6 +72,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.VtepsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -313,7 +313,7 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener createDPNTepInfoFromNotHosted(TransportZone tzNew, List opDpnList) { - Map> mapNotHostedDPNToTunnelEndpt = new ConcurrentHashMap<>(); + Map> mapNotHostedDPNToTunnelEndpt = new ConcurrentHashMap<>(); List notHostedDpnTepInfo = new ArrayList<>(); String newZoneName = tzNew.getZoneName(); List zones = ItmUtils.createTransportZoneMembership(newZoneName); @@ -327,10 +327,11 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener vtepsList = new ArrayList<>(); if (unVtepsLst != null && !unVtepsLst.isEmpty()) { for (UnknownVteps vteps : unVtepsLst) { - BigInteger dpnID = vteps.getDpnId(); + Uint64 dpnID = vteps.getDpnId(); IpAddress ipAddress = vteps.getIpAddress(); - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() + : ITMConstants.DUMMY_VLANID; boolean useOfTunnel = ItmUtils.falseIfNull(vteps.isOfTunnel()); String tos = vteps.getOptionTunnelTos(); if (tos == null) { @@ -374,7 +375,7 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener 0) { - for (Entry> entry: mapNotHostedDPNToTunnelEndpt.entrySet()) { + for (Entry> entry: mapNotHostedDPNToTunnelEndpt.entrySet()) { DPNTEPsInfo newDpnTepsInfo = ItmUtils.createDPNTepInfo(entry.getKey(), entry.getValue()); notHostedDpnTepInfo.add(newDpnTepsInfo); } @@ -383,7 +384,7 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener createDPNTepInfo(TransportZone transportZone) { - Map> mapDPNToTunnelEndpt = new ConcurrentHashMap<>(); + Map> mapDPNToTunnelEndpt = new ConcurrentHashMap<>(); List dpnTepInfo = new ArrayList<>(); List zones = ItmUtils.createTransportZoneMembership(transportZone.getZoneName()); Class tunnelType = transportZone.getTunnelType(); LOG.trace("Transport Zone_name: {}", transportZone.getZoneName()); List vtepsList = transportZone.getVteps(); - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() : ITMConstants.DUMMY_VLANID; if (vtepsList != null && !vtepsList.isEmpty()) { for (Vteps vteps : vtepsList) { - BigInteger dpnID = vteps.getDpnId(); + Uint64 dpnID = vteps.getDpnId(); IpAddress ipAddress = vteps.getIpAddress(); boolean useOfTunnel = itmConfig.isUseOfTunnels(); String tos = vteps.getOptionTunnelTos(); @@ -460,7 +461,7 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener> entry : mapDPNToTunnelEndpt.entrySet()) { + for (Entry> entry : mapDPNToTunnelEndpt.entrySet()) { DPNTEPsInfo newDpnTepsInfo = ItmUtils.createDPNTepInfo(entry.getKey(), entry.getValue()); dpnTepInfo.add(newDpnTepsInfo); } diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TunnelMonitorIntervalListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TunnelMonitorIntervalListener.java index 5564a1e4d..73eab175c 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TunnelMonitorIntervalListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TunnelMonitorIntervalListener.java @@ -78,7 +78,7 @@ public class TunnelMonitorIntervalListener extends AbstractSyncDataTreeChangeLis ovsBridgeRefEntryCache)); } else { ItmMonitorIntervalWorker toggleWorker = new ItmMonitorIntervalWorker(tzone.getZoneName(), - dataObjectModification.getInterval(), broker); + dataObjectModification.getInterval().toJava(), broker); jobCoordinator.enqueueJob(tzone.getZoneName(), toggleWorker); } } @@ -104,7 +104,7 @@ public class TunnelMonitorIntervalListener extends AbstractSyncDataTreeChangeLis jobCoordinator.enqueueJob(tzone.getZoneName(), monitorWorker); } else { ItmMonitorIntervalWorker intervalWorker = new ItmMonitorIntervalWorker(tzone.getZoneName(), - dataObjectModificationAfter.getInterval(), broker); + dataObjectModificationAfter.getInterval().toJava(), broker); jobCoordinator.enqueueJob(tzone.getZoneName(), intervalWorker); } } @@ -129,7 +129,7 @@ public class TunnelMonitorIntervalListener extends AbstractSyncDataTreeChangeLis jobCoordinator.enqueueJob(tzone.getZoneName(), toggleWorker); } else { ItmMonitorIntervalWorker intervalWorker = new ItmMonitorIntervalWorker(tzone.getZoneName(), - dataObjectModification.getInterval(), broker); + dataObjectModification.getInterval().toJava(), broker); //conversion to milliseconds done while writing to i/f-mgr config DS jobCoordinator.enqueueJob(tzone.getZoneName(), intervalWorker); } diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/monitoring/ItmTunnelEventListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/monitoring/ItmTunnelEventListener.java index 1eb5523d7..1417b84bc 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/monitoring/ItmTunnelEventListener.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/monitoring/ItmTunnelEventListener.java @@ -8,7 +8,7 @@ package org.opendaylight.genius.itm.monitoring; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -35,6 +35,7 @@ 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.tunnels_state.StateTunnelList; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +48,7 @@ public class ItmTunnelEventListener extends AbstractSyncDataTreeChangeListener>> { - private InstanceIdentifier identifier; - private StateTunnelList add; - private TunnelOperStatus operStatus; - private ManagedNewTransactionRunner txRunner; + private final InstanceIdentifier identifier; + private final StateTunnelList add; + private final TunnelOperStatus operStatus; + private final ManagedNewTransactionRunner txRunner; ItmTunnelStatusOutOfOrderEventWorker(InstanceIdentifier identifier, StateTunnelList add, TunnelOperStatus operStatus, diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTepInstanceRecoveryHandler.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTepInstanceRecoveryHandler.java index 8b1a0ace2..8a9cdf236 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTepInstanceRecoveryHandler.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTepInstanceRecoveryHandler.java @@ -220,8 +220,8 @@ public class ItmTepInstanceRecoveryHandler implements ServiceRecoveryInterface { return null; } - String portName = (itmConfig.getPortname() == null) ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); - int vlanId = (itmConfig.getVlanId() != null) ? itmConfig.getVlanId() : ITMConstants.DUMMY_VLANID; + String portName = itmConfig.getPortname() == null ? ITMConstants.DUMMY_PORT : itmConfig.getPortname(); + int vlanId = itmConfig.getVlanId() != null ? itmConfig.getVlanId().toJava() : ITMConstants.DUMMY_VLANID; for (Vteps vtep : transportZone.getVteps()) { if (ipAddress.equals(vtep.getIpAddress().stringValue())) { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTzInstanceRecoveryHandler.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTzInstanceRecoveryHandler.java index dc952c4c5..340ff7347 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTzInstanceRecoveryHandler.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/recovery/impl/ItmTzInstanceRecoveryHandler.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.recovery.impl; -import java.math.BigInteger; import java.time.Duration; import java.util.ArrayList; import java.util.Collection; @@ -39,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tun import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone; import org.opendaylight.yang.gen.v1.urn.opendaylight.serviceutils.srm.types.rev180626.GeniusItmTz; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -102,7 +102,7 @@ public class ItmTzInstanceRecoveryHandler extends List tunnelList = new ArrayList<>(); if (interfaceManager.isItmDirectTunnelsEnabled()) { Collection dpnsTeps = dpnTepStateCache.getAllPresent(); - List listOfDpnIds = ItmUtils.getDpIdFromTransportzone(dataBroker, entityId); + List listOfDpnIds = ItmUtils.getDpIdFromTransportzone(dataBroker, entityId); for (DpnsTeps dpnTep : dpnsTeps) { List rmtdpns = dpnTep.getRemoteDpns(); for (RemoteDpns remoteDpn : rmtdpns) { diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java index 1b7d8e411..d7e346140 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.itm.rpc; import static org.opendaylight.genius.infra.Datastore.CONFIGURATION; -import static org.opendaylight.serviceutils.tools.rpc.FutureRpcResults.LogLevel.ERROR; import static org.opendaylight.serviceutils.tools.rpc.FutureRpcResults.fromListenableFuture; import static org.opendaylight.yangtools.yang.common.RpcResultBuilder.failed; @@ -20,7 +19,6 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -67,6 +65,7 @@ import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.genius.mdsalutil.matches.MatchTunnelId; import org.opendaylight.serviceutils.tools.rpc.FutureRpcResults; +import org.opendaylight.serviceutils.tools.rpc.FutureRpcResults.LogLevel; 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.flow.inventory.rev130819.FlowCapableNode; @@ -165,6 +164,8 @@ import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -226,8 +227,8 @@ public class ItmManagerRpcService implements ItmRpcService { public ListenableFuture> getTunnelInterfaceName( GetTunnelInterfaceNameInput input) { RpcResultBuilder resultBld = null; - BigInteger sourceDpn = input.getSourceDpid(); - BigInteger destinationDpn = input.getDestinationDpid(); + Uint64 sourceDpn = input.getSourceDpid(); + Uint64 destinationDpn = input.getDestinationDpid(); Optional optTunnel = Optional.absent(); if (interfaceManager.isItmDirectTunnelsEnabled()) { @@ -307,7 +308,7 @@ public class ItmManagerRpcService implements ItmRpcService { return settableFuture; } else { return fromListenableFuture(LOG, input, () -> getEgressActionsForInternalTunnels(input.getIntfName(), - input.getTunnelKey(), input.getActionKey())).onFailureLogLevel(ERROR).build(); + input.getTunnelKey().toJava(), input.getActionKey())).onFailureLogLevel(LogLevel.ERROR).build(); } } @@ -360,13 +361,13 @@ public class ItmManagerRpcService implements ItmRpcService { @Override public ListenableFuture> setBfdParamOnTunnel( SetBfdParamOnTunnelInput input) { - final BigInteger srcDpnId = new BigInteger(input.getSourceNode()); - final BigInteger destDpnId = new BigInteger(input.getDestinationNode()); + final Uint64 srcDpnId = Uint64.valueOf(input.getSourceNode()); + final Uint64 destDpnId = Uint64.valueOf(input.getDestinationNode()); LOG.debug("setBfdParamOnTunnel srcDpnId: {}, destDpnId: {}", srcDpnId, destDpnId); final SettableFuture> result = SettableFuture.create(); FluentFuture future = txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> { - enableBFD(tx, srcDpnId, destDpnId, input.isMonitoringEnabled(), input.getMonitoringInterval()); - enableBFD(tx, destDpnId, srcDpnId, input.isMonitoringEnabled(), input.getMonitoringInterval()); + enableBFD(tx, srcDpnId, destDpnId, input.isMonitoringEnabled(), input.getMonitoringInterval().toJava()); + enableBFD(tx, destDpnId, srcDpnId, input.isMonitoringEnabled(), input.getMonitoringInterval().toJava()); }); future.addCallback(new FutureCallback() { @@ -386,7 +387,7 @@ public class ItmManagerRpcService implements ItmRpcService { return result; } - private void enableBFD(TypedWriteTransaction tx, BigInteger srcDpnId, BigInteger destDpnId, + private void enableBFD(TypedWriteTransaction tx, Uint64 srcDpnId, Uint64 destDpnId, final Boolean enabled, final Integer interval) throws ReadFailedException { DpnTepInterfaceInfo dpnTepInterfaceInfo = dpnTepStateCache.getDpnTepInterface(srcDpnId, destDpnId); RemoteDpnsBuilder remoteDpnsBuilder = new RemoteDpnsBuilder(); @@ -566,13 +567,14 @@ public class ItmManagerRpcService implements ItmRpcService { LOG.info("create terminatingServiceAction on DpnId = {} for service id {} and instructions {}", input.getDpnId() , input.getServiceId(), input.getInstruction()); final SettableFuture> result = SettableFuture.create(); - int serviceId = input.getServiceId() ; + Uint16 serviceId = input.getServiceId(); final List mkMatches = getTunnelMatchesForServiceId(serviceId); Flow terminatingServiceTableFlow = MDSALUtil.buildFlowNew(NwConstants.INTERNAL_TUNNEL_TABLE, - getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE,serviceId), 5, - String.format("%s:%d","ITM Flow Entry ",serviceId), 0, 0, - ITMConstants.COOKIE_ITM.add(BigInteger.valueOf(serviceId)),mkMatches, input.getInstruction()); + getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE, serviceId), 5, + String.format("%s:%d", "ITM Flow Entry ", serviceId), 0, 0, + Uint64.fromLongBits(ITMConstants.COOKIE_ITM.longValue() + serviceId.toJava()), mkMatches, + input.getInstruction()); ListenableFuture installFlowResult = txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, tx -> mdsalManager.addFlow(tx, input.getDpnId(), terminatingServiceTableFlow)); @@ -628,17 +630,16 @@ public class ItmManagerRpcService implements ItmRpcService { return result ; } - - public List getTunnelMatchesForServiceId(int serviceId) { + public List getTunnelMatchesForServiceId(Uint16 serviceId) { final List mkMatches = new ArrayList<>(); // Matching metadata - mkMatches.add(new MatchTunnelId(BigInteger.valueOf(serviceId))); + mkMatches.add(new MatchTunnelId(Uint64.valueOf(serviceId))); return mkMatches; } - private String getFlowRef(long termSvcTable, int svcId) { + private String getFlowRef(long termSvcTable, Uint16 svcId) { return String.valueOf(termSvcTable) + svcId; } @@ -646,7 +647,7 @@ public class ItmManagerRpcService implements ItmRpcService { public ListenableFuture> getInternalOrExternalInterfaceName( GetInternalOrExternalInterfaceNameInput input) { RpcResultBuilder resultBld = failed(); - BigInteger srcDpn = input.getSourceDpid() ; + Uint64 srcDpn = input.getSourceDpid(); IpAddress dstIp = input.getDestinationIp() ; InstanceIdentifier path1 = InstanceIdentifier.create(ExternalTunnelList.class) .child(ExternalTunnel.class, @@ -1048,7 +1049,7 @@ public class ItmManagerRpcService implements ItmRpcService { @Override public ListenableFuture> getDpnEndpointIps(GetDpnEndpointIpsInput input) { - BigInteger srcDpn = input.getSourceDpid() ; + Uint64 srcDpn = input.getSourceDpid(); RpcResultBuilder resultBld = failed(); InstanceIdentifier tunnelInfoId = InstanceIdentifier.builder(DpnEndpoints.class).child(DPNTEPsInfo.class, @@ -1081,9 +1082,9 @@ public class ItmManagerRpcService implements ItmRpcService { } private GetDpnInfoOutput getDpnInfoInternal(GetDpnInfoInput input) throws ReadFailedException { - Map computeNamesVsDpnIds + Map computeNamesVsDpnIds = getDpnIdByComputeNodeNameFromOpInventoryNodes(input.getComputeNames()); - Map dpnIdVsVtepsComputes + Map dpnIdVsVtepsComputes = getTunnelEndPointByDpnIdFromTranPortZone(computeNamesVsDpnIds.values()); List computes = computeNamesVsDpnIds.entrySet().stream() .map(entry -> dpnIdVsVtepsComputes.get(entry.getValue()).setComputeName(entry.getKey()).build()) @@ -1091,14 +1092,14 @@ public class ItmManagerRpcService implements ItmRpcService { return new GetDpnInfoOutputBuilder().setComputes(computes).build(); } - private Map getTunnelEndPointByDpnIdFromTranPortZone(Collection dpnIds) + private Map getTunnelEndPointByDpnIdFromTranPortZone(Collection dpnIds) throws ReadFailedException { TransportZones transportZones = singleTransactionDataBroker.syncRead( LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.builder(TransportZones.class).build()); if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) { throw new IllegalStateException("Failed to find transport zones in config datastore"); } - Map result = new HashMap<>(); + Map result = new HashMap<>(); for (TransportZone transportZone : transportZones.getTransportZone()) { for (Vteps vtep : transportZone.getVteps()) { if (dpnIds.contains(vtep.getDpnId())) { @@ -1111,7 +1112,7 @@ public class ItmManagerRpcService implements ItmRpcService { } } } - for (BigInteger dpnId : dpnIds) { + for (Uint64 dpnId : dpnIds) { if (!result.containsKey(dpnId)) { throw new IllegalStateException("Failed to find dpn id " + dpnId + " in transport zone"); } @@ -1119,19 +1120,19 @@ public class ItmManagerRpcService implements ItmRpcService { return result; } - private Map getDpnIdByComputeNodeNameFromOpInventoryNodes(List nodeNames) + private Map getDpnIdByComputeNodeNameFromOpInventoryNodes(List nodeNames) throws ReadFailedException { Nodes operInventoryNodes = singleTransactionDataBroker.syncRead( LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.builder(Nodes.class).build()); if (operInventoryNodes.getNode() == null || operInventoryNodes.getNode().isEmpty()) { throw new IllegalStateException("Failed to find operational inventory nodes datastore"); } - Map result = new HashMap<>(); + Map result = new HashMap<>(); for (Node node : operInventoryNodes.getNode()) { String name = node.augmentation(FlowCapableNode.class).getDescription(); if (nodeNames.contains(name)) { String[] nodeId = node.getId().getValue().split(":"); - result.put(name, new BigInteger(nodeId[1])); + result.put(name, Uint64.valueOf(nodeId[1])); } } for (String nodeName : nodeNames) { @@ -1143,7 +1144,7 @@ public class ItmManagerRpcService implements ItmRpcService { return result; } - private String getNodeId(BigInteger dpnId) throws ReadFailedException { + private String getNodeId(Uint64 dpnId) throws ReadFailedException { InstanceIdentifier path = InstanceIdentifier .builder(BridgeRefInfo.class) .child(BridgeRefEntry.class, new BridgeRefEntryKey(dpnId)).build(); @@ -1169,8 +1170,11 @@ public class ItmManagerRpcService implements ItmRpcService { } Optional dpntePsInfoOptional = dpnTEPsInfoCache.get(InstanceIdentifier.builder(DpnEndpoints.class) - .child(DPNTEPsInfo.class, new DPNTEPsInfoKey(new BigInteger(dpnTepStateCache - .getTunnelEndPointInfoFromCache(interfaceInfo.getTunnelName()).getDstEndPointInfo()))).build()); + .child(DPNTEPsInfo.class, new DPNTEPsInfoKey( + // FIXME: the cache should be caching this value, not just as a String + Uint64.valueOf(dpnTepStateCache.getTunnelEndPointInfoFromCache(interfaceInfo.getTunnelName()) + .getDstEndPointInfo()))) + .build()); Integer dstId; if (dpntePsInfoOptional.isPresent()) { dstId = dpntePsInfoOptional.get().getDstId(); @@ -1182,7 +1186,7 @@ public class ItmManagerRpcService implements ItmRpcService { long regValue = MetaDataUtil.getRemoteDpnMetadatForEgressTunnelTable(dstId); int actionKeyStart = actionKey == null ? 0 : actionKey; result.add(new ActionSetFieldTunnelId(actionKeyStart++, - BigInteger.valueOf(tunnelKey != null ? tunnelKey : 0L))); + Uint64.valueOf(tunnelKey != null ? tunnelKey : 0L))); result.add(new ActionRegLoad(actionKeyStart++, NxmNxReg6.class, MetaDataUtil.REG6_START_INDEX, MetaDataUtil.REG6_END_INDEX, regValue)); result.add(new ActionNxResubmit(actionKeyStart, NwConstants.EGRESS_TUNNEL_TABLE)); @@ -1198,8 +1202,9 @@ public class ItmManagerRpcService implements ItmRpcService { tx.read(InstanceIdentifier.builder(DcGatewayIpList.class).build()); future.addCallback(new FutureCallback>() { @Override - public void onSuccess(@NonNull Optional optional) { + public void onSuccess(Optional optional) { try { + // FIXME: why not just use the provided optional? Optional opt = future.get(); if (opt.isPresent()) { DcGatewayIpList list = opt.get(); 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 eaa16309b..04feddf2c 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 @@ -19,7 +19,6 @@ import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import java.io.ByteArrayOutputStream; import java.io.PrintStream; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -70,6 +69,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.VtepsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,8 +91,8 @@ public class TepCommandHelperTest { private final String sourceDevice = "hwvtep://192.168.101.30:6640/physicalswitch/s3"; private final String destinationDevice = "hwvtep:1"; private final String transportZone1 = "TZA" ; - private final BigInteger dpId1 = BigInteger.valueOf(1); - private final BigInteger dpId2 = BigInteger.valueOf(2); + private final Uint64 dpId1 = Uint64.ONE; + private final Uint64 dpId2 = Uint64.valueOf(2); private final IpAddress ipAddress1 = IpAddressBuilder.getDefaultInstance(tepIp1); private final IpAddress ipAddress2 = IpAddressBuilder.getDefaultInstance(tepIp2); private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); @@ -312,10 +312,16 @@ public class TepCommandHelperTest { doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(LogicalDatastoreType .CONFIGURATION,transportZoneIdentifier); - tepCommandHelper.configureTunnelType(transportZone1,"VXLAN"); + tepCommandHelper.configureTunnelType(transportZone1, "VXLAN"); - verify(mockReadTx).read(LogicalDatastoreType.CONFIGURATION,transportZoneIdentifier); - verify(mockWriteTx).put(LogicalDatastoreType.CONFIGURATION,transportZonesIdentifier,transportZones,true); + verify(mockReadTx).read(LogicalDatastoreType.CONFIGURATION, transportZoneIdentifier); + + final List newList = new ArrayList<>(transportZoneList); + newList.add(new TransportZoneBuilder().withKey(new TransportZoneKey(transportZone1)) + .setTunnelType(TunnelTypeVxlan.class).build()); + + verify(mockWriteTx).put(LogicalDatastoreType.CONFIGURATION, transportZonesIdentifier, + new TransportZonesBuilder().setTransportZone(newList).build(),true); } @Test @@ -484,8 +490,8 @@ public class TepCommandHelperTest { public void testIsInCache() { try { - tepCommandHelper.createLocalCache(dpId1,tepIp1,transportZone1); - tepCommandHelper.isInCache(dpId1,tepIp1,transportZone1); + tepCommandHelper.createLocalCache(dpId1, tepIp1, transportZone1); + tepCommandHelper.isInCache(dpId1, tepIp1 ,transportZone1); } catch (TepException e) { LOG.error(e.getMessage()); } 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 1811a0887..87f846dc4 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 @@ -5,7 +5,6 @@ * 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.itm.impl; import static org.mockito.Mockito.doReturn; @@ -15,7 +14,6 @@ import static org.mockito.Mockito.verify; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Future; @@ -86,11 +84,13 @@ import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; @RunWith(MockitoJUnitRunner.class) public class ItmExternalTunnelAddTest { - BigInteger dpId1 = BigInteger.valueOf(1); + Uint64 dpId1 = Uint64.ONE; int vlanId = 100 ; int interval = 1000; String portName1 = "phy0"; @@ -132,7 +132,7 @@ public class ItmExternalTunnelAddTest { Interface iface = null; List cfgdDpnListVxlan = new ArrayList<>() ; List tunnelEndPointsListVxlan = new ArrayList<>(); - List bigIntegerList = new ArrayList<>(); + List bigIntegerList = new ArrayList<>(); List cfgdHwVtepsList = new ArrayList<>(); List deviceVtepsList = new ArrayList<>(); List vtepsList = new ArrayList<>(); @@ -286,7 +286,7 @@ public class ItmExternalTunnelAddTest { lenient().doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); doReturn("phy0").when(itmConfig).getPortname(); - doReturn(100).when(itmConfig).getVlanId(); + doReturn(Uint16.valueOf(100)).when(itmConfig).getVlanId(); } @Test 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 b7b34030a..a0603b1cf 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 @@ -16,7 +16,6 @@ import static org.mockito.Mockito.verify; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -75,6 +74,8 @@ import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; @RunWith(MockitoJUnitRunner.class) public class ItmExternalTunnelDeleteTest { @@ -96,7 +97,7 @@ public class ItmExternalTunnelDeleteTest { IpAddress gtwyIp1 = null; IpAddress gtwyIp2 = null; IpPrefix ipPrefixTest = null; - BigInteger dpId2 = BigInteger.valueOf(1); + Uint64 dpId2 = Uint64.ONE; DPNTEPsInfo dpntePsInfoVxlan = null; TunnelEndPoints tunnelEndPointsVxlan = null; HwVtep hwVtep1 = null; @@ -258,7 +259,7 @@ public class ItmExternalTunnelDeleteTest { lenient().doReturn(mockWriteTx).when(dataBroker).newWriteOnlyTransaction(); lenient().doReturn(Futures.immediateCheckedFuture(null)).when(mockWriteTx).submit(); doReturn("phy0").when(itmConfig).getPortname(); - doReturn(100).when(itmConfig).getVlanId(); + doReturn(Uint16.valueOf(100)).when(itmConfig).getVlanId(); } @Test 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 c862daaa6..a7d4983e0 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 @@ -5,7 +5,6 @@ * 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.itm.impl; import static org.mockito.Mockito.doReturn; @@ -13,7 +12,6 @@ import static org.mockito.Mockito.verify; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -72,6 +70,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @@ -81,8 +80,8 @@ import org.powermock.modules.junit4.PowerMockRunner; @PrepareForTest(ITMBatchingUtils.class) public class ItmInternalTunnelAddTest { - BigInteger dpId1 = BigInteger.valueOf(1); - BigInteger dpId2 = BigInteger.valueOf(2); + Uint64 dpId1 = Uint64.ONE; + Uint64 dpId2 = Uint64.valueOf(2); String portName1 = "phy0"; String portName2 = "phy1" ; int vlanId = 100 ; 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 ad518e997..9c965339f 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 @@ -5,7 +5,6 @@ * 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.itm.impl; import static org.mockito.Mockito.doReturn; @@ -14,7 +13,6 @@ import static org.mockito.Mockito.verify; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import org.junit.After; @@ -69,12 +67,13 @@ 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.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; @RunWith(MockitoJUnitRunner.class) public class ItmInternalTunnelDeleteTest { - BigInteger dpId1 = BigInteger.valueOf(1); - BigInteger dpId2 = BigInteger.valueOf(2); + Uint64 dpId1 = Uint64.ONE; + Uint64 dpId2 = Uint64.valueOf(2); int vlanId = 100 ; int interval = 1000; String portName1 = "phy0"; @@ -110,8 +109,8 @@ public class ItmInternalTunnelDeleteTest { InstanceIdentifier.create(TunnelMonitorInterval.class); Class monitorProtocol = TunnelMonitoringTypeBfd.class; InstanceIdentifier internalTunnelIdentifier = InstanceIdentifier.builder(TunnelList.class) - .child(InternalTunnel.class, new InternalTunnelKey(new BigInteger("1"), - new BigInteger("2"), tunnelType1)).build(); + .child(InternalTunnel.class, new InternalTunnelKey(Uint64.ONE, Uint64.valueOf(2), tunnelType1)) + .build(); @Mock DataBroker dataBroker; @Mock ReadOnlyTransaction mockReadTx; 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 a6961f910..480aea477 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 @@ -13,7 +13,6 @@ import static org.mockito.Mockito.verify; import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -104,6 +103,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.RemoveTerminatingServiceActionsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInputBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; @RunWith(MockitoJUnitRunner.class) public class ItmManagerRpcServiceTest { @@ -121,8 +121,8 @@ public class ItmManagerRpcServiceTest { IpAddress ipAddress1 = IpAddressBuilder.getDefaultInstance(tepIp1); IpAddress gtwyIp1 = IpAddressBuilder.getDefaultInstance(gwyIp1); IpPrefix ipPrefixTest = IpPrefixBuilder.getDefaultInstance(subnetIp + "/24"); - BigInteger dpId1 = BigInteger.valueOf(1); - BigInteger dpId2 = BigInteger.valueOf(2); + Uint64 dpId1 = Uint64.ONE; + Uint64 dpId2 = Uint64.valueOf(2); ExternalTunnel externalTunnel = null; ExternalTunnel externalTunnelNew = null; InternalTunnel internalTunnel = null; @@ -138,7 +138,7 @@ public class ItmManagerRpcServiceTest { List transportZoneList = new ArrayList<>() ; List deviceVtepsList = new ArrayList<>(); List stringList = new ArrayList<>(); - List dpId1List = new ArrayList<>(); + List dpId1List = new ArrayList<>(); DeviceVtepsKey deviceVtepKey = new DeviceVtepsKey(ipAddress1, sourceDevice); AddExternalTunnelEndpointInput addExternalTunnelEndpointInput = null; GetInternalOrExternalInterfaceNameInput getInternalOrExternalInterfaceNameInput = null; 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 b04824b63..8762eb2b9 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 @@ -5,7 +5,6 @@ * 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.itm.tests; import static com.google.common.truth.Truth.assertThat; @@ -13,7 +12,6 @@ import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertE import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -103,6 +101,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.R import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; public class ItmManagerRpcServiceTest { @@ -128,7 +127,7 @@ public class ItmManagerRpcServiceTest { List transportZoneList = new ArrayList<>(); List deviceVtepsList = new ArrayList<>(); List stringList = new ArrayList<>(); - List dpId1List = new ArrayList<>(); + List dpId1List = new ArrayList<>(); DeviceVtepsKey deviceVtepKey = new DeviceVtepsKey(ItmTestConstants.IP_ADDRESS_3, ItmTestConstants.SOURCE_DEVICE); DeviceVtepsKey deviceVtep2Key = new DeviceVtepsKey(ItmTestConstants.IP_ADDRESS_3, ItmTestConstants.SOURCE_DEVICE_2); AddExternalTunnelEndpointInput addExternalTunnelEndpointInput; 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 93f9161db..1c0fd09a1 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 @@ -13,7 +13,6 @@ import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertE import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; @@ -54,6 +53,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.VtepsKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Component tests for ITM TEP Auto Config feature. @@ -942,9 +942,9 @@ public class ItmTepAutoConfigTest { .read(LogicalDatastoreType.OPERATIONAL, notHostedPath).checkedGet().get().getUnknownVteps(); //modifing the dpnid and keeping the ip same. for (UnknownVteps unknownVtep:unknownVtepsList) { - Vteps vteps = new VtepsBuilder().setDpnId(new BigInteger("10")) + Vteps vteps = new VtepsBuilder().setDpnId(Uint64.valueOf(10)) .setIpAddress(unknownVtep.getIpAddress()) - .withKey(new VtepsKey(new BigInteger("10"))).build(); + .withKey(new VtepsKey(Uint64.valueOf(10))).build(); vtepsList.add(vteps); } 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 2f2686fa8..3c940cc55 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.itm.tests; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; 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; @@ -28,6 +27,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.VtepsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; public final class ItmTepAutoConfigTestUtil { private ItmTepAutoConfigTestUtil() { @@ -64,7 +64,7 @@ public final class ItmTepAutoConfigTestUtil { } public static InstanceIdentifier getTepIid(IpPrefix subnetMaskObj, String tzName, - BigInteger dpnId, String portName) { + Uint64 dpnId, String portName) { VtepsKey vtepkey = new VtepsKey(dpnId); InstanceIdentifier vtepIid = InstanceIdentifier.builder(TransportZones.class) diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestConstants.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestConstants.java index 6036de78c..22b9d9b9b 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestConstants.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestConstants.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.itm.tests; -import java.math.BigInteger; import org.opendaylight.genius.itm.globals.ITMConstants; 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; @@ -17,12 +16,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan; +import org.opendaylight.yangtools.yang.common.Uint64; public interface ItmTestConstants { String EXT_TUNNEL_INTERFACE_NAME = "tunfdeecc7cb4d"; - BigInteger DP_ID_1 = BigInteger.valueOf(1); - BigInteger DP_ID_2 = BigInteger.valueOf(2); + Uint64 DP_ID_1 = Uint64.ONE; + Uint64 DP_ID_2 = Uint64.valueOf(2); int VLAN_ID = 100 ; String PORT_NAME_1 = "phy0"; String PARENT_INTERFACE_NAME = "1:phy0:100"; @@ -52,16 +52,16 @@ public interface ItmTestConstants { String DEF_BR_NAME = "br-int"; String DEF_BR_DPID = "00:00:00:00:00:00:00:01"; - BigInteger INT_DEF_BR_DPID = BigInteger.valueOf(1); + Uint64 INT_DEF_BR_DPID = Uint64.ONE; String BR2_NAME = "br2"; String BR2_DPID = "00:00:00:00:00:00:00:02"; - BigInteger INT_BR2_DPID = BigInteger.valueOf(2); + Uint64 INT_BR2_DPID = Uint64.valueOf(2); //not hosted tz constants String NOT_HOSTED_TZ_TEP_IP = "192.168.10.20"; String NOT_HOSTED_TZ_TEPDPN_ID = "0"; - BigInteger NOT_HOSTED_INT_TZ_TEPDPN_ID = BigInteger.valueOf(0); + Uint64 NOT_HOSTED_INT_TZ_TEPDPN_ID = Uint64.ZERO; String NOT_HOSTED_TZ_NAME = "NotHostedTZ"; Boolean OF_TUNNEL = false; String NOT_HOSTED_DEF_BR_DPID = "00:00:00:00:00:00:00:00"; diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedDefTransportZoneObjects.xtend b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedDefTransportZoneObjects.xtend index 9d5be2ee7..934538e67 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedDefTransportZoneObjects.xtend +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedDefTransportZoneObjects.xtend @@ -5,7 +5,6 @@ * 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.itm.tests.xtend; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneBuilder; @@ -14,7 +13,6 @@ import org.opendaylight.genius.itm.globals.ITMConstants; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre; 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.IpPrefixBuilder; import org.opendaylight.genius.itm.tests.ItmTestConstants; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedTransportZoneObjects.xtend b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedTransportZoneObjects.xtend index c505eaddb..ffa812584 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedTransportZoneObjects.xtend +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/xtend/ExpectedTransportZoneObjects.xtend @@ -5,16 +5,13 @@ * 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.itm.tests.xtend; 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.transport.zone.VtepsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan; 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.IpPrefixBuilder; import org.opendaylight.genius.itm.tests.ItmTestConstants; -import org.opendaylight.genius.itm.globals.ITMConstants; import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExtensions.operator_doubleGreaterThan diff --git a/itm/pom.xml b/itm/pom.xml index 6cdb1a9e2..10733dd23 100644 --- a/itm/pom.xml +++ b/itm/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/karaf/pom.xml b/karaf/pom.xml index 2632353bb..0d6fda7eb 100644 --- a/karaf/pom.xml +++ b/karaf/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent karaf4-parent - 5.0.2 + 6.0.0 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 29dc77729..e210b4230 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 @@ -94,7 +94,8 @@ public class LockManagerServiceImpl implements LockManagerService { String lockName = input.getLockName(); String owner = lockManagerUtils.getUniqueID(); LOG.debug("Locking {}, owner {}" , lockName, owner); - long waitTime = input.getTime() == null ? DEFAULT_WAIT_TIME_IN_MILLIS * DEFAULT_RETRY_COUNT : input.getTime(); + long waitTime = input.getTime() == null ? DEFAULT_WAIT_TIME_IN_MILLIS * DEFAULT_RETRY_COUNT + : input.getTime().toJava(); TimeUnit timeUnit = input.getTimeUnit() == null ? TimeUnit.MILLISECONDS : lockManagerUtils.convertToTimeUnit(input.getTimeUnit()); waitTime = timeUnit.toMillis(waitTime); diff --git a/lockmanager/pom.xml b/lockmanager/pom.xml index 68d03389a..ce98ca4ff 100644 --- a/lockmanager/pom.xml +++ b/lockmanager/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/mdsalutil/mdsalutil-api/pom.xml b/mdsalutil/mdsalutil-api/pom.xml index 1009ed9e9..ef8c47ced 100644 --- a/mdsalutil/mdsalutil-api/pom.xml +++ b/mdsalutil/mdsalutil-api/pom.xml @@ -25,6 +25,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html build failure. Please do not modify this unless you have a good reason. --> ODL :: genius :: ${project.artifactId} + + + 10 + + org.opendaylight.yangtools diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/AbstractSwitchEntity.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/AbstractSwitchEntity.java index f81f60cb5..d476df895 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/AbstractSwitchEntity.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/AbstractSwitchEntity.java @@ -7,11 +7,11 @@ */ package org.opendaylight.genius.mdsalutil; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; public abstract class AbstractSwitchEntity { - public abstract BigInteger getDpnId(); + public abstract Uint64 getDpnId(); // Force subclasses to implement hashCode() & equals() WITH m_dpnId! @Override diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowEntity.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowEntity.java index 4a9b5510f..853e608ca 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowEntity.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowEntity.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.mdsalutil; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.math.BigInteger; import java.util.List; import org.eclipse.jdt.annotation.Nullable; import org.immutables.value.Value.Default; @@ -19,10 +18,12 @@ 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.flow.types.rev131026.FlowCookie; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; +import org.opendaylight.yangtools.yang.common.Uint64; @Immutable @OpenDaylightImmutableStyle public abstract class FlowEntity extends AbstractSwitchEntity { + protected static final Uint64 DEFAULT_COOKIE = Uint64.valueOf("0110000", 16).intern(); // This is required as it will cause the code generation by @Immutable.org to implement Builder, // which is required Xtend sources can use the XtendBuilderExtensions.operator_doubleGreaterThan @@ -32,8 +33,8 @@ public abstract class FlowEntity extends AbstractSwitchEntity { // This was done because MDSALManager has this hard-coded like this, upon MDSALManager.installFlow() @Default - public BigInteger getCookie() { - return new BigInteger("0110000", 16); + public Uint64 getCookie() { + return DEFAULT_COOKIE; } public abstract String getFlowId(); diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowInfoKey.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowInfoKey.java index 2ba6b833d..33b49dea6 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowInfoKey.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/FlowInfoKey.java @@ -7,17 +7,17 @@ */ package org.opendaylight.genius.mdsalutil; -import java.math.BigInteger; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; +import org.opendaylight.yangtools.yang.common.Uint64; public final class FlowInfoKey { - private final BigInteger dpId; + private final Uint64 dpId; private final short tableId; private final Match matches; private final String flowId; - public FlowInfoKey(BigInteger dpId, short tableId, Match matches, String flowId) { + public FlowInfoKey(Uint64 dpId, short tableId, Match matches, String flowId) { this.dpId = dpId; this.tableId = tableId; this.matches = matches; @@ -32,7 +32,7 @@ public final class FlowInfoKey { return matches; } - public BigInteger getDpId() { + public Uint64 getDpId() { return dpId; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/GroupInfoKey.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/GroupInfoKey.java index e1c3e31db..ad3928db7 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/GroupInfoKey.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/GroupInfoKey.java @@ -7,14 +7,14 @@ */ package org.opendaylight.genius.mdsalutil; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; public final class GroupInfoKey { - private final BigInteger dpId; + private final Uint64 dpId; private final long groupId; - public GroupInfoKey(BigInteger dpId, long groupId) { + public GroupInfoKey(Uint64 dpId, long groupId) { this.dpId = dpId; this.groupId = groupId; } @@ -23,7 +23,7 @@ public final class GroupInfoKey { return groupId; } - public BigInteger getDpId() { + public Uint64 getDpId() { return dpId; } 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 f34b29369..c6d964f21 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 @@ -5,12 +5,10 @@ * 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.mdsalutil; import com.google.common.base.Optional; import com.google.common.net.InetAddresses; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -90,6 +88,8 @@ import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -115,8 +115,8 @@ public class MDSALUtil { } - public static FlowEntity buildFlowEntity(BigInteger dpnId, short tableId, String flowId, int priority, - String flowName, int idleTimeOut, int hardTimeOut, BigInteger cookie, + public static FlowEntity buildFlowEntity(Uint64 dpnId, short tableId, String flowId, int priority, + String flowName, int idleTimeOut, int hardTimeOut, Uint64 cookie, List listMatchInfoBase, List listInstructionInfo) { FlowEntityBuilder builder = new FlowEntityBuilder() @@ -139,14 +139,18 @@ public class MDSALUtil { // TODO: CHECK IF THIS IS USED public static Flow buildFlow(short tableId, String flowId, int priority, String flowName, int idleTimeOut, - int hardTimeOut, BigInteger cookie, List listMatchInfoBase, + int hardTimeOut, Uint64 cookie, List listMatchInfoBase, List listInstructionInfo) { - return MDSALUtil.buildFlow(tableId, flowId, priority, flowName, idleTimeOut, hardTimeOut, cookie, + return buildFlow(tableId, flowId, priority, flowName, idleTimeOut, hardTimeOut, cookie, listMatchInfoBase, listInstructionInfo, true); } + // FIXME: priority -> Uint16 + // FIXME: tableId -> Uint8 + // FIXME: idleHardOut -> Uint16 + // FIXME: idleTiemOut -> Uint16 public static Flow buildFlow(short tableId, String flowId, int priority, String flowName, int idleTimeOut, - int hardTimeOut, BigInteger cookie, List listMatchInfoBase, + int hardTimeOut, Uint64 cookie, List listMatchInfoBase, List listInstructionInfo, boolean isStrict) { FlowKey key = new FlowKey(new FlowId(flowId)); return new FlowBuilder().setMatch(buildMatches(listMatchInfoBase)).withKey(key) @@ -161,14 +165,14 @@ public class MDSALUtil { } public static Flow buildFlowNew(short tableId, String flowId, int priority, String flowName, int idleTimeOut, - int hardTimeOut, BigInteger cookie, List listMatchInfoBase, + int hardTimeOut, Uint64 cookie, List listMatchInfoBase, List listInstructionInfo) { return MDSALUtil.buildFlowNew(tableId, flowId, priority, flowName, idleTimeOut, hardTimeOut, cookie, listMatchInfoBase, listInstructionInfo, true); } private static Flow buildFlowNew(short tableId, String flowId, int priority, String flowName, int idleTimeOut, - int hardTimeOut, BigInteger cookie, List listMatchInfoBase, + int hardTimeOut, Uint64 cookie, List listMatchInfoBase, List listInstructionInfo, boolean isStrict) { FlowKey key = new FlowKey(new FlowId(flowId)); return new FlowBuilder().setMatch(buildMatches(listMatchInfoBase)).withKey(key) @@ -179,7 +183,7 @@ public class MDSALUtil { .setCookie(new FlowCookie(cookie)).build(); } - public static GroupEntity buildGroupEntity(BigInteger dpnId, long groupId, String groupName, GroupTypes groupType, + public static GroupEntity buildGroupEntity(Uint64 dpnId, long groupId, String groupName, GroupTypes groupType, List listBucketInfo) { GroupEntityBuilder groupEntity = new GroupEntityBuilder(); @@ -198,7 +202,7 @@ public class MDSALUtil { } public static TransmitPacketInput getPacketOutDefault(List actionInfos, byte[] payload, - BigInteger dpnId) { + Uint64 dpnId) { return new TransmitPacketInputBuilder() .setAction(buildActions(actionInfos)) .setPayload(payload) @@ -230,13 +234,13 @@ public class MDSALUtil { .setIngress(ingress).setEgress(ingress).build(); } - public static TransmitPacketInput getPacketOut(List actionInfos, byte[] payload, BigInteger dpnId, + public static TransmitPacketInput getPacketOut(List actionInfos, byte[] payload, Uint64 dpnId, NodeConnectorRef nodeConnRef) { // TODO Auto-generated method stub return null; } - public static TransmitPacketInput getPacketOut(List actions, byte[] payload, BigInteger dpnId) { + public static TransmitPacketInput getPacketOut(List actions, byte[] payload, Uint64 dpnId) { NodeConnectorRef ncRef = getDefaultNodeConnRef(dpnId); return new TransmitPacketInputBuilder() .setAction(actions) @@ -247,7 +251,7 @@ public class MDSALUtil { .setIngress(ncRef).setEgress(ncRef).build(); } - public static Action retrieveSetTunnelIdAction(BigInteger tunnelId, int actionKey) { + public static Action retrieveSetTunnelIdAction(Uint64 tunnelId, int actionKey) { return new ActionBuilder().setAction( new SetFieldCaseBuilder().setSetField(new SetFieldBuilder().setTunnel(new TunnelBuilder() .setTunnelId(tunnelId).build()).build()) @@ -270,10 +274,10 @@ public class MDSALUtil { + (mask == 0 ? "" : "/" + mask); } - public static BigInteger getBigIntIpFromIpAddress(IpAddress ipAddr) { + public static Uint64 getBigIntIpFromIpAddress(IpAddress ipAddr) { String ipString = ipAddr.getIpv4Address().getValue(); int ipInt = InetAddresses.coerceToInteger(InetAddresses.forString(ipString)); - return BigInteger.valueOf(ipInt & 0xffffffffL); + return Uint64.valueOf(ipInt & 0xffffffffL); } @@ -347,11 +351,11 @@ public class MDSALUtil { } // TODO: Check the port const - public static NodeConnectorRef getDefaultNodeConnRef(BigInteger dpId) { + public static NodeConnectorRef getDefaultNodeConnRef(Uint64 dpId) { return getNodeConnRef(NODE_PREFIX + SEPARATOR + dpId, "0xfffffffd"); } - public static NodeConnectorRef getNodeConnRef(BigInteger dpId, String port) { + public static NodeConnectorRef getNodeConnRef(Uint64 dpId, String port) { return getNodeConnRef(NODE_PREFIX + SEPARATOR + dpId, port); } @@ -375,13 +379,13 @@ public class MDSALUtil { return nodeConnectorRef; } - public static BigInteger getDpnIdFromNodeName(NodeId nodeId) { + public static Uint64 getDpnIdFromNodeName(NodeId nodeId) { return getDpnIdFromNodeName(nodeId.getValue()); } - public static BigInteger getDpnIdFromNodeName(String mdsalNodeName) { + public static Uint64 getDpnIdFromNodeName(String mdsalNodeName) { String dpId = mdsalNodeName.substring(mdsalNodeName.lastIndexOf(':') + 1); - return new BigInteger(dpId); + return Uint64.valueOf(dpId); } public static long getOfPortNumberFromPortName(NodeConnectorId nodeConnectorId) { @@ -407,13 +411,8 @@ public class MDSALUtil { } } - public static BigInteger getDpnId(String datapathId) { - if (datapathId != null) { - String dpIdStr = datapathId.replace(":", ""); - BigInteger dpnId = new BigInteger(dpIdStr, 16); - return dpnId; - } - return null; + public static Uint64 getDpnId(String datapathId) { + return datapathId == null ? null : Uint64.valueOf(datapathId.replace(":", ""), 16); } public static Instruction buildAndGetPopVlanActionInstruction(int actionKey, int instructionKey) { @@ -443,7 +442,7 @@ public class MDSALUtil { .setEnd(endOffSet) .build(); nxRegLoadBuilder.setDst(dst); - nxRegLoadBuilder.setValue(new BigInteger(Long.toString(value))); + nxRegLoadBuilder.setValue(Uint64.valueOf(value)); ActionBuilder ab = new ActionBuilder(); ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder() .setNxRegLoad(nxRegLoadBuilder.build()).build()); @@ -522,13 +521,15 @@ public class MDSALUtil { return buildWriteActionsInstruction(listAction, instructionKey); } - public static Instruction buildAndGetWriteMetadaInstruction(BigInteger metadata, - BigInteger mask, int instructionKey) { + public static Instruction buildAndGetWriteMetadaInstruction(Uint64 metadata, Uint64 mask, int instructionKey) { return new InstructionBuilder() - .setInstruction( - new WriteMetadataCaseBuilder().setWriteMetadata( - new WriteMetadataBuilder().setMetadata(metadata).setMetadataMask(mask).build()) - .build()).withKey(new InstructionKey(instructionKey)).build(); + .setInstruction(new WriteMetadataCaseBuilder() + .setWriteMetadata(new WriteMetadataBuilder() + .setMetadata(metadata) + .setMetadataMask(mask) + .build()) + .build()) + .withKey(new InstructionKey(instructionKey)).build(); } public static Instruction buildAndGetGotoTableInstruction(short tableId, int instructionKey) { @@ -649,8 +650,8 @@ public class MDSALUtil { NxRegLoad regLoad = new NxRegLoadBuilder() .setDst(new DstBuilder().setDstChoice(new DstNxOfInPortCaseBuilder() .setOfInPort(Empty.getInstance()).build()) - .setStart(0).setEnd(15).build()) - .setValue(BigInteger.valueOf(inPortVal)).build(); + .setStart(Uint16.ZERO).setEnd(15).build()) + .setValue(Uint64.valueOf(inPortVal)).build(); ActionBuilder abExt = new ActionBuilder(); abExt.withKey(new ActionKey(actionKey)); abExt.setOrder(actionKey); diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MetaDataUtil.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MetaDataUtil.java index d5e5d5796..918eaa665 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MetaDataUtil.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/MetaDataUtil.java @@ -7,27 +7,28 @@ */ package org.opendaylight.genius.mdsalutil; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; public final class MetaDataUtil { - public static final BigInteger METADATA_MASK_LPORT_TAG = new BigInteger("0FFFFF0000000000", 16); - public static final BigInteger METADATA_MASK_SERVICE = new BigInteger("000000FFFF000000", 16); - public static final BigInteger METADATA_MASK_SERVICE_INDEX = new BigInteger("F000000000000000", 16); - public static final BigInteger METADATA_MASK_VRFID = new BigInteger("0000000000FFFFFE", 16); - public static final BigInteger METADATA_MASK_REMOTE_ACL_TAG = new BigInteger("0000000000FFFFF0", 16); - public static final BigInteger METADATA_MASK_POLICY_CLASSIFER_ID = new BigInteger("0000000000FFFFFE", 16); - public static final BigInteger METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID - = new BigInteger("08000000FFFFFF00", 16); - public static final BigInteger METADATA_MASK_LABEL_ITM = new BigInteger("40FFFFFF000000FF", 16); - public static final BigInteger METADA_MASK_TUNNEL_ID = new BigInteger("00000000FFFFFF00", 16); - public static final BigInteger METADATA_MASK_SERVICE_SH_FLAG = new BigInteger("000000FFFF000001", 16); - public static final BigInteger METADATA_MASK_LPORT_TAG_SH_FLAG = new BigInteger("0FFFFF0000000001", 16); - public static final BigInteger METADATA_MASK_SH_FLAG = new BigInteger("0000000000000001", 16); - public static final BigInteger METADATA_MASK_ELAN_SUBNET_ROUTE = new BigInteger("000000FFFF000000", 16); - public static final BigInteger METADATA_MASK_SUBNET_ROUTE = new BigInteger("000000FFFFFFFFFE", 16); - public static final BigInteger METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE = new BigInteger("0000000000000002", 16); - public static final BigInteger METADATA_MASK_ACL_DROP = new BigInteger("0000000000000004", 16); - public static final BigInteger REG6_MASK_REMOTE_DPN = new BigInteger("0FFFFF0000000000", 16); + public static final Uint64 METADATA_MASK_LPORT_TAG = Uint64.valueOf("0FFFFF0000000000", 16).intern(); + public static final Uint64 METADATA_MASK_SERVICE = Uint64.valueOf("000000FFFF000000", 16).intern(); + public static final Uint64 METADATA_MASK_SERVICE_INDEX = Uint64.valueOf("F000000000000000", 16).intern(); + public static final Uint64 METADATA_MASK_VRFID = Uint64.valueOf("0000000000FFFFFE", 16).intern(); + public static final Uint64 METADATA_MASK_REMOTE_ACL_TAG = Uint64.valueOf("0000000000FFFFF0", 16).intern(); + public static final Uint64 METADATA_MASK_POLICY_CLASSIFER_ID = Uint64.valueOf("0000000000FFFFFE", 16).intern(); + public static final Uint64 METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID = Uint64.valueOf("08000000FFFFFF00", 16) + .intern(); + public static final Uint64 METADATA_MASK_LABEL_ITM = Uint64.valueOf("40FFFFFF000000FF", 16).intern(); + public static final Uint64 METADA_MASK_TUNNEL_ID = Uint64.valueOf("00000000FFFFFF00", 16).intern(); + public static final Uint64 METADATA_MASK_SERVICE_SH_FLAG = Uint64.valueOf("000000FFFF000001", 16).intern(); + public static final Uint64 METADATA_MASK_LPORT_TAG_SH_FLAG = Uint64.valueOf("0FFFFF0000000001", 16).intern(); + public static final Uint64 METADATA_MASK_SH_FLAG = Uint64.valueOf("0000000000000001", 16).intern(); + public static final Uint64 METADATA_MASK_ELAN_SUBNET_ROUTE = Uint64.valueOf("000000FFFF000000", 16).intern(); + public static final Uint64 METADATA_MASK_SUBNET_ROUTE = Uint64.valueOf("000000FFFFFFFFFE", 16).intern(); + public static final Uint64 METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE = Uint64.valueOf("0000000000000002", 16) + .intern(); + public static final Uint64 METADATA_MASK_ACL_DROP = Uint64.valueOf("0000000000000004", 16).intern(); + public static final Uint64 REG6_MASK_REMOTE_DPN = Uint64.valueOf("0FFFFF0000000000", 16).intern(); public static final int METADATA_LPORT_TAG_OFFSET = 40; public static final int METADATA_LPORT_TAG_BITLEN = 20; @@ -39,73 +40,83 @@ public final class MetaDataUtil { public static final int REG6_START_INDEX = 0; public static final int REG6_END_INDEX = 31; + private static final Uint64 MASK_FOR_DISPATCHER = Uint64.valueOf("FFFFFFFFFFFFFFFE", 16).intern(); + private MetaDataUtil() { } - public static BigInteger getMetaDataForLPortDispatcher(int lportTag, short serviceIndex) { - return getServiceIndexMetaData(serviceIndex).or(getLportTagMetaData(lportTag)); + public static Uint64 getMetaDataForLPortDispatcher(int lportTag, short serviceIndex) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(getServiceIndexMetaData(serviceIndex).toJava().or( + getLportTagMetaData(lportTag).toJava())); } - public static BigInteger getMetaDataForLPortDispatcher(int lportTag, short serviceIndex, - BigInteger serviceMetaData) { + public static Uint64 getMetaDataForLPortDispatcher(int lportTag, short serviceIndex, Uint64 serviceMetaData) { return getMetaDataForLPortDispatcher(lportTag, serviceIndex, serviceMetaData, false); } - public static BigInteger getMetaDataForLPortDispatcher(int lportTag, short serviceIndex, - BigInteger serviceMetaData, boolean isSHFlagSet) { - int shBit = isSHFlagSet ? 1 : 0; - return getServiceIndexMetaData(serviceIndex).or(getLportTagMetaData(lportTag)).or(serviceMetaData) - .or(BigInteger.valueOf(shBit)); + public static Uint64 getMetaDataForLPortDispatcher(int lportTag, short serviceIndex, + Uint64 serviceMetaData, boolean isSHFlagSet) { + return Uint64.fromLongBits(getServiceIndexMetaData(serviceIndex).longValue() + | getLportTagMetaData(lportTag).longValue() + | serviceMetaData.longValue() + | (isSHFlagSet ? 1 : 0)); } - public static BigInteger getPolicyClassifierMetaData(long classifier) { - return METADATA_MASK_POLICY_CLASSIFER_ID.and(BigInteger.valueOf(classifier).shiftLeft(1)); + public static Uint64 getPolicyClassifierMetaData(long classifier) { + return Uint64.valueOf((METADATA_MASK_POLICY_CLASSIFER_ID.longValue() & classifier) << 1); } - public static BigInteger getServiceIndexMetaData(int serviceIndex) { - return new BigInteger("F", 16).and(BigInteger.valueOf(serviceIndex)).shiftLeft(60); + public static Uint64 getServiceIndexMetaData(int serviceIndex) { + return Uint64.fromLongBits((serviceIndex & 0xFL) << 60); } - public static BigInteger getLportTagMetaData(int lportTag) { - return new BigInteger("FFFFF", 16).and(BigInteger.valueOf(lportTag)).shiftLeft(METADATA_LPORT_TAG_OFFSET); + public static Uint64 getLportTagMetaData(int lportTag) { + return Uint64.fromLongBits((lportTag & 0xFFFFFL) << METADATA_LPORT_TAG_OFFSET); } - public static BigInteger getMetaDataMaskForLPortDispatcher() { + public static Uint64 getMetaDataMaskForLPortDispatcher() { return getMetaDataMaskForLPortDispatcher(METADATA_MASK_LPORT_TAG); } - public static BigInteger getMetaDataMaskForLPortDispatcher(BigInteger metadataMaskForLPortTag) { - return METADATA_MASK_SERVICE_INDEX.or(metadataMaskForLPortTag); + public static Uint64 getMetaDataMaskForLPortDispatcher(Uint64 metadataMaskForLPortTag) { + return Uint64.fromLongBits(METADATA_MASK_SERVICE_INDEX.longValue() | metadataMaskForLPortTag.longValue()); } - public static BigInteger getMetaDataMaskForLPortDispatcher(BigInteger metadataMaskForServiceIndex, - BigInteger metadataMaskForLPortTag, BigInteger metadataMaskForService) { - return metadataMaskForServiceIndex.or(metadataMaskForLPortTag).or(metadataMaskForService); + public static Uint64 getMetaDataMaskForLPortDispatcher(Uint64 metadataMaskForServiceIndex, + Uint64 metadataMaskForLPortTag, Uint64 metadataMaskForService) { + return Uint64.fromLongBits(metadataMaskForServiceIndex.longValue() | metadataMaskForLPortTag.longValue() + | metadataMaskForService.longValue()); } - public static BigInteger getMetadataLPort(int portTag) { - return new BigInteger("FFFF", 16).and(BigInteger.valueOf(portTag)).shiftLeft(METADATA_LPORT_TAG_OFFSET); + public static Uint64 getMetadataLPort(int portTag) { + return Uint64.valueOf((portTag & 0xFFFFL) << METADATA_LPORT_TAG_OFFSET); } - public static BigInteger getLportFromMetadata(BigInteger metadata) { - return metadata.and(METADATA_MASK_LPORT_TAG).shiftRight(METADATA_LPORT_TAG_OFFSET); + public static Uint64 getLportFromMetadata(Uint64 metadata) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(metadata.toJava().and(METADATA_MASK_LPORT_TAG.toJava()) + .shiftRight(METADATA_LPORT_TAG_OFFSET)); } - public static int getElanTagFromMetadata(BigInteger metadata) { - return metadata.and(MetaDataUtil.METADATA_MASK_SERVICE).shiftRight(24).intValue(); + public static int getElanTagFromMetadata(Uint64 metadata) { + // FIXME: this can be done more efficiently + return metadata.toJava().and(MetaDataUtil.METADATA_MASK_SERVICE.toJava()).shiftRight(24).intValue(); } - public static long getPolicyClassifierFromMetadata(BigInteger metadata) { - return metadata.and(METADATA_MASK_POLICY_CLASSIFER_ID).shiftRight(1).longValue(); + public static long getPolicyClassifierFromMetadata(Uint64 metadata) { + // FIXME: this can be done more efficiently + return metadata.toJava().and(METADATA_MASK_POLICY_CLASSIFER_ID.toJava()).shiftRight(1).longValue(); } - public static BigInteger getElanTagMetadata(long elanTag) { - return BigInteger.valueOf(elanTag).shiftLeft(24); + public static Uint64 getElanTagMetadata(long elanTag) { + return Uint64.fromLongBits(elanTag << 24); } - public static int getServiceTagFromMetadata(BigInteger metadata) { - return metadata.and(MetaDataUtil.METADATA_MASK_SERVICE_INDEX) + public static int getServiceTagFromMetadata(Uint64 metadata) { + // FIXME: this can be done more efficiently + return metadata.toJava().and(MetaDataUtil.METADATA_MASK_SERVICE_INDEX.toJava()) .shiftRight(60).intValue(); } @@ -114,11 +125,11 @@ public final class MetaDataUtil { * should have 08. So, shifting 08 to 7 bytes (56 bits) and the result is OR-ed with * VNI being shifted to 1 byte. */ - public static BigInteger getTunnelIdWithValidVniBitAndVniSet(int vni) { - return BigInteger.valueOf(0X08).shiftLeft(56).or(BigInteger.valueOf(vni).shiftLeft(8)); + public static Uint64 getTunnelIdWithValidVniBitAndVniSet(int vni) { + return Uint64.valueOf(8L << 56 | vni << 8); } - public static long getNatRouterIdFromMetadata(BigInteger metadata) { + public static long getNatRouterIdFromMetadata(Uint64 metadata) { return getVpnIdFromMetadata(metadata); } @@ -135,44 +146,50 @@ public final class MetaDataUtil { * @param conntrackClassifierType the conntrack classifier flag * @return the acl conntrack classifier flag from meta data */ - public static BigInteger getAclConntrackClassifierTypeFromMetaData(BigInteger conntrackClassifierType) { - return METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE.and(conntrackClassifierType.shiftLeft(1)); + public static Uint64 getAclConntrackClassifierTypeFromMetaData(Uint64 conntrackClassifierType) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(METADATA_MASK_ACL_CONNTRACK_CLASSIFIER_TYPE.toJava().and(conntrackClassifierType.toJava() + .shiftLeft(1))); } - public static BigInteger getAclDropMetaData(BigInteger dropFlag) { - return METADATA_MASK_ACL_DROP.and(dropFlag.shiftLeft(2)); + public static Uint64 getAclDropMetaData(Uint64 dropFlag) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(METADATA_MASK_ACL_DROP.toJava().and(dropFlag.toJava().shiftLeft(2))); } - public static BigInteger getVpnIdMetadata(long vrfId) { - return METADATA_MASK_VRFID.and(BigInteger.valueOf(vrfId).shiftLeft(1)); + public static Uint64 getVpnIdMetadata(long vrfId) { + return Uint64.valueOf(METADATA_MASK_VRFID.longValue() & vrfId << 1); } - public static long getVpnIdFromMetadata(BigInteger metadata) { - return metadata.and(METADATA_MASK_VRFID).shiftRight(1).longValue(); + public static long getVpnIdFromMetadata(Uint64 metadata) { + // FIXME: this can be done more efficiently + return metadata.toJava().and(METADATA_MASK_VRFID.toJava()).shiftRight(1).longValue(); } - public static BigInteger getWriteMetaDataMaskForDispatcherTable() { - return new BigInteger("FFFFFFFFFFFFFFFE", 16); + public static Uint64 getWriteMetaDataMaskForDispatcherTable() { + return MASK_FOR_DISPATCHER; } - public static BigInteger getWriteMetaDataMaskForEgressDispatcherTable() { - return new BigInteger("000000FFFFFFFFFE", 16); + public static Uint64 getWriteMetaDataMaskForEgressDispatcherTable() { + // FIXME: make this an interned constant + return Uint64.valueOf("000000FFFFFFFFFE", 16); } - public static BigInteger getLportTagForReg6(int lportTag) { - return new BigInteger("FFFFF", 16).and(BigInteger.valueOf(lportTag)).shiftLeft(8); + public static Uint64 getLportTagForReg6(int lportTag) { + return Uint64.valueOf((lportTag & 0xFFFFF) << 8); } - public static BigInteger getServiceIndexForReg6(int serviceIndex) { - return new BigInteger("F", 16).and(BigInteger.valueOf(serviceIndex)).shiftLeft(28); + public static Uint64 getServiceIndexForReg6(int serviceIndex) { + return Uint64.valueOf((0xFL & serviceIndex) << 28); } - public static BigInteger getInterfaceTypeForReg6(int tunnelType) { - return new BigInteger("F", 16).and(BigInteger.valueOf(tunnelType)).shiftLeft(4); + public static Uint64 getInterfaceTypeForReg6(int tunnelType) { + return Uint64.valueOf((0xF & tunnelType) << 4); } public static long getReg6ValueForLPortDispatcher(int lportTag, short serviceIndex) { - return getServiceIndexForReg6(serviceIndex).or(getLportTagForReg6(lportTag)).longValue(); + // FIXME: this can be done more efficiently + return getServiceIndexForReg6(serviceIndex).toJava().or(getLportTagForReg6(lportTag).toJava()).longValue(); } /** Utility to fetch the register value for lport dispatcher table. @@ -180,35 +197,42 @@ public final class MetaDataUtil { * and next 4 bits for interface-type */ public static long getReg6ValueForLPortDispatcher(int lportTag, short serviceIndex, short interfaceType) { - return getServiceIndexForReg6(serviceIndex).or(getLportTagForReg6(lportTag) - .or(getInterfaceTypeForReg6(interfaceType))).longValue(); + // FIXME: this can be done more efficiently + return getServiceIndexForReg6(serviceIndex).toJava().or(getLportTagForReg6(lportTag).toJava() + .or(getInterfaceTypeForReg6(interfaceType).toJava())).longValue(); } public static long getRemoteDpnMetadatForEgressTunnelTable(long remoteDpnId) { - return new BigInteger("FFFFF", 16).and(BigInteger.valueOf(remoteDpnId)).shiftLeft(8).longValue(); + return (remoteDpnId & 0xFFFFFF) << 8; } public static long getRemoteDpnMaskForEgressTunnelTable() { - return REG6_MASK_REMOTE_DPN.shiftRight(32).longValue(); + // FIXME: this can be done more efficiently + return REG6_MASK_REMOTE_DPN.toJava().shiftRight(32).longValue(); } public static long getLportTagMaskForReg6() { - return METADATA_MASK_LPORT_TAG.shiftRight(32).longValue(); + // FIXME: this can be done more efficiently + return METADATA_MASK_LPORT_TAG.toJava().shiftRight(32).longValue(); } public static long getElanMaskForReg() { - return METADATA_MASK_SERVICE.shiftRight(24).longValue(); + // FIXME: this can be done more efficiently + return METADATA_MASK_SERVICE.toJava().shiftRight(24).longValue(); } public static long getVpnIdMaskForReg() { - return METADATA_MASK_VRFID.shiftRight(1).longValue(); + // FIXME: this can be done more efficiently + return METADATA_MASK_VRFID.toJava().shiftRight(1).longValue(); } - public static BigInteger mergeMetadataValues(BigInteger metadata, BigInteger metadata2) { - return metadata.or(metadata2); + public static Uint64 mergeMetadataValues(Uint64 metadata, Uint64 metadata2) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(metadata.toJava().or(metadata2.toJava())); } - public static BigInteger mergeMetadataMask(BigInteger mask, BigInteger mask2) { - return mask.or(mask2); + public static Uint64 mergeMetadataMask(Uint64 mask, Uint64 mask2) { + // FIXME: this can be done more efficiently + return Uint64.valueOf(mask.toJava().or(mask2.toJava())); } } 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 bbddc0438..7482d1e6f 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 @@ -31,15 +31,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class NWUtil { - private static final Logger LOG = LoggerFactory.getLogger(NWUtil.class); - - private static byte[] HIGH_128_BITS = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; - private static BigInteger HIGH_128_INT = new BigInteger(HIGH_128_BITS); + private static final BigInteger HIGH_128_INT = new BigInteger(new byte[] { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 + }); private NWUtil() { @@ -161,8 +161,8 @@ public final class NWUtil { /** * Returns the ids of the currently operative DPNs. */ - public static List getOperativeDPNs(DataBroker dataBroker) { - List result = new LinkedList<>(); + public static List getOperativeDPNs(DataBroker dataBroker) { + List result = new LinkedList<>(); InstanceIdentifier nodesInstanceIdentifier = InstanceIdentifier.builder(Nodes.class).build(); Optional nodesOptional = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, nodesInstanceIdentifier); @@ -172,7 +172,7 @@ public final class NWUtil { for (Node node : nodesOptional.get().nonnullNode()) { NodeId nodeId = node.getId(); if (nodeId != null) { - BigInteger dpnId = MDSALUtil.getDpnIdFromNodeName(nodeId); + Uint64 dpnId = MDSALUtil.getDpnIdFromNodeName(nodeId); result.add(dpnId); } } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java index 9827c25ae..0bdefd45e 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/NwConstants.java @@ -7,7 +7,7 @@ */ package org.opendaylight.genius.mdsalutil; -import java.math.BigInteger; +import org.opendaylight.yangtools.yang.common.Uint64; public interface NwConstants { @@ -94,28 +94,29 @@ public interface NwConstants { String INGRESS_COUNTERS_SERVICE_NAME = "INGRESS_COUNTERS_SERVICE"; String EGRESS_COUNTERS_SERVICE_NAME = "EGRESS_COUNTERS_SERVICE"; - BigInteger COOKIE_IPV6_TABLE = new BigInteger("4000000", 16); - BigInteger COOKIE_QOS_TABLE = new BigInteger("4000001", 16); - BigInteger VLAN_TABLE_COOKIE = new BigInteger("8000000", 16); - BigInteger COOKIE_VM_INGRESS_TABLE = new BigInteger("8000001", 16); - BigInteger COOKIE_VM_LFIB_TABLE = new BigInteger("8000002", 16); - BigInteger COOKIE_VM_FIB_TABLE = new BigInteger("8000003", 16); - BigInteger COOKIE_DNAT_TABLE = new BigInteger("8000004", 16); - BigInteger COOKIE_TS_TABLE = new BigInteger("8000005", 16); - BigInteger COOKIE_SNAT_TABLE = new BigInteger("8000006", 16); - BigInteger EGRESS_DISPATCHER_TABLE_COOKIE = new BigInteger("8000007", 16); - BigInteger COOKIE_OUTBOUND_NAPT_TABLE = new BigInteger("8000008", 16); - BigInteger COOKIE_L3_GW_MAC_TABLE = new BigInteger("8000009", 16); - BigInteger COOKIE_SUBNET_ROUTE_TABLE_MISS = new BigInteger("8000010", 16); - BigInteger EGRESS_POLICY_CLASSIFIER_COOKIE = new BigInteger("8000230", 16); - BigInteger EGRESS_POLICY_ROUTING_COOKIE = new BigInteger("8000231", 16); - BigInteger COOKIE_VXLAN_TRUNK_L2_TABLE = new BigInteger("1200000", 16); - BigInteger COOKIE_GRE_TRUNK_L2_TABLE = new BigInteger("1400000", 16); - BigInteger COOKIE_ELAN_INGRESS_TABLE = new BigInteger("8040000", 16); - BigInteger TUNNEL_TABLE_COOKIE = new BigInteger("9000000", 16); - BigInteger COOKIE_ARP_RESPONDER = new BigInteger("8220000", 16); - BigInteger COOKIE_COE_KUBE_PROXY_TABLE = new BigInteger("8230000", 16); - BigInteger COOKIE_ITM_EGRESS_TUNNEL_TABLE = new BigInteger("8000000", 16); + // FIXME: There are more efficient ways to express these constants + Uint64 COOKIE_IPV6_TABLE = Uint64.valueOf("4000000", 16).intern(); + Uint64 COOKIE_QOS_TABLE = Uint64.valueOf("4000001", 16).intern(); + Uint64 VLAN_TABLE_COOKIE = Uint64.valueOf("8000000", 16).intern(); + Uint64 COOKIE_VM_INGRESS_TABLE = Uint64.valueOf("8000001", 16).intern(); + Uint64 COOKIE_VM_LFIB_TABLE = Uint64.valueOf("8000002", 16).intern(); + Uint64 COOKIE_VM_FIB_TABLE = Uint64.valueOf("8000003", 16).intern(); + Uint64 COOKIE_DNAT_TABLE = Uint64.valueOf("8000004", 16).intern(); + Uint64 COOKIE_TS_TABLE = Uint64.valueOf("8000005", 16).intern(); + Uint64 COOKIE_SNAT_TABLE = Uint64.valueOf("8000006", 16).intern(); + Uint64 EGRESS_DISPATCHER_TABLE_COOKIE = Uint64.valueOf("8000007", 16).intern(); + Uint64 COOKIE_OUTBOUND_NAPT_TABLE = Uint64.valueOf("8000008", 16).intern(); + Uint64 COOKIE_L3_GW_MAC_TABLE = Uint64.valueOf("8000009", 16).intern(); + Uint64 COOKIE_SUBNET_ROUTE_TABLE_MISS = Uint64.valueOf("8000010", 16).intern(); + Uint64 EGRESS_POLICY_CLASSIFIER_COOKIE = Uint64.valueOf("8000230", 16).intern(); + Uint64 EGRESS_POLICY_ROUTING_COOKIE = Uint64.valueOf("8000231", 16).intern(); + Uint64 COOKIE_VXLAN_TRUNK_L2_TABLE = Uint64.valueOf("1200000", 16).intern(); + Uint64 COOKIE_GRE_TRUNK_L2_TABLE = Uint64.valueOf("1400000", 16).intern(); + Uint64 COOKIE_ELAN_INGRESS_TABLE = Uint64.valueOf("8040000", 16).intern(); + Uint64 TUNNEL_TABLE_COOKIE = Uint64.valueOf("9000000", 16).intern(); + Uint64 COOKIE_ARP_RESPONDER = Uint64.valueOf("8220000", 16).intern(); + Uint64 COOKIE_COE_KUBE_PROXY_TABLE = Uint64.valueOf("8230000", 16).intern(); + Uint64 COOKIE_ITM_EGRESS_TUNNEL_TABLE = Uint64.valueOf("8000000", 16).intern(); //Table IDs short VLAN_INTERFACE_INGRESS_TABLE = 0; diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLearn.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLearn.java index 467883a0e..a39e72eab 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLearn.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLearn.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -29,6 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.NxLearnBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.nx.learn.FlowMods; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.nx.learn.FlowModsBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Learn action. @@ -38,19 +38,19 @@ public class ActionLearn extends ActionInfo { private final int idleTimeout; private final int hardTimeout; private final int priority; - private final BigInteger cookie; + private final Uint64 cookie; private final int flags; private final short tableId; private final int finIdleTimeout; private final int finHardTimeout; private final List flowMods = new ArrayList<>(); - public ActionLearn(int idleTimeout, int hardTimeout, int priority, BigInteger cookie, int flags, short tableId, + public ActionLearn(int idleTimeout, int hardTimeout, int priority, Uint64 cookie, int flags, short tableId, int finIdleTimeout, int finHardTimeout, List flowMods) { this(0, idleTimeout, hardTimeout, priority, cookie, flags, tableId, finIdleTimeout, finHardTimeout, flowMods); } - public ActionLearn(int actionKey, int idleTimeout, int hardTimeout, int priority, BigInteger cookie, int flags, + public ActionLearn(int actionKey, int idleTimeout, int hardTimeout, int priority, Uint64 cookie, int flags, short tableId, int finIdleTimeout, int finHardTimeout, List flowMods) { super(actionKey); this.idleTimeout = idleTimeout; @@ -103,7 +103,7 @@ public class ActionLearn extends ActionInfo { return priority; } - public BigInteger getCookie() { + public Uint64 getCookie() { return cookie; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpa.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpa.java index 47353e259..bb1d772ab 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpa.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpa.java @@ -8,7 +8,6 @@ package org.opendaylight.genius.mdsalutil.actions; import com.google.common.net.InetAddresses; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; @@ -18,6 +17,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Load IP Address to SPA (Sender Protocol Address). @@ -52,10 +53,10 @@ public class ActionLoadIpToSpa extends ActionInfo { .setNxRegLoad(new NxRegLoadBuilder() .setDst(new DstBuilder() .setDstChoice(new DstOfArpSpaCaseBuilder().setOfArpSpa(Empty.getInstance()).build()) - .setStart(0) + .setStart(Uint16.ZERO) .setEnd(31) .build()) - .setValue(BigInteger.valueOf( + .setValue(Uint64.valueOf( InetAddresses.coerceToInteger(InetAddresses.forString(address)) & 0xffffffffL)) .build()) .build()) diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToSha.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToSha.java index ae0ee9b92..d74c02966 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToSha.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToSha.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.NWUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; @@ -19,6 +18,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Load MAC address to SHA (Sender Hardware Address). @@ -53,10 +54,10 @@ public class ActionLoadMacToSha extends ActionInfo { .setNxRegLoad(new NxRegLoadBuilder() .setDst(new DstBuilder() .setDstChoice(new DstNxArpShaCaseBuilder().setNxArpSha(Empty.getInstance()).build()) - .setStart(0) + .setStart(Uint16.ZERO) .setEnd(47) .build()) - .setValue(BigInteger.valueOf(NWUtil.macToLong(address))) + .setValue(Uint64.valueOf(NWUtil.macToLong(address))) .build()) .build()) .withKey(new ActionKey(newActionKey)) diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPort.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPort.java index a6672c4b7..d36379827 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPort.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPort.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; @@ -17,19 +16,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * NX load in port action. */ public class ActionNxLoadInPort extends ActionInfo { - private final BigInteger value; + private final Uint64 value; - public ActionNxLoadInPort(BigInteger value) { + public ActionNxLoadInPort(Uint64 value) { this(0, value); } - public ActionNxLoadInPort(int actionKey, BigInteger value) { + public ActionNxLoadInPort(int actionKey, Uint64 value) { super(actionKey); this.value = value; } @@ -46,7 +47,7 @@ public class ActionNxLoadInPort extends ActionInfo { .setNxRegLoad(new NxRegLoadBuilder() .setDst(new DstBuilder() .setDstChoice(new DstNxOfInPortCaseBuilder().setOfInPort(Empty.getInstance()).build()) - .setStart(0) + .setStart(Uint16.ZERO) .setEnd(15) .build()) .setValue(value) @@ -56,7 +57,7 @@ public class ActionNxLoadInPort extends ActionInfo { .build(); } - public BigInteger getValue() { + public Uint64 getValue() { return value; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadata.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadata.java index d99b6a71b..069f43d66 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadata.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadata.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; @@ -17,21 +16,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint64; /** * NX load metadata action. */ public class ActionNxLoadMetadata extends ActionInfo { - private final BigInteger value; + private final Uint64 value; private final Integer startBit; private final Integer endBit; - public ActionNxLoadMetadata(BigInteger value, Integer startBit, Integer endBit) { + public ActionNxLoadMetadata(Uint64 value, Integer startBit, Integer endBit) { this(0, value, startBit, endBit); } - public ActionNxLoadMetadata(int actionKey, BigInteger value, Integer startBit, Integer endBit) { + public ActionNxLoadMetadata(int actionKey, Uint64 value, Integer startBit, Integer endBit) { super(actionKey); this.value = value; this.startBit = startBit; @@ -60,7 +60,7 @@ public class ActionNxLoadMetadata extends ActionInfo { .build(); } - public BigInteger getValue() { + public Uint64 getValue() { return value; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoad.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoad.java index 4eae67eb6..b8d514311 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoad.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoad.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; @@ -18,6 +17,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Action to load an NXM register. @@ -52,7 +52,7 @@ public class ActionRegLoad extends ActionInfo { .setStart(start) .setEnd(end) .build(); - NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder().setDst(dst).setValue(BigInteger.valueOf(load)); + NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder().setDst(dst).setValue(Uint64.valueOf(load)); return new ActionBuilder() .setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder().setNxRegLoad( diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetArpOp.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetArpOp.java index 8f76387ee..128a0534e 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetArpOp.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetArpOp.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; @@ -17,6 +16,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Set ARP Operation Type that is Request or Replay. @@ -54,7 +54,7 @@ public class ActionSetArpOp extends ActionInfo { .setStart(0) .setEnd(15) .build()) - .setValue(BigInteger.valueOf(value)) + .setValue(Uint64.valueOf(value)) .build()) .build()) .withKey(new ActionKey(newActionKey)) diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldMeta.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldMeta.java index 0e3ebc2da..1a0154244 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldMeta.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldMeta.java @@ -5,11 +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.mdsalutil.actions; -import java.math.BigInteger; - import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder; @@ -17,21 +14,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; public class ActionSetFieldMeta extends ActionInfo { - private final BigInteger metadataValue; + private final Uint64 metadataValue; - public ActionSetFieldMeta(BigInteger metadataValue) { + public ActionSetFieldMeta(Uint64 metadataValue) { this(0, metadataValue); } - public ActionSetFieldMeta(int actionKey, BigInteger metadataValue) { + public ActionSetFieldMeta(int actionKey, Uint64 metadataValue) { super(actionKey); this.metadataValue = metadataValue; } - public BigInteger getMetadataValue() { + public Uint64 getMetadataValue() { return metadataValue; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldTunnelId.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldTunnelId.java index f8b3d5761..99268c122 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldTunnelId.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetFieldTunnelId.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder; @@ -16,28 +15,29 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Set tunnel id field action. */ public class ActionSetFieldTunnelId extends ActionInfo { - private final BigInteger tunnelId; - @Nullable private final BigInteger tunnelMask; + private final Uint64 tunnelId; + private final @Nullable Uint64 tunnelMask; - public ActionSetFieldTunnelId(BigInteger tunnelId) { + public ActionSetFieldTunnelId(Uint64 tunnelId) { this(0, tunnelId); } - public ActionSetFieldTunnelId(int actionKey, BigInteger tunnelId) { + public ActionSetFieldTunnelId(int actionKey, Uint64 tunnelId) { this(actionKey, tunnelId, null); } - public ActionSetFieldTunnelId(BigInteger tunnelId, BigInteger tunnelMask) { + public ActionSetFieldTunnelId(Uint64 tunnelId, Uint64 tunnelMask) { this(0, tunnelId, tunnelMask); } - public ActionSetFieldTunnelId(int actionKey, BigInteger tunnelId, BigInteger tunnelMask) { + public ActionSetFieldTunnelId(int actionKey, Uint64 tunnelId, Uint64 tunnelMask) { super(actionKey); this.tunnelId = tunnelId; this.tunnelMask = tunnelMask; @@ -67,12 +67,11 @@ public class ActionSetFieldTunnelId extends ActionInfo { .build(); } - public BigInteger getTunnelId() { + public Uint64 getTunnelId() { return tunnelId; } - @Nullable - public BigInteger getTunnelMask() { + public @Nullable Uint64 getTunnelMask() { return tunnelMask; } @@ -109,5 +108,4 @@ public class ActionSetFieldTunnelId extends ActionInfo { return "ActionSetFieldTunnelId [tunnelId=" + tunnelId + ", tunnelMask=" + tunnelMask + ", getActionKey()=" + getActionKey() + "]"; } - } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelDestinationIp.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelDestinationIp.java index 9c3202644..e48f1bb48 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelDestinationIp.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelDestinationIp.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; @@ -17,20 +16,29 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4DstCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Set tunnel destination IP action. */ public class ActionSetTunnelDestinationIp extends ActionInfo { + private static final Dst NX_REGEX_LOAD_DST = new DstBuilder() + .setDstChoice(new DstNxTunIpv4DstCaseBuilder().setNxTunIpv4Dst(Empty.getInstance()).build()) + .setStart(Uint16.ZERO) + .setEnd(Uint16.valueOf(31).intern()) + .build(); + - private final BigInteger destIp; + private final Uint64 destIp; private final boolean groupBucket; - public ActionSetTunnelDestinationIp(BigInteger destIp) { + public ActionSetTunnelDestinationIp(Uint64 destIp) { this(0, destIp); } @@ -38,7 +46,7 @@ public class ActionSetTunnelDestinationIp extends ActionInfo { this(0, destIp); } - public ActionSetTunnelDestinationIp(int actionKey, BigInteger destIp) { + public ActionSetTunnelDestinationIp(int actionKey, Uint64 destIp) { super(actionKey); this.destIp = destIp; this.groupBucket = false; @@ -48,7 +56,7 @@ public class ActionSetTunnelDestinationIp extends ActionInfo { this(actionKey, MDSALUtil.getBigIntIpFromIpAddress(destIp)); } - public BigInteger getDestIp() { + public Uint64 getDestIp() { return destIp; } @@ -63,24 +71,19 @@ public class ActionSetTunnelDestinationIp extends ActionInfo { @Override public Action buildAction(int newActionKey) { - NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder(); - Dst dst = new DstBuilder() - .setDstChoice(new DstNxTunIpv4DstCaseBuilder().setNxTunIpv4Dst(Empty.getInstance()).build()) - .setStart(0) - .setEnd(31) - .build(); - nxRegLoadBuilder.setDst(dst); - nxRegLoadBuilder.setValue(destIp); - ActionBuilder ab = new ActionBuilder(); + NxRegLoad nxRegLoad = new NxRegLoadBuilder() + .setDst(NX_REGEX_LOAD_DST) + .setValue(destIp) + .build(); + ActionBuilder ab = new ActionBuilder().withKey(new ActionKey(newActionKey)); if (groupBucket) { ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder() - .setNxRegLoad(nxRegLoadBuilder.build()).build()); + .setNxRegLoad(nxRegLoad).build()); } else { ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder() - .setNxRegLoad(nxRegLoadBuilder.build()).build()); + .setNxRegLoad(nxRegLoad).build()); } - ab.withKey(new ActionKey(newActionKey)); return ab.build(); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelSourceIp.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelSourceIp.java index fbe6706f9..e5d8e5261 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelSourceIp.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/actions/ActionSetTunnelSourceIp.java @@ -7,7 +7,6 @@ */ package org.opendaylight.genius.mdsalutil.actions; -import java.math.BigInteger; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; @@ -17,20 +16,28 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxTunIpv4SrcCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoadBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.Dst; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load.DstBuilder; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Set tunnel source IP action. */ public class ActionSetTunnelSourceIp extends ActionInfo { + private static final Dst NX_REGEX_LOAD_SRC = new DstBuilder() + .setDstChoice(new DstNxTunIpv4SrcCaseBuilder().setNxTunIpv4Src(Empty.getInstance()).build()) + .setStart(Uint16.ZERO) + .setEnd(Uint16.valueOf(31).intern()) + .build(); - private final BigInteger sourceIp; + private final Uint64 sourceIp; private final boolean groupBucket; - public ActionSetTunnelSourceIp(BigInteger sourceIp) { + public ActionSetTunnelSourceIp(Uint64 sourceIp) { this(0, sourceIp); } @@ -38,7 +45,7 @@ public class ActionSetTunnelSourceIp extends ActionInfo { this(0, sourceIp); } - public ActionSetTunnelSourceIp(int actionKey, BigInteger sourceIp) { + public ActionSetTunnelSourceIp(int actionKey, Uint64 sourceIp) { super(actionKey); this.sourceIp = sourceIp; this.groupBucket = false; @@ -48,7 +55,7 @@ public class ActionSetTunnelSourceIp extends ActionInfo { this(actionKey, MDSALUtil.getBigIntIpFromIpAddress(sourceIp)); } - public BigInteger getSourceIp() { + public Uint64 getSourceIp() { return sourceIp; } @@ -63,24 +70,19 @@ public class ActionSetTunnelSourceIp extends ActionInfo { @Override public Action buildAction(int newActionKey) { - NxRegLoadBuilder nxRegLoadBuilder = new NxRegLoadBuilder(); - Dst dst = new DstBuilder() - .setDstChoice(new DstNxTunIpv4SrcCaseBuilder().setNxTunIpv4Src(Empty.getInstance()).build()) - .setStart(0) - .setEnd(31) - .build(); - nxRegLoadBuilder.setDst(dst); - nxRegLoadBuilder.setValue(sourceIp); - ActionBuilder ab = new ActionBuilder(); + final NxRegLoad nxRegLoad = new NxRegLoadBuilder() + .setDst(NX_REGEX_LOAD_SRC) + .setValue(sourceIp) + .build(); + ActionBuilder ab = new ActionBuilder().withKey(new ActionKey(newActionKey)); if (groupBucket) { ab.setAction(new NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder() - .setNxRegLoad(nxRegLoadBuilder.build()).build()); + .setNxRegLoad(nxRegLoad).build()); } else { ab.setAction(new NxActionRegLoadNodesNodeTableFlowApplyActionsCaseBuilder() - .setNxRegLoad(nxRegLoadBuilder.build()).build()); + .setNxRegLoad(nxRegLoad).build()); } - ab.withKey(new ActionKey(newActionKey)); return ab.build(); } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadata.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadata.java index 1f317230e..1583ae59c 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadata.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadata.java @@ -7,22 +7,22 @@ */ package org.opendaylight.genius.mdsalutil.instructions; -import java.math.BigInteger; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadataBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Write metadata instruction. */ public class InstructionWriteMetadata extends AbstractInstructionInfoImpl { + private final Uint64 metadata; + private final Uint64 mask; - private final BigInteger metadata; - private final BigInteger mask; - - public InstructionWriteMetadata(BigInteger metadata, BigInteger mask) { + // FIXME: this should take and WriteMetadata instance + public InstructionWriteMetadata(Uint64 metadata, Uint64 mask) { this.metadata = metadata; this.mask = mask; } @@ -42,11 +42,11 @@ public class InstructionWriteMetadata extends AbstractInstructionInfoImpl { .build(); } - public BigInteger getMetadata() { + public Uint64 getMetadata() { return metadata; } - public BigInteger getMask() { + public Uint64 getMask() { return mask; } 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 42ba7aa80..98674c80a 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 @@ -9,7 +9,6 @@ package org.opendaylight.genius.mdsalutil.interfaces; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.ListenableFuture; -import java.math.BigInteger; import java.util.concurrent.ExecutionException; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.infra.Datastore.Configuration; @@ -22,6 +21,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.yang.common.Uint64; public interface IMdsalApiManager { @@ -36,10 +36,10 @@ public interface IMdsalApiManager { /** * Adds a flow. * - * @deprecated Use {@link #addFlow(TypedWriteTransaction, BigInteger, Flow)}. + * @deprecated Use {@link #addFlow(TypedWriteTransaction, Uint64, Flow)}. */ @Deprecated - CheckedFuture installFlow(BigInteger dpId, Flow flowEntity); + CheckedFuture installFlow(Uint64 dpId, Flow flowEntity); /** * Adds a flow. @@ -47,7 +47,7 @@ public interface IMdsalApiManager { * @deprecated Use {@link #addFlow(TypedWriteTransaction, FlowEntity)}. */ @Deprecated - CheckedFuture installFlow(BigInteger dpId, FlowEntity flowEntity); + CheckedFuture installFlow(Uint64 dpId, FlowEntity flowEntity); /** * Adds the given flow. @@ -64,15 +64,15 @@ public interface IMdsalApiManager { * @param dpId The DPN identifier. * @param flow The flow. */ - void addFlow(TypedWriteTransaction tx, BigInteger dpId, Flow flow); + void addFlow(TypedWriteTransaction tx, Uint64 dpId, Flow flow); /** * Removes a flow. * - * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, BigInteger, String, short)}. + * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, Uint64, String, short)}. */ @Deprecated - ListenableFuture removeFlow(BigInteger dpId, short tableId, FlowId flowId); + ListenableFuture removeFlow(Uint64 dpId, short tableId, FlowId flowId); /** * Removes a flow. @@ -85,10 +85,10 @@ public interface IMdsalApiManager { /** * Removes a flow. * - * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, BigInteger, Flow)}. + * @deprecated Use {@link #removeFlow(TypedReadWriteTransaction, Uint64, Flow)}. */ @Deprecated - CheckedFuture removeFlow(BigInteger dpId, Flow flowEntity); + CheckedFuture removeFlow(Uint64 dpId, Flow flowEntity); /** * Removes the given flow. @@ -97,7 +97,7 @@ public interface IMdsalApiManager { * @param dpId The DPN identifier. * @param flow The flow. */ - void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, Flow flow) + void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, Flow flow) throws ExecutionException, InterruptedException; /** @@ -117,7 +117,7 @@ public interface IMdsalApiManager { * @param flowKey The flow key. * @param tableId The table identifier. */ - void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, FlowKey flowKey, short tableId) + void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, FlowKey flowKey, short tableId) throws ExecutionException, InterruptedException; /** @@ -128,7 +128,7 @@ public interface IMdsalApiManager { * @param flowId The flow identifier. * @param tableId The table identifier. */ - void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, String flowId, short tableId) + void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, String flowId, short tableId) throws ExecutionException, InterruptedException; /** @@ -146,7 +146,7 @@ public interface IMdsalApiManager { * @param dpId The DPN identifier. * @param group The group to add. */ - void addGroup(TypedWriteTransaction tx, BigInteger dpId, Group group); + void addGroup(TypedWriteTransaction tx, Uint64 dpId, Group group); /** * Remove a group. @@ -172,7 +172,7 @@ public interface IMdsalApiManager { * @param dpId The DPN identifier. * @param group The group to remove. */ - void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, Group group) + void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, Group group) throws ExecutionException, InterruptedException; /** @@ -182,7 +182,7 @@ public interface IMdsalApiManager { * @param dpId The DPN identifier. * @param groupId The group identifier of the group to remove. */ - void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, long groupId) + void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, long groupId) throws ExecutionException, InterruptedException; /** @@ -195,7 +195,7 @@ public interface IMdsalApiManager { * @return true if group exists and false otherwise */ @Deprecated - boolean groupExists(BigInteger dpId, long groupId); + boolean groupExists(Uint64 dpId, long groupId); /** * API to remove the flow on Data Plane Node synchronously. It internally waits for @@ -246,9 +246,9 @@ public interface IMdsalApiManager { @Deprecated void syncRemoveGroup(GroupEntity groupEntity); - void addBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, Bucket bucket) + void addBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, Bucket bucket) throws ExecutionException, InterruptedException; - void removeBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, long bucketId) + void removeBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, long bucketId) throws ExecutionException, InterruptedException; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchInPort.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchInPort.java index 2b3f07871..c0bff04b1 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchInPort.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchInPort.java @@ -7,21 +7,21 @@ */ package org.opendaylight.genius.mdsalutil.matches; -import java.math.BigInteger; import java.util.Map; import org.opendaylight.genius.mdsalutil.MatchInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yangtools.yang.common.Uint64; /** * In port match. */ public class MatchInPort extends MatchInfo { - private final BigInteger dpId; + private final Uint64 dpId; private final long portNumber; - public MatchInPort(BigInteger dpId, long portNumber) { + public MatchInPort(Uint64 dpId, long portNumber) { this.dpId = dpId; this.portNumber = portNumber; } @@ -37,7 +37,7 @@ public class MatchInPort extends MatchInfo { matchBuilder.setInPort(new NodeConnectorId(nodeConnectorId)); } - public BigInteger getDpId() { + public Uint64 getDpId() { return dpId; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchMetadata.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchMetadata.java index a2f7d441b..4b76c4908 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchMetadata.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchMetadata.java @@ -7,20 +7,20 @@ */ package org.opendaylight.genius.mdsalutil.matches; -import java.math.BigInteger; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Metadata match. */ public class MatchMetadata extends MatchInfoHelper { + // FIXME: just use WriteMetadata + private final Uint64 metadata; + private final Uint64 mask; - private final BigInteger metadata; - private final BigInteger mask; - - public MatchMetadata(BigInteger metadata, BigInteger mask) { + public MatchMetadata(Uint64 metadata, Uint64 mask) { this.metadata = metadata; this.mask = mask; } @@ -35,11 +35,11 @@ public class MatchMetadata extends MatchInfoHelper { builder.setMetadata(metadata).setMetadataMask(mask); } - public BigInteger getMetadata() { + public Uint64 getMetadata() { return metadata; } - public BigInteger getMask() { + public Uint64 getMask() { return mask; } diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchTunnelId.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchTunnelId.java index d67427f26..d5c536f61 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchTunnelId.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/matches/MatchTunnelId.java @@ -7,25 +7,25 @@ */ package org.opendaylight.genius.mdsalutil.matches; -import java.math.BigInteger; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Tunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Tunnel identifier match. */ public class MatchTunnelId extends MatchInfoHelper { - private final BigInteger tunnelId; - private final BigInteger tunnelMask; + private final Uint64 tunnelId; + private final Uint64 tunnelMask; - public MatchTunnelId(BigInteger tunnelId) { + public MatchTunnelId(Uint64 tunnelId) { this.tunnelId = tunnelId; this.tunnelMask = null; } - public MatchTunnelId(BigInteger tunnelId, BigInteger tunnelMask) { + public MatchTunnelId(Uint64 tunnelId, Uint64 tunnelMask) { this.tunnelId = tunnelId; this.tunnelMask = tunnelMask; } @@ -43,11 +43,11 @@ public class MatchTunnelId extends MatchInfoHelper { } } - public BigInteger getTunnelId() { + public Uint64 getTunnelId() { return tunnelId; } - public BigInteger getTunnelMask() { + public Uint64 getTunnelMask() { return tunnelMask; } 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 24d1d0621..3f3816102 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 @@ -15,6 +15,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -139,6 +140,8 @@ public class ResourceBatchingManager implements AutoCloseable { pendingModificationByResourceType.get(resoureType).add(iid); } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private void afterModification(String resoureType, InstanceIdentifier iid) { pendingModificationByResourceType.get(resoureType).remove(iid); } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionGroupTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionGroupTest.java index 83de58139..39814271a 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionGroupTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionGroupTest.java @@ -28,7 +28,7 @@ public class ActionGroupTest { Action action = actionInfo.buildAction(); assertTrue(action.getAction() instanceof GroupActionCase); GroupActionCase actionCase = (GroupActionCase) action.getAction(); - assertEquals(123L, (long) actionCase.getGroupAction().getGroupId()); + assertEquals(123L, actionCase.getGroupAction().getGroupId().toJava()); } @Test diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLearnTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLearnTest.java index 088d286de..3fa030ae0 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLearnTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLearnTest.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.mdsalutil.actions; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import java.math.BigInteger; import java.util.Arrays; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Action; @@ -27,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionLearnNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.NxLearn; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.learn.grouping.nx.learn.FlowMods; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test class for {@link ActionRegLoad}. @@ -35,7 +35,7 @@ public class ActionLearnTest { private static final int IDLE_TIMEOUT = 2; private static final int HARD_TIMEOUT = 3; private static final int PRIORITY = 4; - private static final BigInteger COOKIE = BigInteger.valueOf(5); + private static final Uint64 COOKIE = Uint64.valueOf(5); private static final int FLAGS = 6; private static final short TABLE_ID = (short) 7; private static final int FIN_IDLE_TIMEOUT = 8; diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpaTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpaTest.java index a2db6928c..d08b62684 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpaTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadIpToSpaTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertTrue; import ch.vorburger.xtendbeans.XtendBeanGenerator; import com.google.common.net.InetAddresses; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Action; @@ -21,7 +20,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yangtools.yang.common.Empty; - +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test for {@link ActionLoadIpToSpa}. @@ -48,7 +47,7 @@ public class ActionLoadIpToSpaTest { assertEquals(0, nxRegLoad.getDst().getStart().intValue()); assertEquals(31, nxRegLoad.getDst().getEnd().intValue()); assertEquals( - BigInteger.valueOf(InetAddresses.coerceToInteger(InetAddresses.forString(IP_ADDRESS)) & 0xffffffffL), + Uint64.valueOf(InetAddresses.coerceToInteger(InetAddresses.forString(IP_ADDRESS)) & 0xffffffffL), nxRegLoad.getValue()); } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToShaTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToShaTest.java index 17f6935f2..ffcb8b6db 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToShaTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionLoadMacToShaTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.ActionInfo; import org.opendaylight.genius.mdsalutil.NWUtil; @@ -22,6 +21,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test for {@link ActionLoadMacToSha}. @@ -47,7 +47,8 @@ public class ActionLoadMacToShaTest { assertEquals(Empty.getInstance(),dstNxArpShaCase.getNxArpSha()); assertEquals(0, nxRegLoad.getDst().getStart().intValue()); assertEquals(47, nxRegLoad.getDst().getEnd().intValue()); - assertEquals(BigInteger.valueOf(NWUtil.macToLong(new MacAddress(MAC_ADDRESS))), nxRegLoad.getValue()); + assertEquals(Uint64.valueOf(NWUtil.macToLong(new MacAddress(MAC_ADDRESS))), + nxRegLoad.getValue()); } @Test diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPortTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPortTest.java index 1959db19c..b4b1049c5 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPortTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadInPortTest.java @@ -12,22 +12,23 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.ActionInfo; +import org.opendaylight.genius.mdsalutil.tests.UintXtendBeanGenerator; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxOfInPortCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test for {@link ActionNxLoadInPort}. */ public class ActionNxLoadInPortTest { - private static final BigInteger VALUE = BigInteger.TEN; + private static final Uint64 VALUE = Uint64.valueOf(10).intern(); - private XtendBeanGenerator generator = new XtendBeanGenerator(); + private final XtendBeanGenerator generator = new UintXtendBeanGenerator(); @Test public void actionInfoTest() { @@ -52,6 +53,6 @@ public class ActionNxLoadInPortTest { public void generateAction() { ActionInfo actionInfo = new ActionNxLoadInPort(VALUE); assertEquals( - "new ActionNxLoadInPort(0, " + VALUE + "bi)", generator.getExpression(actionInfo)); + "new ActionNxLoadInPort(0, (u64)" + VALUE + ")", generator.getExpression(actionInfo)); } } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadataTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadataTest.java index a835f6911..7a62dd096 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadataTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionNxLoadMetadataTest.java @@ -12,24 +12,26 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.ActionInfo; +import org.opendaylight.genius.mdsalutil.tests.UintXtendBeanGenerator; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfMetadataCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test for {@link ActionNxLoadMetadata}. */ public class ActionNxLoadMetadataTest { - private static final BigInteger VALUE = BigInteger.TEN; + private static final Uint64 VALUE = Uint64.valueOf(10); private static final Integer START = 0; private static final Integer END = 23; - private XtendBeanGenerator generator = new XtendBeanGenerator(); + private final XtendBeanGenerator generator = new UintXtendBeanGenerator(); @Test public void actionInfoTest() { @@ -44,17 +46,16 @@ public class ActionNxLoadMetadataTest { NxRegLoad nxRegLoad = actionCase.getNxRegLoad(); assertTrue(nxRegLoad.getDst().getDstChoice() instanceof DstOfMetadataCase); DstOfMetadataCase dstOfMetadataCase = (DstOfMetadataCase) nxRegLoad.getDst().getDstChoice(); - assertEquals(Empty.getInstance(),dstOfMetadataCase.getOfMetadata()); - assertEquals(START, nxRegLoad.getDst().getStart()); - assertEquals(END, nxRegLoad.getDst().getEnd()); + assertEquals(Empty.getInstance(), dstOfMetadataCase.getOfMetadata()); + assertEquals(Uint16.valueOf(START), nxRegLoad.getDst().getStart()); + assertEquals(Uint16.valueOf(END), nxRegLoad.getDst().getEnd()); assertEquals(VALUE, nxRegLoad.getValue()); } @Test public void generateAction() { ActionInfo actionInfo = new ActionNxLoadMetadata(VALUE, START, END); - assertEquals( - "new ActionNxLoadMetadata(0, " + VALUE + "bi" + ", " + START + ", " + END + ")", generator - .getExpression(actionInfo)); + assertEquals("new ActionNxLoadMetadata(0, (u64)" + VALUE + ", " + START + ", " + END + ")", + generator.getExpression(actionInfo)); } } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoadTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoadTest.java index f1f1086de..ef0aa35ea 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoadTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegLoadTest.java @@ -19,6 +19,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxRegCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegLoadNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.NxRegLoad; +import org.opendaylight.yangtools.yang.common.Uint16; /** * Test class for {@link ActionRegLoad}. @@ -37,8 +38,8 @@ public class ActionRegLoadTest { assertTrue(nxRegLoad.getDst().getDstChoice() instanceof DstNxRegCase); DstNxRegCase dstNxRegCase = (DstNxRegCase) nxRegLoad.getDst().getDstChoice(); assertEquals(NxmNxReg6.class, dstNxRegCase.getNxReg()); - assertEquals((Integer) 0, nxRegLoad.getDst().getStart()); - assertEquals((Integer) 31, nxRegLoad.getDst().getEnd()); + assertEquals(Uint16.valueOf(0), nxRegLoad.getDst().getStart()); + assertEquals(Uint16.valueOf(31), nxRegLoad.getDst().getEnd()); assertEquals(100, nxRegLoad.getValue().longValue()); } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegMoveTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegMoveTest.java index 9690db970..26def67df 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegMoveTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/actions/ActionRegMoveTest.java @@ -18,6 +18,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstOfMplsLabelCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionRegMoveNodesNodeTableFlowApplyActionsCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.move.grouping.NxRegMove; +import org.opendaylight.yangtools.yang.common.Uint16; /** * Test for {@link ActionRegMove}. @@ -35,8 +36,8 @@ public class ActionRegMoveTest { = (NxActionRegMoveNodesNodeTableFlowApplyActionsCase) action.getAction(); NxRegMove nxRegMove = actionsCase.getNxRegMove(); assertTrue(nxRegMove.getDst().getDstChoice() instanceof DstOfMplsLabelCase); - assertEquals((Integer) 0, nxRegMove.getDst().getStart()); - assertEquals((Integer) 31, nxRegMove.getDst().getEnd()); + assertEquals(Uint16.valueOf(0), nxRegMove.getDst().getStart()); + assertEquals(Uint16.valueOf(31), nxRegMove.getDst().getEnd()); } @Test diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadataTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadataTest.java index 367f02708..300fd17e0 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadataTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/instructions/InstructionWriteMetadataTest.java @@ -11,12 +11,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.InstructionInfo; +import org.opendaylight.genius.mdsalutil.tests.UintXtendBeanGenerator; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.write.metadata._case.WriteMetadata; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test for {@link InstructionWriteMetadata}. @@ -24,26 +25,26 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru public class InstructionWriteMetadataTest { private static final InstructionWriteMetadata INSTRUCTION_INFO - = new InstructionWriteMetadata(BigInteger.ONE, BigInteger.TEN); + = new InstructionWriteMetadata(Uint64.ONE, Uint64.valueOf(10)); @Test public void newInstruction() { verifyInstructionInfo(INSTRUCTION_INFO); } - private void verifyInstructionInfo(InstructionInfo instructionInfo) { + private static void verifyInstructionInfo(InstructionInfo instructionInfo) { Instruction instruction = instructionInfo.buildInstruction(2); assertEquals(2, instruction.key().getOrder().intValue()); assertTrue(instruction.getInstruction() instanceof WriteMetadataCase); WriteMetadataCase writeMetadataCase = (WriteMetadataCase) instruction.getInstruction(); WriteMetadata writeMetadata = writeMetadataCase.getWriteMetadata(); - assertEquals(BigInteger.ONE, writeMetadata.getMetadata()); - assertEquals(BigInteger.TEN, writeMetadata.getMetadataMask()); + assertEquals(Uint64.ONE, writeMetadata.getMetadata()); + assertEquals(Uint64.valueOf(10), writeMetadata.getMetadataMask()); } @Test public void xtendBeanGenerator() { - XtendBeanGenerator generator = new XtendBeanGenerator(); - assertEquals("new InstructionWriteMetadata(1bi, 10bi)", generator.getExpression(INSTRUCTION_INFO)); + XtendBeanGenerator generator = new UintXtendBeanGenerator(); + assertEquals("new InstructionWriteMetadata((u64)1, (u64)10)", generator.getExpression(INSTRUCTION_INFO)); } } 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 ef571ccce..9f14f2a27 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 @@ -20,7 +20,6 @@ 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 java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -40,6 +39,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.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -190,23 +190,23 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { return ImmutableList.copyOf(flows.values()); } - private synchronized void deleteFlow(BigInteger dpId, String flowId, short tableId) { + private synchronized void deleteFlow(Uint64 dpId, String flowId, short tableId) { flows.remove(new InternalFlowKey(dpId, flowId, tableId)); } - private synchronized void storeGroup(BigInteger dpnId, Group group) { - groups.put(new InternalGroupKey(dpnId, group.key().getGroupId().getValue()), group); + private synchronized void storeGroup(Uint64 dpnId, Group group) { + groups.put(new InternalGroupKey(dpnId, group.key().getGroupId().getValue().toJava()), group); } - private synchronized void deleteGroup(BigInteger dpnId, long groupId) { + private synchronized void deleteGroup(Uint64 dpnId, long groupId) { groups.remove(new InternalGroupKey(dpnId, groupId)); } - private synchronized void storeBucket(BigInteger dpnId, long groupId, Bucket bucket) { - buckets.put(new InternalBucketKey(dpnId, groupId, bucket.getBucketId().getValue()), bucket); + private synchronized void storeBucket(Uint64 dpnId, long groupId, Bucket bucket) { + buckets.put(new InternalBucketKey(dpnId, groupId, bucket.getBucketId().getValue().toJava()), bucket); } - private synchronized void deleteBucket(BigInteger dpnId, long groupId, long bucketId) { + private synchronized void deleteBucket(Uint64 dpnId, long groupId, long bucketId) { buckets.remove(new InternalBucketKey(dpnId, groupId, bucketId)); } @@ -216,13 +216,13 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } @Override - public void addFlow(TypedWriteTransaction tx, BigInteger dpId, Flow flow) { + public void addFlow(TypedWriteTransaction tx, Uint64 dpId, Flow flow) { throw new UnsupportedOperationException("addFlow(..., BigInteger, Flow) isn't supported yet"); } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, Flow flow) { - removeFlow(tx, dpId, flow.key(), flow.getTableId()); + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, Flow flow) { + removeFlow(tx, dpId, flow.key(), flow.getTableId().toJava()); } @Override @@ -231,13 +231,13 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, FlowKey flowKey, + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, FlowKey flowKey, short tableId) { deleteFlow(dpId, flowKey.getId().getValue(), tableId); } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, String flowId, + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, String flowId, short tableId) { deleteFlow(dpId, flowId, tableId); } @@ -248,28 +248,28 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } @Override - public void addGroup(TypedWriteTransaction tx, BigInteger dpId, Group group) { + public void addGroup(TypedWriteTransaction tx, Uint64 dpId, Group group) { storeGroup(dpId, group); } @Override - public void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, Group group) { - deleteGroup(dpId, group.getGroupId().getValue()); + public void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, Group group) { + deleteGroup(dpId, group.getGroupId().getValue().toJava()); } @Override - public void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, long groupId) { + public void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, long groupId) { deleteGroup(dpId, groupId); } @Override - public void addBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, + public void addBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, Bucket bucket) { storeBucket(dpId, groupId, bucket); } @Override - public void removeBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, + public void removeBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, long bucketId) { deleteBucket(dpId, groupId, bucketId); } @@ -281,18 +281,18 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } @Override - public CheckedFuture installFlow(BigInteger dpId, + public CheckedFuture installFlow(Uint64 dpId, FlowEntity flowEntity) { // TODO should dpId be considered here? how? Copy clone FlowEntity and change its dpId? return installFlow(flowEntity); } private static final class InternalFlowKey { - private final BigInteger dpnId; + private final Uint64 dpnId; private final String flowId; private final short tableId; - private InternalFlowKey(BigInteger dpnId, String flowId, short tableId) { + private InternalFlowKey(Uint64 dpnId, String flowId, short tableId) { this.dpnId = dpnId; this.flowId = flowId; this.tableId = tableId; @@ -317,10 +317,10 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } private static final class InternalGroupKey { - private final BigInteger dpnId; + private final Uint64 dpnId; private final long groupId; - private InternalGroupKey(BigInteger dpnId, long groupId) { + private InternalGroupKey(Uint64 dpnId, long groupId) { this.dpnId = dpnId; this.groupId = groupId; } @@ -344,11 +344,11 @@ public abstract class TestIMdsalApiManager implements IMdsalApiManager { } private static final class InternalBucketKey { - private final BigInteger dpnId; + private final Uint64 dpnId; private final long groupId; private final long bucketId; - private InternalBucketKey(BigInteger dpnId, long groupId, long bucketId) { + private InternalBucketKey(Uint64 dpnId, long groupId, long bucketId) { this.dpnId = dpnId; this.groupId = groupId; this.bucketId = bucketId; diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/tests/TestIMdsalApiManagerTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/tests/TestIMdsalApiManagerTest.java index 9d42b2b3b..18ee51a96 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/tests/TestIMdsalApiManagerTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/interfaces/testutils/tests/TestIMdsalApiManagerTest.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.mdsalutil.interfaces.testutils.tests; import com.google.common.collect.ImmutableList; import com.google.common.testing.EqualsTester; -import java.math.BigInteger; import org.junit.Test; import org.opendaylight.genius.mdsalutil.FlowEntity; import org.opendaylight.genius.mdsalutil.FlowEntityBuilder; @@ -17,6 +16,7 @@ import org.opendaylight.genius.mdsalutil.instructions.InstructionClearActions; import org.opendaylight.genius.mdsalutil.instructions.InstructionGotoTable; import org.opendaylight.genius.mdsalutil.interfaces.testutils.TestIMdsalApiManager; import org.opendaylight.genius.mdsalutil.matches.MatchArpSpa; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Unit test for {@link TestIMdsalApiManager}. @@ -42,11 +42,11 @@ public class TestIMdsalApiManagerTest { mdsalApiManager.assertFlowsInAnyOrder(ImmutableList.of(getNewFlow2(), getNewFlow1())); } - private FlowEntity getNewFlow1() { + private static FlowEntity getNewFlow1() { return new FlowEntityBuilder() - .setDpnId(BigInteger.valueOf(123)) + .setDpnId(Uint64.valueOf(123)) .setTableId((short) 1) - .setCookie(BigInteger.valueOf(456789)) + .setCookie(Uint64.valueOf(456789)) .setFlowId("ThisIsFlow1") .setHardTimeOut(456) .setIdleTimeOut(789) @@ -59,11 +59,11 @@ public class TestIMdsalApiManagerTest { .build(); } - private FlowEntity getNewFlow2() { + private static FlowEntity getNewFlow2() { return new FlowEntityBuilder() - .setDpnId(BigInteger.valueOf(321)) + .setDpnId(Uint64.valueOf(321)) .setTableId((short) 2) - .setCookie(BigInteger.valueOf(987654)) + .setCookie(Uint64.valueOf(987654)) .setFlowId("ThisIsFlow2") .setHardTimeOut(654) .setIdleTimeOut(987) diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/matches/MatchInPortTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/matches/MatchInPortTest.java index ee657e5a1..e59b9ae38 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/matches/MatchInPortTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/matches/MatchInPortTest.java @@ -8,8 +8,8 @@ package org.opendaylight.genius.mdsalutil.matches; import com.google.common.testing.EqualsTester; -import java.math.BigInteger; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.Uint64; public class MatchInPortTest { @@ -22,11 +22,11 @@ public class MatchInPortTest { } private MatchInPort newMatchInPort1() { - return new MatchInPort(BigInteger.ONE, 123); + return new MatchInPort(Uint64.ONE, 123); } private MatchInPort newMatchInPort2() { - return new MatchInPort(BigInteger.TEN, 456); + return new MatchInPort(Uint64.valueOf(10), 456); } } diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoBuilderTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoBuilderTest.java index d0073d137..d10cf7980 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoBuilderTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoBuilderTest.java @@ -10,7 +10,6 @@ package org.opendaylight.genius.mdsalutil.tests; import static org.junit.Assert.assertEquals; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import java.util.Arrays; import org.junit.Ignore; import org.junit.Test; @@ -19,6 +18,7 @@ import org.opendaylight.genius.mdsalutil.actions.ActionDrop; import org.opendaylight.genius.mdsalutil.actions.ActionGroup; import org.opendaylight.genius.mdsalutil.actions.ActionLearn; import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Test to check that we no longer need a builder for @@ -32,7 +32,7 @@ import org.opendaylight.genius.mdsalutil.actions.ActionSetFieldTunnelId; */ public class ActionInfoBuilderTest { - XtendBeanGenerator generator = new XtendBeanGenerator(); + XtendBeanGenerator generator = new UintXtendBeanGenerator(); @Test public void noActionValues() { @@ -58,20 +58,20 @@ public class ActionInfoBuilderTest { @Test public void set_field_tunnel_idActionWithBigActionValues() { - ActionInfo actionInfo = new ActionSetFieldTunnelId(BigInteger.valueOf(123)); - assertEquals("new ActionSetFieldTunnelId(0, 123bi)", generator.getExpression(actionInfo)); + ActionInfo actionInfo = new ActionSetFieldTunnelId(Uint64.valueOf(123)); + assertEquals("new ActionSetFieldTunnelId(0, (u64)123)", generator.getExpression(actionInfo)); } @Test public void set_field_tunnel_idActionWithBigActionValuesWithActionKey() { - ActionInfo actionInfo = new ActionSetFieldTunnelId(69, BigInteger.valueOf(123)); - assertEquals("new ActionSetFieldTunnelId(69, 123bi)", generator.getExpression(actionInfo)); + ActionInfo actionInfo = new ActionSetFieldTunnelId(69, Uint64.valueOf(123)); + assertEquals("new ActionSetFieldTunnelId(69, (u64)123)", generator.getExpression(actionInfo)); } @Test @Ignore("Needs to be rewritten") public void learnActionValuesMatrix() { - ActionInfo actionInfo = new ActionLearn(1, 2, 3, BigInteger.valueOf(4), 5, (short) 6, 7, 8, + ActionInfo actionInfo = new ActionLearn(1, 2, 3, Uint64.valueOf(4), 5, (short) 6, 7, 8, Arrays.asList( new ActionLearn.CopyFromValue(2, 3, 4), new ActionLearn.OutputToPort(4, 5))); diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoImmutableTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoImmutableTest.java index 635384d1b..a1e10dfe1 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoImmutableTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/ActionInfoImmutableTest.java @@ -9,7 +9,6 @@ package org.opendaylight.genius.mdsalutil.tests; import static org.junit.Assert.assertEquals; -import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import org.junit.Test; @@ -18,18 +17,19 @@ import org.opendaylight.genius.mdsalutil.FlowEntity; import org.opendaylight.genius.mdsalutil.FlowEntityBuilder; import org.opendaylight.genius.mdsalutil.actions.ActionNxConntrack; import org.opendaylight.genius.mdsalutil.instructions.InstructionApplyActions; +import org.opendaylight.yangtools.yang.common.Uint64; public class ActionInfoImmutableTest { @Test public void actionInfoActionKeyDoesNotMagicallyChangeOnFlowEntityGetFlowBuilder() { FlowEntityBuilder flowEntityBuilder = new FlowEntityBuilder() - .setDpnId(BigInteger.valueOf(123L)) + .setDpnId(Uint64.valueOf(123L)) .setTableId((short) 1) .setPriority(2) .setFlowName("TEST-NAME") .setFlowId("TEST-ID") - .setCookie(BigInteger.valueOf(110100480L)); + .setCookie(Uint64.valueOf(110100480L)); ActionInfo actionInfo = new ActionNxConntrack(27, 1, 0, 0, (short) 255); List actionInfos = new ArrayList<>(); actionInfos.add(actionInfo); @@ -49,8 +49,8 @@ public class ActionInfoImmutableTest { @Test public void testDefaultCookie() { - assertEquals(new BigInteger("0110000", 16), new FlowEntityBuilder() - .setDpnId(BigInteger.valueOf(123L)) + assertEquals(Uint64.valueOf("0110000", 16), new FlowEntityBuilder() + .setDpnId(Uint64.valueOf(123L)) .setTableId((short) 1) .setPriority(2) .setFlowName("TEST-NAME") diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/FlowEntityAssertBeansTest.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/FlowEntityAssertBeansTest.java index 5d11d99b4..e06981853 100644 --- a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/FlowEntityAssertBeansTest.java +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/FlowEntityAssertBeansTest.java @@ -11,12 +11,12 @@ import static com.google.common.truth.Truth.assertThat; import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; import ch.vorburger.xtendbeans.XtendBeanGenerator; -import java.math.BigInteger; import org.junit.ComparisonFailure; import org.junit.Test; import org.opendaylight.genius.mdsalutil.FlowEntity; import org.opendaylight.genius.mdsalutil.FlowEntityBuilder; import org.opendaylight.genius.mdsalutil.matches.MatchIpv4Source; +import org.opendaylight.yangtools.yang.common.Uint64; /** * Tests non-regression of FlowEntity related assertions. @@ -28,10 +28,10 @@ public class FlowEntityAssertBeansTest { // FLOW1 & FLOW2 differ by a minor variance in their MatchIpv4Source (NB .1 vs .2) private static final FlowEntity FLOW1 = new FlowEntityBuilder() .addMatchInfoList(new MatchIpv4Source("10.0.0.1", "32")).setFlowId("A").setTableId((short) 1) - .setDpnId(BigInteger.ONE).build(); + .setDpnId(Uint64.ONE).build(); private static final FlowEntity FLOW2 = new FlowEntityBuilder() .addMatchInfoList(new MatchIpv4Source("10.0.0.2", "32")).setFlowId("A").setTableId((short) 1) - .setDpnId(BigInteger.ONE).build(); + .setDpnId(Uint64.ONE).build(); @Test(expected = ComparisonFailure.class) public void testFlowEntityAssertEqualBeans() { @@ -40,10 +40,10 @@ public class FlowEntityAssertBeansTest { @Test public void testXtendBeanGenerator() { - XtendBeanGenerator generator = new XtendBeanGenerator(); + XtendBeanGenerator generator = new UintXtendBeanGenerator(); assertThat(generator.getExpression(FLOW1)).isEqualTo("(new FlowEntityBuilder => [\n" - + " cookie = 1114112bi\n" - + " dpnId = 1bi\n" + + " cookie = (u64)1114112\n" + + " dpnId = (u64)1\n" + " flowId = \"A\"\n" + " hardTimeOut = 0\n" + " idleTimeOut = 0\n" diff --git a/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/UintXtendBeanGenerator.java b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/UintXtendBeanGenerator.java new file mode 100644 index 000000000..33e0f8779 --- /dev/null +++ b/mdsalutil/mdsalutil-api/src/test/java/org/opendaylight/genius/mdsalutil/tests/UintXtendBeanGenerator.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.mdsalutil.tests; + +import ch.vorburger.xtendbeans.XtendBeanGenerator; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint32; +import org.opendaylight.yangtools.yang.common.Uint64; +import org.opendaylight.yangtools.yang.common.Uint8; + +public class UintXtendBeanGenerator extends XtendBeanGenerator { + @Override + protected CharSequence stringify(Object object) { + if (object instanceof Uint8) { + return "(u8)" + object; + } else if (object instanceof Uint16) { + return "(u16)" + object; + } else if (object instanceof Uint32) { + return "(u32)" + object; + } else if (object instanceof Uint64) { + return "(u64)" + object; + } else { + return super.stringify(object); + } + } +} diff --git a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilTest.java b/mdsalutil/mdsalutil-impl/MdSalUtilTest.java similarity index 96% rename from mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilTest.java rename to mdsalutil/mdsalutil-impl/MdSalUtilTest.java index a6f111981..17384b4ff 100644 --- a/mdsalutil/mdsalutil-impl/src/test/java/org/opendaylight/genius/mdsalutil/internal/MdSalUtilTest.java +++ b/mdsalutil/mdsalutil-impl/MdSalUtilTest.java @@ -46,6 +46,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; @RunWith(MockitoJUnitRunner.class) public class MdSalUtilTest extends AbstractConcurrentDataBrokerTest { @@ -149,27 +150,27 @@ public class MdSalUtilTest extends AbstractConcurrentDataBrokerTest { // Methods to test the install Flow and Group public FlowEntity createFlowEntity(String dpnId, String tableId) { - BigInteger dpId; + Uint64 dpId; final int serviceId = 0; List listActionInfo = new ArrayList<>(); listActionInfo.add(new ActionPuntToController()); - dpId = new BigInteger(dpnId.split(":")[1]); + dpId = Uint64.valueOf(dpnId.split(":")[1]); List mkMatches = new ArrayList<>(); final BigInteger cookie = new BigInteger("9000000", 16); short shortTableId = Short.parseShort(tableId); - mkMatches.add(new MatchTunnelId(new BigInteger("0000000000000000", 16))); + mkMatches.add(new MatchTunnelId(Uint64.ZERO)); List mkInstructions = new ArrayList<>(); mkInstructions.add(new InstructionWriteActions(listActionInfo)); FlowEntity terminatingServiceTableFlowEntity = MDSALUtil.buildFlowEntity(dpId, shortTableId, getFlowRef(shortTableId, serviceId), 5, "Terminating Service Flow Entry: " + serviceId, 0, 0, - cookie.add(BigInteger.valueOf(serviceId)), null, null); + Uint64.valueOf(cookie.add(BigInteger.valueOf(serviceId))), null, null); return terminatingServiceTableFlowEntity; } @@ -189,7 +190,7 @@ public class MdSalUtilTest extends AbstractConcurrentDataBrokerTest { listBucketInfo.add(new BucketInfo(listActionInfo)); String groupName = "Test Group"; - BigInteger dpnId = new BigInteger(nodeid.split(":")[1]); + Uint64 dpnId = Uint64.valueOf(nodeid.split(":")[1]); long id = getUniqueValue(nodeid, inport); return MDSALUtil.buildGroupEntity(dpnId, id, groupName, GroupTypes.GroupIndirect, listBucketInfo); 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 a29a387c3..9f1110529 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 @@ -19,7 +19,7 @@ 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 java.math.BigInteger; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; @@ -68,6 +68,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -142,7 +143,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager tx -> writeFlowEntityInternal(flowEntity, tx))); } - private FluentFuture installFlowInternal(BigInteger dpId, Flow flow) { + private FluentFuture installFlowInternal(Uint64 dpId, Flow flow) { return txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> writeFlowInternal(dpId, flow, tx)); } @@ -156,10 +157,11 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager tx.put(flowInstanceId, flowbld.build(), true); } - private static void writeFlowInternal(BigInteger dpId, Flow flow, + private static void writeFlowInternal(Uint64 dpId, Flow flow, TypedWriteTransaction tx) { FlowKey flowKey = new FlowKey(new FlowId(flow.getId())); - InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, flow.getTableId(), flowKey); + InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, + flow.getTableId().toJava(), flowKey); tx.put(flowInstanceId, flow, true); } @@ -186,13 +188,13 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } private void deleteFlowEntityInternal(FlowEntity flowEntity, TypedWriteTransaction tx) { - BigInteger dpId = flowEntity.getDpnId(); + Uint64 dpId = flowEntity.getDpnId(); short tableId = flowEntity.getTableId(); FlowKey flowKey = new FlowKey(new FlowId(flowEntity.getFlowId())); deleteFlow(dpId, tableId, flowKey, tx); } - private void deleteFlow(BigInteger dpId, short tableId, FlowKey flowKey, WriteTransaction tx) { + private void deleteFlow(Uint64 dpId, short tableId, FlowKey flowKey, WriteTransaction tx) { if (flowExists(dpId, tableId, flowKey)) { InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, tableId, flowKey); tx.delete(LogicalDatastoreType.CONFIGURATION, flowInstanceId); @@ -201,7 +203,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } } - private void deleteFlow(BigInteger dpId, short tableId, FlowKey flowKey, + private void deleteFlow(Uint64 dpId, short tableId, FlowKey flowKey, TypedWriteTransaction tx) { if (flowExists(dpId, tableId, flowKey)) { InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, tableId, flowKey); @@ -211,24 +213,24 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } } - private FluentFuture removeFlowNewInternal(BigInteger dpnId, Flow flowEntity) { + private FluentFuture removeFlowNewInternal(Uint64 dpnId, Flow flowEntity) { LOG.debug("Remove flow {}", flowEntity); return txRunner.callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> { FlowKey flowKey = new FlowKey(flowEntity.getId()); - short tableId = flowEntity.getTableId(); + short tableId = flowEntity.getTableId().toJava(); deleteFlow(dpnId, tableId, flowKey, tx); }); } @VisibleForTesting - FluentFuture removeGroupInternal(BigInteger dpnId, long groupId) { + FluentFuture removeGroupInternal(Uint64 dpnId, long groupId) { return addCallBackForInstallGroupAndReturn(txRunner .callWithNewWriteOnlyTransactionAndSubmit(Datastore.CONFIGURATION, tx -> removeGroupInternal(dpnId, groupId, tx))); } - private void removeGroupInternal(BigInteger dpnId, long groupId, + private void removeGroupInternal(Uint64 dpnId, long groupId, TypedWriteTransaction tx) { Node nodeDpn = buildDpnNode(dpnId); if (groupExists(nodeDpn, groupId)) { @@ -239,19 +241,19 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } } - private static Node buildDpnNode(BigInteger dpnId) { + private static Node buildDpnNode(Uint64 dpnId) { NodeId nodeId = new NodeId("openflow:" + dpnId); Node nodeDpn = new NodeBuilder().setId(nodeId).withKey(new NodeKey(nodeId)).build(); return nodeDpn; } - private static String getGroupKey(long groupId, BigInteger dpId) { + private static String getGroupKey(long groupId, Uint64 dpId) { String synchronizingKey = "group-key-" + groupId + dpId; return synchronizingKey.intern(); } - private static String getFlowKey(BigInteger dpId, short tableId, FlowKey flowKey) { + private static String getFlowKey(Uint64 dpId, short tableId, FlowKey flowKey) { String synchronizingKey = "flow-key-" + dpId + tableId + flowKey; return synchronizingKey.intern(); } @@ -263,7 +265,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager Flow flow = flowEntity.getFlowBuilder().build(); String flowId = flowEntity.getFlowId(); short tableId = flowEntity.getTableId(); - BigInteger dpId = flowEntity.getDpnId(); + Uint64 dpId = flowEntity.getDpnId(); FlowKey flowKey = new FlowKey(new FlowId(flowId)); InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, tableId, flowKey); @@ -285,7 +287,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager LOG.trace("syncSetUpGroup for groupEntity {} ", groupEntity); } Group group = groupEntity.getGroupBuilder().build(); - BigInteger dpId = groupEntity.getDpnId(); + Uint64 dpId = groupEntity.getDpnId(); long groupId = groupEntity.getGroupId(); InstanceIdentifier groupInstanceId = buildGroupInstanceIdentifier(groupId, buildDpnNode(dpId)); @@ -310,12 +312,12 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void remove(InstanceIdentifier identifier, Group del) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, del); } - private void executeNotifyTaskIfRequired(BigInteger dpId, Group group) { - GroupInfoKey groupKey = new GroupInfoKey(dpId, group.getGroupId().getValue()); + private void executeNotifyTaskIfRequired(Uint64 dpId, Group group) { + GroupInfoKey groupKey = new GroupInfoKey(dpId, group.getGroupId().getValue().toJava()); Runnable notifyTask = groupMap.remove(groupKey); if (notifyTask == null) { return; @@ -325,13 +327,13 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void update(InstanceIdentifier identifier, Group original, Group update) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, update); } @Override protected void add(InstanceIdentifier identifier, Group add) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); executeNotifyTaskIfRequired(dpId, add); } @@ -355,12 +357,13 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void remove(InstanceIdentifier identifier, Flow del) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); notifyTaskIfRequired(dpId, del); } - private void notifyTaskIfRequired(BigInteger dpId, Flow flow) { - FlowInfoKey flowKey = new FlowInfoKey(dpId, flow.getTableId(), flow.getMatch(), flow.getId().getValue()); + private void notifyTaskIfRequired(Uint64 dpId, Flow flow) { + FlowInfoKey flowKey = new FlowInfoKey(dpId, flow.getTableId().toJava(), + flow.getMatch(), flow.getId().getValue()); Runnable notifyTask = flowMap.remove(flowKey); if (notifyTask == null) { return; @@ -374,7 +377,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void add(InstanceIdentifier identifier, Flow add) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); notifyTaskIfRequired(dpId, add); } @@ -399,7 +402,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void remove(InstanceIdentifier identifier, Flow del) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); flowLog.trace("FlowId {} deleted from Table {} on DPN {}", del.getId().getValue(), del.getTableId(), dpId); } @@ -410,7 +413,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager @Override protected void add(InstanceIdentifier identifier, Flow add) { - BigInteger dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); + Uint64 dpId = getDpnFromString(identifier.firstKeyOf(Node.class).getId().getValue()); flowLog.debug("FlowId {} added to Table {} on DPN {}", add.getId().getValue(), add.getTableId(), dpId); } @@ -427,9 +430,11 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } } - private static BigInteger getDpnFromString(String dpnString) { + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") + private static Uint64 getDpnFromString(String dpnString) { String[] split = dpnString.split(":"); - return new BigInteger(split[1]); + return Uint64.valueOf(split[1]); } @Override @@ -439,19 +444,19 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public CheckedFuture installFlow(BigInteger dpId, Flow flowEntity) { + public CheckedFuture installFlow(Uint64 dpId, Flow flowEntity) { return Futures.makeChecked(installFlowInternal(dpId, flowEntity), t -> new TransactionCommitFailedException("installFlow failed", t)); } @Override - public CheckedFuture installFlow(BigInteger dpId, FlowEntity flowEntity) { + public CheckedFuture installFlow(Uint64 dpId, FlowEntity flowEntity) { return Futures.makeChecked(installFlowInternal(dpId, flowEntity.getFlowBuilder().build()), t -> new TransactionCommitFailedException("installFlow failed", t)); } @Override - public ListenableFuture removeFlow(BigInteger dpId, short tableId, FlowId flowId) { + public ListenableFuture removeFlow(Uint64 dpId, short tableId, FlowId flowId) { ListenableFuture future = txRunner.callWithNewWriteOnlyTransactionAndSubmit( tx -> deleteFlow(dpId, tableId, new FlowKey(flowId), tx)); @@ -481,7 +486,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public CheckedFuture removeFlow(BigInteger dpId, Flow flowEntity) { + public CheckedFuture removeFlow(Uint64 dpId, Flow flowEntity) { return Futures.makeChecked(removeFlowNewInternal(dpId, flowEntity), t -> new TransactionCommitFailedException("removeFlow failed", t)); } @@ -499,19 +504,19 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, Flow flow) + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, Flow flow) throws ExecutionException, InterruptedException { - removeFlow(tx, dpId, flow.key(), flow.getTableId()); + removeFlow(tx, dpId, flow.key(), flow.getTableId().toJava()); } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, String flowId, short tableId) + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, String flowId, short tableId) throws ExecutionException, InterruptedException { removeFlow(tx, dpId, new FlowKey(new FlowId(flowId)), tableId); } @Override - public void removeFlow(TypedReadWriteTransaction tx, BigInteger dpId, FlowKey flowKey, + public void removeFlow(TypedReadWriteTransaction tx, Uint64 dpId, FlowKey flowKey, short tableId) throws ExecutionException, InterruptedException { InstanceIdentifier flowInstanceIdentifier = buildFlowInstanceIdentifier(dpId, tableId, flowKey); if (tx.read(flowInstanceIdentifier).get().isPresent()) { @@ -531,13 +536,13 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, Group group) + public void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, Group group) throws ExecutionException, InterruptedException { - removeGroup(tx, dpId, group.getGroupId().getValue()); + removeGroup(tx, dpId, group.getGroupId().getValue().toJava()); } @Override - public void removeGroup(TypedReadWriteTransaction tx, BigInteger dpId, long groupId) + public void removeGroup(TypedReadWriteTransaction tx, Uint64 dpId, long groupId) throws ExecutionException, InterruptedException { Node nodeDpn = buildDpnNode(dpId); InstanceIdentifier groupInstanceId = buildGroupInstanceIdentifier(groupId, nodeDpn); @@ -584,8 +589,9 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public void addFlow(TypedWriteTransaction tx, BigInteger dpId, Flow flow) { - InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, flow.getTableId(), flow.key()); + public void addFlow(TypedWriteTransaction tx, Uint64 dpId, Flow flow) { + InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, + flow.getTableId().toJava(), flow.key()); tx.put(flowInstanceId, flow, CREATE_MISSING_PARENTS); } @@ -595,26 +601,26 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public void addGroup(TypedWriteTransaction tx, BigInteger dpId, Group group) { + public void addGroup(TypedWriteTransaction tx, Uint64 dpId, Group group) { Node nodeDpn = buildDpnNode(dpId); - long groupId = group.getGroupId().getValue(); + long groupId = group.getGroupId().getValue().toJava(); InstanceIdentifier groupInstanceId = buildGroupInstanceIdentifier(groupId, nodeDpn); tx.put(groupInstanceId, group, CREATE_MISSING_PARENTS); } @Override - public void addBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, Bucket bucket) + public void addBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, Bucket bucket) throws ExecutionException, InterruptedException { Node nodeDpn = buildDpnNode(dpId); if (groupExists(tx, nodeDpn, groupId)) { InstanceIdentifier bucketInstanceId = buildBucketInstanceIdentifier(groupId, - bucket.getBucketId().getValue(), nodeDpn); + bucket.getBucketId().getValue().toJava(), nodeDpn); tx.put(bucketInstanceId, bucket); } } @Override - public void removeBucket(TypedReadWriteTransaction tx, BigInteger dpId, long groupId, long bucketId) + public void removeBucket(TypedReadWriteTransaction tx, Uint64 dpId, long groupId, long bucketId) throws ExecutionException, InterruptedException { Node nodeDpn = buildDpnNode(dpId); if (groupExists(tx, nodeDpn, groupId)) { @@ -626,7 +632,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager } @Override - public boolean groupExists(BigInteger dpId, long groupId) { + public boolean groupExists(Uint64 dpId, long groupId) { return groupExists(buildDpnNode(dpId), groupId); } @@ -652,7 +658,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager return groupInstanceId; } - private boolean flowExists(BigInteger dpId, short tableId, FlowKey flowKey) { + private boolean flowExists(Uint64 dpId, short tableId, FlowKey flowKey) { InstanceIdentifier flowInstanceId = buildFlowInstanceIdentifier(dpId, tableId, flowKey); try { Optional flowOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, @@ -664,7 +670,7 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager return false; } - private static InstanceIdentifier buildFlowInstanceIdentifier(BigInteger dpnId, short tableId, + private static InstanceIdentifier buildFlowInstanceIdentifier(Uint64 dpnId, short tableId, FlowKey flowKey) { InstanceIdentifier flowInstanceId = InstanceIdentifier.builder(Nodes.class) .child(Node.class, buildDpnNode(dpnId).key()).augmentation(FlowCapableNode.class) 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 e6022c305..bccf7a745 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 @@ -11,6 +11,7 @@ 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.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; @@ -105,6 +106,8 @@ public class DataBrokerFailuresImpl extends ForwardingDataBroker implements Data this.submitAndThrowException = true; } + @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD", + justification = "https://github.com/spotbugs/spotbugs/issues/811") private FluentFuture handleCommit(Supplier> commitMethod) { if (howManyFailingSubmits.decrementAndGet() == -1) { submitException = null; diff --git a/mdsalutil/pom.xml b/mdsalutil/pom.xml index a487efdbc..bb338318e 100644 --- a/mdsalutil/pom.xml +++ b/mdsalutil/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/networkutils/networkutils/pom.xml b/networkutils/networkutils/pom.xml index 34d94d3b2..1ea4b3756 100644 --- a/networkutils/networkutils/pom.xml +++ b/networkutils/networkutils/pom.xml @@ -24,6 +24,16 @@ and is available at http://www.eclipse.org/legal/epl-v10.html build failure. Please do not modify this unless you have a good reason. --> ODL :: genius :: ${project.artifactId} + + + + com.google.inject + guice + 4.2.2 + + + + org.apache.aries.blueprint 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 6562f35be..307207c70 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 @@ -5,18 +5,18 @@ * 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.networkutils; import com.google.common.base.Optional; -import java.math.BigInteger; import java.util.concurrent.ExecutionException; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool; +import org.opendaylight.yangtools.yang.common.Uint64; public interface VniUtils { - BigInteger getVNI(String vniKey) throws ExecutionException, InterruptedException; + @Nullable Uint64 getVNI(String vniKey) throws ExecutionException, InterruptedException; void releaseVNI(String vniKey) throws ExecutionException, InterruptedException; 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 9c53ae367..3554e4130 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 @@ -13,7 +13,6 @@ 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; @@ -41,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.networkutils.config.rev181129.NetworkConfig; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,7 +79,7 @@ public class RDUtilsImpl implements RDUtils { } long baseAsNum = Long.parseLong(configureRDSplit[0]); long baseValue = Long.parseLong(configureRDSplit[1]); - baseAsNum = baseAsNum + ((baseValue + idValue) / NwConstants.RD_MAX_VALUE_FIELD) ; + baseAsNum = baseAsNum + (baseValue + idValue) / NwConstants.RD_MAX_VALUE_FIELD ; baseValue = (baseValue + idValue) % NwConstants.RD_MAX_VALUE_FIELD ; return String.valueOf(baseAsNum) + ":" + String.valueOf(baseValue); @@ -92,7 +92,7 @@ public class RDUtilsImpl implements RDUtils { Future> result = idManagerService.allocateId(getIdInput); RpcResult rpcResult = result.get(); if (rpcResult.isSuccessful()) { - String rd = convertIdValuetoRD(rpcResult.getResult().getIdValue()); + String rd = convertIdValuetoRD(rpcResult.getResult().getIdValue().toJava()); return rd; } return null; @@ -109,6 +109,7 @@ public class RDUtilsImpl implements RDUtils { } } + @Override public Optional getRDPool() throws ReadFailedException { return SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, buildIdPoolInstanceIdentifier(NwConstants.ODL_RD_POOL_NAME)); @@ -116,7 +117,8 @@ public class RDUtilsImpl implements RDUtils { private void validateAndCreateRDPool() throws ReadFailedException { long lowLimit = 0L; - long highLimit = networkConfig.getOpendaylightRdCount(); + Uint32 highConfig = networkConfig.getOpendaylightRdCount(); + long highLimit = highConfig == null ? 0 : highConfig.toJava(); if (highLimit == 0L) { highLimit = NwConstants.RD_DEFAULT_COUNT; } @@ -125,8 +127,8 @@ public class RDUtilsImpl implements RDUtils { buildIdPoolInstanceIdentifier(NwConstants.ODL_RD_POOL_NAME)); if (existingIdPool.isPresent()) { IdPool odlRDPool = existingIdPool.get(); - long currentStartLimit = odlRDPool.getAvailableIdsHolder().getStart(); - long currentEndLimit = odlRDPool.getAvailableIdsHolder().getEnd(); + long currentStartLimit = odlRDPool.getAvailableIdsHolder().getStart().toJava(); + long currentEndLimit = odlRDPool.getAvailableIdsHolder().getEnd().toJava(); if (lowLimit == currentStartLimit && highLimit == currentEndLimit) { LOG.debug("validateAndCreateRDPool : OpenDaylight RD pool already exists " @@ -190,4 +192,4 @@ public class RDUtilsImpl implements RDUtils { InstanceIdentifier.builder(IdPools.class).child(IdPool.class, new IdPoolKey(poolName)); return idPoolBuilder.build(); } -} \ No newline at end of file +} 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 7a4229eb6..e460d85a8 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 @@ -9,12 +9,10 @@ package org.opendaylight.genius.networkutils.impl; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; -import java.math.BigInteger; 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; @@ -42,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406. import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.networkutils.config.rev181129.NetworkConfig; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,15 +64,13 @@ public class VniUtilsImpl implements VniUtils { } @Override - public BigInteger getVNI(String vniKey) throws ExecutionException, InterruptedException { + public Uint64 getVNI(String vniKey) throws ExecutionException, InterruptedException { AllocateIdInput getIdInput = new AllocateIdInputBuilder().setPoolName(NwConstants.ODL_VNI_POOL_NAME) .setIdKey(vniKey).build(); Future> result = idManagerService.allocateId(getIdInput); RpcResult rpcResult = result.get(); - if (rpcResult.isSuccessful()) { - return BigInteger.valueOf(rpcResult.getResult().getIdValue()); - } - return BigInteger.valueOf(-1); + + return rpcResult.isSuccessful() ? Uint64.valueOf(rpcResult.getResult().getIdValue()) : null; } @Override @@ -87,6 +84,7 @@ public class VniUtilsImpl implements VniUtils { } } + @Override public Optional getVxlanVniPool() throws ReadFailedException { return SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, buildIdPoolInstanceIdentifier(NwConstants.ODL_VNI_POOL_NAME)); @@ -115,8 +113,8 @@ public class VniUtilsImpl implements VniUtils { buildIdPoolInstanceIdentifier(NwConstants.ODL_VNI_POOL_NAME)); if (existingIdPool.isPresent()) { IdPool odlVniIdPool = existingIdPool.get(); - long currentStartLimit = odlVniIdPool.getAvailableIdsHolder().getStart(); - long currentEndLimit = odlVniIdPool.getAvailableIdsHolder().getEnd(); + long currentStartLimit = odlVniIdPool.getAvailableIdsHolder().getStart().toJava(); + long currentEndLimit = odlVniIdPool.getAvailableIdsHolder().getEnd().toJava(); if (lowLimit == currentStartLimit && highLimit == currentEndLimit) { LOG.debug("validateAndCreateVxlanVniPool : OpenDaylight VXLAN VNI range pool already exists " @@ -180,4 +178,4 @@ public class VniUtilsImpl implements VniUtils { InstanceIdentifier.builder(IdPools.class).child(IdPool.class, new IdPoolKey(poolName)); return idPoolBuilder.build(); } -} \ No newline at end of file +} diff --git a/networkutils/pom.xml b/networkutils/pom.xml index 0aa641912..9872a4928 100644 --- a/networkutils/pom.xml +++ b/networkutils/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 diff --git a/pom.xml b/pom.xml index b28380ce0..e11d6b8f6 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL --> org.opendaylight.odlparent odlparent-lite - 5.0.2 + 6.0.0 -- 2.36.6