X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgpmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fbgpmanager%2FBgpUtil.java;h=06648f2758fc3298caf534b22ac2ebca506ebf3d;hb=cf1ea9172b94fc17e45391b62bf4ca24ac5c5fe0;hp=6676ece127f328594fc5bbc986c37b971fe78f03;hpb=acfb15f3359067aaef6f256f0664063379e0793b;p=netvirt.git diff --git a/bgpmanager/impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpUtil.java b/bgpmanager/impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpUtil.java index 6676ece127..06648f2758 100755 --- a/bgpmanager/impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpUtil.java +++ b/bgpmanager/impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpUtil.java @@ -7,26 +7,30 @@ */ package org.opendaylight.netvirt.bgpmanager; -import com.google.common.base.Optional; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutionException; import java.util.concurrent.LinkedBlockingQueue; import javax.annotation.PostConstruct; 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.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.mdsalutil.NwConstants; import org.opendaylight.genius.utils.batching.ActionableResource; import org.opendaylight.genius.utils.batching.ActionableResourceImpl; import org.opendaylight.genius.utils.batching.DefaultBatchHandler; import org.opendaylight.genius.utils.batching.ResourceBatchingManager; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netvirt.bgpmanager.thrift.gen.af_afi; import org.opendaylight.netvirt.bgpmanager.thrift.gen.af_safi; import org.opendaylight.netvirt.bgpmanager.thrift.gen.encap_type; @@ -196,8 +200,13 @@ public class BgpUtil implements AutoCloseable { public VpnInstanceOpDataEntry getVpnInstanceOpData(String rd) { InstanceIdentifier id = getVpnInstanceOpDataIdentifier(rd); - Optional vpnInstanceOpData = MDSALUtil.read(dataBroker, - LogicalDatastoreType.OPERATIONAL, id); + Optional vpnInstanceOpData = Optional.empty(); + try { + vpnInstanceOpData = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("Exception while reading VpnInstanceOpDataEntry DS for the Vpn Rd {}", rd, e); + } if (vpnInstanceOpData.isPresent()) { return vpnInstanceOpData.get(); } @@ -211,8 +220,13 @@ public class BgpUtil implements AutoCloseable { private String getElanNamefromRd(String rd) { InstanceIdentifier id = getEvpnRdToNetworkIdentifier(rd); - Optional evpnRdToNetworkOpData = MDSALUtil.read(dataBroker, - LogicalDatastoreType.CONFIGURATION, id); + Optional evpnRdToNetworkOpData = Optional.empty(); + try { + evpnRdToNetworkOpData = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("Exception while reading EvpnRdToNetwork DS for the Vpn Rd {}", rd, e); + } if (evpnRdToNetworkOpData.isPresent()) { return evpnRdToNetworkOpData.get().getNetworkId(); } @@ -265,8 +279,15 @@ public class BgpUtil implements AutoCloseable { } public String getVpnNameFromRd(String rd) { - VpnInstanceOpDataEntry vpnInstanceOpData = getVpnInstanceOpData(rd); - return vpnInstanceOpData != null ? vpnInstanceOpData.getVpnInstanceName() : null; + final Map rdtoVpnMap = new HashMap<>(); + if (rdtoVpnMap.get(rd) != null) { + return rdtoVpnMap.get(rd); + } else { + VpnInstanceOpDataEntry vpnInstanceOpData = getVpnInstanceOpData(rd); + String vpnName = vpnInstanceOpData != null ? vpnInstanceOpData.getVpnInstanceName() : null; + rdtoVpnMap.put(rd, vpnName); + return vpnName; + } } /** get the vrf with the RouterDistinguisher pass in param. @@ -278,7 +299,13 @@ public class BgpUtil implements AutoCloseable { KeyedInstanceIdentifier id = InstanceIdentifier.create(Bgp.class) .child(VrfsContainer.class) .child(Vrfs.class, new VrfsKey(rd)); - Optional vrfsFromDs = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, id); + Optional vrfsFromDs = Optional.empty(); + try { + vrfsFromDs = SingleTransactionDataBroker.syncReadOptional(dataBroker, LogicalDatastoreType.CONFIGURATION, + id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("Exception while reading BGP VRF table for the Vpn Rd {}", rd, e); + } if (vrfsFromDs.isPresent()) { vrfs = vrfsFromDs.get(); } @@ -332,8 +359,13 @@ public class BgpUtil implements AutoCloseable { public BfdConfig getBfdConfig() { InstanceIdentifier id = InstanceIdentifier.builder(BfdConfig.class).build(); - Optional bfdConfigOptional = MDSALUtil.read(dataBroker, - LogicalDatastoreType.CONFIGURATION, id); + Optional bfdConfigOptional = Optional.empty(); + try { + bfdConfigOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("Exception while reading BfdConfig", e); + } if (bfdConfigOptional.isPresent()) { return bfdConfigOptional.get(); } @@ -343,8 +375,13 @@ public class BgpUtil implements AutoCloseable { public DcgwTepList getDcgwTepConfig() { InstanceIdentifier id = InstanceIdentifier.builder(Bgp.class).child(DcgwTepList.class).build(); - Optional dcgwTepListOptional = MDSALUtil.read(dataBroker, - LogicalDatastoreType.CONFIGURATION, id); + Optional dcgwTepListOptional = Optional.empty(); + try { + dcgwTepListOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("getDcgwTepConfig: Exception while reading DcgwTepList", e); + } if (dcgwTepListOptional.isPresent()) { return dcgwTepListOptional.get(); } @@ -356,8 +393,13 @@ public class BgpUtil implements AutoCloseable { InstanceIdentifier.builder(Bgp.class) .child(DcgwTepList.class) .child(DcgwTep.class, new DcgwTepKey(dcgwIp)).build(); - Optional tepListOptional = MDSALUtil.read(dataBroker, - LogicalDatastoreType.CONFIGURATION, id); + Optional tepListOptional = Optional.empty(); + try { + tepListOptional = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("Exception while reading DcgwTep for the IP {}", dcgwIp, e); + } if (tepListOptional.isPresent()) { return tepListOptional.get().getTepIps(); } @@ -369,7 +411,7 @@ public class BgpUtil implements AutoCloseable { InstanceIdentifier iid = InstanceIdentifier.builder(DpnEndpoints.class).build(); Optional dpnEndpoints = MDSALUtil.read(LogicalDatastoreType.CONFIGURATION, iid, dataBroker); if (dpnEndpoints.isPresent()) { - return dpnEndpoints.get().getDPNTEPsInfo(); + return new ArrayList(dpnEndpoints.get().getDPNTEPsInfo().values()); } else { return new ArrayList<>(); }