@Override public String apply(VpnInstance vpnInstance) { //return vpnInstance.getVpnInstanceName(); return vpnInstance.getIpv4Family().getRouteDistinguisher(); } };
public synchronized void deleteSubnetRouteFibEntryFromDS(String rd, String prefix, String vpnName){ fibManager.removeFibEntry(dataBroker, rd, prefix, null); List<VpnInstance> vpnsToImportRoute = getVpnsImportingMyRoute(vpnName); for (VpnInstance vpnInstance : vpnsToImportRoute) { String importingRd = vpnInstance.getIpv4Family().getRouteDistinguisher(); LOG.info("Deleting imported subnet route rd {} prefix {} from vpn {}", rd, prefix, vpnInstance.getVpnInstanceName()); fibManager.removeFibEntry(dataBroker, importingRd, prefix, null); } }
return false; if (!Objects.equals(_routeDistinguisher, other.getRouteDistinguisher())) { return false;
public Ipv4FamilyBuilder(Ipv4Family base) { this._applyLabel = base.getApplyLabel(); this._exportRoutePolicy = base.getExportRoutePolicy(); this._importRibs = base.getImportRibs(); this._importRoutePolicy = base.getImportRoutePolicy(); this._l3vpnTtlMode = base.getL3vpnTtlMode(); this._l3vpnVrfPipe = base.getL3vpnVrfPipe(); this._prefixLimit = base.getPrefixLimit(); this._routeDistinguisher = base.getRouteDistinguisher(); this._routingTableLimit = base.getRoutingTableLimit(); this._tunnelPolicy = base.getTunnelPolicy(); this._vpnTargets = base.getVpnTargets(); this._trafficStatistics = base.isTrafficStatistics(); this._vpnFrr = base.isVpnFrr(); if (base instanceof Ipv4FamilyImpl) { Ipv4FamilyImpl impl = (Ipv4FamilyImpl) base; if (!impl.augmentation.isEmpty()) { this.augmentation = new HashMap<>(impl.augmentation); } } else if (base instanceof AugmentationHolder) { @SuppressWarnings("unchecked") AugmentationHolder<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.vpn.instance.Ipv4Family> casted =(AugmentationHolder<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.vpn.instance.Ipv4Family>) base; if (!casted.augmentations().isEmpty()) { this.augmentation = new HashMap<>(casted.augmentations()); } } }
@Override protected void remove(InstanceIdentifier<VpnInstance> identifier, VpnInstance del) { LOG.trace("Remove VPN event key: {}, value: {}", identifier, del); final String vpnName = del.getVpnInstanceName(); final String rd = del.getIpv4Family().getRouteDistinguisher(); final long vpnId = VpnUtil.getVpnId(dataBroker, vpnName); Optional<VpnInstanceOpDataEntry> vpnOpValue = null; //TODO(vpnteam): Entire code would need refactoring to listen only on the parent object - VPNInstance try { if ((rd != null) && (!rd.isEmpty())) { vpnOpValue = VpnUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, VpnUtil.getVpnInstanceOpDataIdentifier(rd)); } else { vpnOpValue = VpnUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, VpnUtil.getVpnInstanceOpDataIdentifier(vpnName)); } } catch (Exception e) { LOG.error("Exception when attempting to retrieve VpnInstanceOpDataEntry for VPN {}. ", vpnName, e); return; } if (vpnOpValue == null || !vpnOpValue.isPresent()) { LOG.error("Unable to retrieve VpnInstanceOpDataEntry for VPN {}. ", vpnName); return; } DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance(); dataStoreCoordinator.enqueueJob("VPN-" + vpnName, new DeleteVpnInstanceWorker(idManager, dataBroker, del)); }
void handleVpnsExportingRoutes(String vpnName, String vpnRd) { List<VpnInstance> vpnsToExportRoute = getVpnsExportingMyRoute(vpnName); for (VpnInstance vpn : vpnsToExportRoute) { String rd = vpn.getIpv4Family().getRouteDistinguisher(); List<VrfEntry> vrfEntries = VpnUtil.getAllVrfEntries(dataBroker, vpn.getIpv4Family().getRouteDistinguisher()); WriteTransaction writeConfigTxn = dataBroker.newWriteOnlyTransaction(); if (vrfEntries != null) { LOG.info("No vrf entries to import from vpn {} with rd {}", vpn.getVpnInstanceName(), vpn.getIpv4Family().getRouteDistinguisher());
String vpnRd = vpn.getIpv4Family().getRouteDistinguisher(); if (vpnRd != null) { LOG.info("Removing Exported route with rd {} prefix {} from VPN {}", vpnRd, nextHop.getIpAddress(), vpn.getVpnInstanceName());
@Override public List<ListenableFuture<Void>> call() throws Exception { final String vpnName = vpnInstance.getVpnInstanceName(); final String rd = vpnInstance.getIpv4Family().getRouteDistinguisher(); final long vpnId = VpnUtil.getVpnId(broker, vpnName); WriteTransaction writeTxn = broker.newWriteOnlyTransaction();
String rd = del.getIpv4Family().getRouteDistinguisher();
for (VpnInstance vpn : optionalVpns.get().getVpnInstance()) { if (vpn.getIpv4Family().getRouteDistinguisher() != null) { vpns.add(vpn); L3vpnInstancesBuilder l3vpn = new L3vpnInstancesBuilder(); List<String> rd = Arrays.asList(vpnInstance.getIpv4Family().getRouteDistinguisher().split(",")); List<VpnTarget> vpnTargetList = vpnInstance.getIpv4Family().getVpnTargets().getVpnTarget();
String vpnRd = vpn.getIpv4Family().getRouteDistinguisher(); if (vpnRd != null) { LOG.debug("Exporting route with rd {} prefix {} nexthop {} label {} to VPN {}", vpnRd, nextHop.getIpAddress(), nextHopIp, label, vpn);
for (VpnInstance vpnInstance : vpnsToImportRoute) { LOG.info("Exporting subnet route rd {} prefix {} nexthop {} label {} to vpn {}", rd, prefix, nextHop, label, vpnInstance.getVpnInstanceName()); String importingRd = vpnInstance.getIpv4Family().getRouteDistinguisher(); InstanceIdentifier<VrfTables> importingVrfTableId = InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(importingRd)).build(); VrfTables importingVrfTable = new VrfTablesBuilder().setRouteDistinguisher(importingRd).setVrfEntry(importingVrfEntryList).build();