import org.opendaylight.netvirt.vpnmanager.api.VpnExtraRouteHelper;
import org.opendaylight.netvirt.vpnmanager.api.VpnHelper;
import org.opendaylight.netvirt.vpnmanager.iplearn.model.MacEntry;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnAfConfig;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceKey;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceBuilder;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.subnets.SubnetsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.napt.switches.RouterToNaptSwitch;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.napt.switches.RouterToNaptSwitchKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnAfConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnInstances;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkAttributes.NetworkType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkMaps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NeutronVpnPortipPortData;
}
static VpnInterfaceOpDataEntry getVpnInterfaceOpDataEntry(String intfName, String vpnName, AdjacenciesOp aug,
- Uint64 dpnId, long lportTag,
- String gwMac) {
+ Uint64 dpnId, long lportTag,
+ String gwMac, String gwIp) {
return new VpnInterfaceOpDataEntryBuilder().withKey(new VpnInterfaceOpDataEntryKey(intfName, vpnName))
- .setDpnId(dpnId).addAugmentation(AdjacenciesOp.class, aug)
- .setLportTag(lportTag).setGatewayMacAddress(gwMac).build();
+ .setDpnId(dpnId).addAugmentation(AdjacenciesOp.class, aug)
+ .setLportTag(lportTag).setGatewayMacAddress(gwMac).setGatewayIpAddress(gwIp).build();
}
Optional<VpnInterfaceOpDataEntry> getVpnInterfaceOpDataEntry(String vpnInterfaceName, String vpnName) {
}
@NonNull
+ @SuppressWarnings("checkstyle:IllegalCatch")
List<VpnInstanceOpDataEntry> getAllVpnInstanceOpData() {
- InstanceIdentifier<VpnInstanceOpData> id = InstanceIdentifier.builder(VpnInstanceOpData.class).build();
- Optional<VpnInstanceOpData> vpnInstanceOpDataOptional = read(LogicalDatastoreType.OPERATIONAL, id);
- return
- vpnInstanceOpDataOptional.isPresent() && vpnInstanceOpDataOptional.get().getVpnInstanceOpDataEntry() != null
- ? vpnInstanceOpDataOptional.get().getVpnInstanceOpDataEntry()
- : emptyList();
+ try {
+ InstanceIdentifier<VpnInstanceOpData> id = InstanceIdentifier.builder(VpnInstanceOpData.class).build();
+ Optional<VpnInstanceOpData> vpnInstanceOpDataOptional = read(LogicalDatastoreType.OPERATIONAL, id);
+ return
+ vpnInstanceOpDataOptional.isPresent() && vpnInstanceOpDataOptional.get()
+ .getVpnInstanceOpDataEntry() != null ? vpnInstanceOpDataOptional.get()
+ .getVpnInstanceOpDataEntry() : emptyList();
+ } catch (Exception e) {
+ LOG.error("getAllVpnInstanceOpData: Could not retrieve all vpn instance op data subtree...", e);
+ return emptyList();
+ }
}
@NonNull
} else {
LOG.trace("Removing used rds {} from available rds {} vpnid {} . prefix is {} , vpname- {}, dpnId- {}",
usedRds, availableRds, vpnId, prefix, vpnName, dpnId);
- availableRds.removeAll(usedRds);
+ if (!usedRds.isEmpty()) {
+ availableRds.removeAll(usedRds);
+ }
if (availableRds.isEmpty()) {
LOG.error("No rd available from VpnInstance to allocate for prefix {}", prefix);
return java.util.Optional.empty();
public boolean isVpnPendingDelete(String rd) {
VpnInstanceOpDataEntry vpnInstanceOpData = getVpnInstanceOpData(rd);
boolean isVpnPendingDelete = false;
- if (vpnInstanceOpData == null
- || vpnInstanceOpData.getVpnState() == VpnInstanceOpDataEntry.VpnState.PendingDelete) {
+ if (vpnInstanceOpData == null) {
+ LOG.error("isVpnPendingDelete: unable to read vpn instance op data for vpn with rd {}", rd);
+ isVpnPendingDelete = true;
+ }
+ else if (vpnInstanceOpData.getVpnState() == VpnInstanceOpDataEntry.VpnState.PendingDelete) {
isVpnPendingDelete = true;
}
return isVpnPendingDelete;
}
+ @SuppressWarnings("checkstyle:IllegalCatch")
public List<VpnInstanceOpDataEntry> getVpnsImportingMyRoute(final String vpnName) {
List<VpnInstanceOpDataEntry> vpnsToImportRoute = new ArrayList<>();
+ final VpnInstanceOpDataEntry vpnInstanceOpDataEntry;
final String vpnRd = getVpnRd(vpnName);
if (vpnRd == null) {
LOG.error("getVpnsImportingMyRoute: vpn {} not present in config DS.", vpnName);
return vpnsToImportRoute;
}
- final VpnInstanceOpDataEntry vpnInstanceOpDataEntry = getVpnInstanceOpData(vpnRd);
- if (vpnInstanceOpDataEntry == null) {
- LOG.error("getVpnsImportingMyRoute: Could not retrieve vpn instance op data for {}"
- + " to check for vpns importing the routes", vpnName);
+ if (vpnRd.equals(vpnName)) {
+ LOG.error("getVpnsImportingMyRoute: Internal vpn {} do not export/import routes", vpnName);
+ return vpnsToImportRoute;
+ }
+ try {
+ final VpnInstanceOpDataEntry opDataEntry = getVpnInstanceOpData(vpnRd);
+ if (opDataEntry == null) {
+ LOG.error("getVpnsImportingMyRoute: Could not retrieve vpn instance op data for vpn {} rd {}"
+ + " to check for vpns importing the routes", vpnName, vpnRd);
+ return vpnsToImportRoute;
+ }
+ vpnInstanceOpDataEntry = opDataEntry;
+ } catch (Exception e) {
+ LOG.error("getVpnsImportingMyRoute: DSException when retrieving vpn instance op data for vpn {} rd {}"
+ + " to check for vpns importing the routes", vpnName, vpnRd);
return vpnsToImportRoute;
}
Predicate<VpnInstanceOpDataEntry> excludeVpn = input -> {
}
}
- Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTarget>
- getRtListForVpn(String vpnName) {
- Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets
+ Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config
+ .vpntargets.VpnTarget> getRtListForVpn(String vpnName) {
+ Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.vpntargets
.VpnTarget> rtList = new HashSet<>();
InstanceIdentifier<VpnInstance> vpnInstanceId = InstanceIdentifier.builder(VpnInstances.class)
.child(VpnInstance.class, new VpnInstanceKey(vpnName)).build();
Optional<VpnInstance> vpnInstanceOptional = read(LogicalDatastoreType.CONFIGURATION, vpnInstanceId);
if (vpnInstanceOptional.isPresent()) {
- org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.VpnTargets
+ org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.VpnTargets
vpnTargets = vpnInstanceOptional.get().getIpv4Family().getVpnTargets();
if (vpnTargets != null && vpnTargets.getVpnTarget() != null) {
rtList.addAll(vpnTargets.getVpnTarget());
.child(RouteTarget.class, new RouteTargetKey(rt, rtType)).build();
}
- Set<RouteTarget> getRouteTargetSet(Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815
- .vpn.af.config.vpntargets.VpnTarget> vpnTargets) {
+ Set<RouteTarget> getRouteTargetSet(Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn
+ .rev200204.vpn.af.config.vpntargets.VpnTarget> vpnTargets) {
Set<RouteTarget> routeTargetSet = new HashSet<>();
- for (org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.vpntargets
.VpnTarget rt : vpnTargets) {
String rtValue = rt.getVrfRTValue();
switch (rt.getVrfRTType()) {