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.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.vpntargets.VpnTargetBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.vpntargets.VpnTargetKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VpnInstanceListener extends AsyncDataTreeChangeListenerBase<VpnInstance, VpnInstanceListener> {
private static final Logger LOG = LoggerFactory.getLogger(VpnInstanceListener.class);
private static final String LOGGING_PREFIX_ADD = "VPN-ADD:";
+ private static final String LOGGING_PREFIX_UPDATE = "VPN-UPDATE:";
private static final String LOGGING_PREFIX_DELETE = "VPN-REMOVE:";
private final DataBroker dataBroker;
private final ManagedNewTransactionRunner txRunner;
@Override
protected void remove(InstanceIdentifier<VpnInstance> identifier, VpnInstance del) {
- LOG.trace("{} remove: VPN event key: {}, value: {}", LOGGING_PREFIX_DELETE, identifier, del);
+ LOG.trace("{} : VPN event key: {}, value: {}", LOGGING_PREFIX_DELETE, identifier, del);
final String vpnName = del.getVpnInstanceName();
Optional<VpnInstanceOpDataEntry> vpnOpValue;
- String primaryRd = VpnUtil.getPrimaryRd(del);
+ String primaryRd = vpnUtil.getVpnRd(vpnName);
+ if (primaryRd == null) {
+ LOG.error("{}, failed to remove VPN: primaryRd is null for vpn {}", LOGGING_PREFIX_DELETE, vpnName);
+ return;
+ }
//TODO(vpnteam): Entire code would need refactoring to listen only on the parent object - VPNInstance
try {
vpnOpValue = SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.OPERATIONAL,
VpnUtil.getVpnInstanceOpDataIdentifier(primaryRd));
} catch (ReadFailedException e) {
- LOG.error("{} remove: Exception when attempting to retrieve VpnInstanceOpDataEntry for VPN {}. ",
+ LOG.error("{}, failed to remove VPN: Exception while retrieving VpnInstanceOpDataEntry for VPN {}. ",
LOGGING_PREFIX_DELETE, vpnName, e);
return;
}
if (!vpnOpValue.isPresent()) {
- LOG.error("{} remove: Unable to retrieve VpnInstanceOpDataEntry for VPN {}. ", LOGGING_PREFIX_DELETE,
- vpnName);
+ LOG.error("{}, failed to remove VPN: Unable to retrieve VpnInstanceOpDataEntry for VPN {}. ",
+ LOGGING_PREFIX_DELETE, vpnName);
return;
} else {
jobCoordinator.enqueueJob("VPN-" + vpnName, () ->
VpnAfConfig config = value.getIpv4Family();
String vpnInstanceName = value.getVpnInstanceName();
- long vpnId = vpnUtil.getUniqueId(VpnConstants.VPN_IDPOOL_NAME, vpnInstanceName);
- if (vpnId == 0) {
+ Uint32 vpnId = vpnUtil.getUniqueId(VpnConstants.VPN_IDPOOL_NAME, vpnInstanceName);
+ if (vpnId.longValue() == 0) {
LOG.error("{} addVpnInstance: Unable to fetch label from Id Manager. Bailing out of adding operational"
+ " data for Vpn Instance {}", LOGGING_PREFIX_ADD, value.getVpnInstanceName());
return;
// install flow
List<MatchInfo> mkMatches = new ArrayList<>();
- mkMatches.add(new MatchTunnelId(BigInteger.valueOf(vpnInstance.getL3vni())));
+ mkMatches.add(new MatchTunnelId(Uint64.valueOf(vpnInstance.getL3vni())));
List<InstructionInfo> instructions =
Arrays.asList(new InstructionWriteMetadata(MetaDataUtil.getVpnIdMetadata(vpnInstanceOpDataEntry
- .getVpnId()), MetaDataUtil.METADATA_MASK_VRFID),
+ .getVpnId().toJava()), MetaDataUtil.METADATA_MASK_VRFID),
new InstructionGotoTable(NwConstants.L3_GW_MAC_TABLE));
- for (BigInteger dpnId: NWUtil.getOperativeDPNs(dataBroker)) {
+ for (Uint64 dpnId: NWUtil.getOperativeDPNs(dataBroker)) {
String flowRef = getFibFlowRef(dpnId, NwConstants.L3VNI_EXTERNAL_TUNNEL_DEMUX_TABLE,
vpnName, VpnConstants.DEFAULT_FLOW_PRIORITY);
FlowEntity flowEntity = MDSALUtil.buildFlowEntity(dpnId,
}
}
+ @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
+ justification = "https://github.com/spotbugs/spotbugs/issues/811")
private List<String> getDcGatewayTunnelInterfaceNameList() {
List<String> tunnelInterfaceNameList = new ArrayList<>();
try {
return tunnelInterfaceNameList;
}
- private String getFibFlowRef(BigInteger dpnId, short tableId, String vpnName, int priority) {
+ @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
+ justification = "https://github.com/spotbugs/spotbugs/issues/811")
+ private String getFibFlowRef(Uint64 dpnId, short tableId, String vpnName, int priority) {
return VpnConstants.FLOWID_PREFIX + dpnId + NwConstants.FLOWID_SEPARATOR + tableId
+ NwConstants.FLOWID_SEPARATOR + vpnName + NwConstants.FLOWID_SEPARATOR + priority;
}