Convert BgpUtil to non-static singleton 73/66073/2
authorTom Pantelis <tompantelis@gmail.com>
Wed, 29 Nov 2017 19:30:29 +0000 (14:30 -0500)
committerSam Hague <shague@redhat.com>
Tue, 5 Dec 2017 01:28:19 +0000 (01:28 +0000)
Change-Id: I70a61df997b1d2d66e56b55389596976c8a4444a
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpConfigurationManager.java
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpManager.java
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/BgpUtil.java
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/EvpnRdNetworkListener.java
vpnservice/bgpmanager/bgpmanager-impl/src/main/java/org/opendaylight/netvirt/bgpmanager/FibDSWriter.java
vpnservice/bgpmanager/bgpmanager-impl/src/test/java/org/opendaylight/netvirt/bgpmanager/test/BgpManagerTest.java

index 66a0d0a0805d35ccdfcad53bb2f570b147d32c54..d878989f12f58335f11ef1c6423b539c96733313 100755 (executable)
@@ -55,7 +55,6 @@ import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFaile
 import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase;
 import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
 import org.opendaylight.genius.mdsalutil.NwConstants;
-import org.opendaylight.genius.utils.batching.DefaultBatchHandler;
 import org.opendaylight.genius.utils.clustering.EntityOwnershipUtils;
 import org.opendaylight.mdsal.eos.binding.api.Entity;
 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipCandidateRegistration;
@@ -160,8 +159,6 @@ public class BgpConfigurationManager {
     private static final String DEL_WARN = "Config store updated; undo with Add if needed.";
     private static final String UPD_WARN = "Update operation not supported; Config store updated;"
             + " restore with another Update if needed.";
-    private static final int DEFAULT_BATCH_SIZE = 1000;
-    private static final int DEFAULT_BATCH_INTERVAL = 500;
 
     private static final Class<?>[] REACTORS = {
         ConfigServerReactor.class, AsIdReactor.class,
@@ -177,6 +174,7 @@ public class BgpConfigurationManager {
     private final FibDSWriter fibDSWriter;
     private final IVpnLinkService vpnLinkService;
     private final BundleContext bundleContext;
+    private final BgpUtil bgpUtil;
     private volatile Bgp config;
     private final BgpRouter bgpRouter;
     private final BgpSyncHandle bgpSyncHandle = new BgpSyncHandle();
@@ -232,12 +230,14 @@ public class BgpConfigurationManager {
             final EntityOwnershipService entityOwnershipService,
             final FibDSWriter fibDSWriter,
             final IVpnLinkService vpnLinkSrvce,
-            final BundleContext bundleContext)
+            final BundleContext bundleContext,
+            final BgpUtil bgpUtil)
             throws InterruptedException, ExecutionException, TimeoutException {
         this.dataBroker = dataBroker;
         this.fibDSWriter = fibDSWriter;
         this.vpnLinkService = vpnLinkSrvce;
         this.bundleContext = bundleContext;
+        this.bgpUtil = bgpUtil;
         String updatePort = getProperty(UPDATE_PORT, DEF_UPORT);
         hostStartup = getProperty(CONFIG_HOST, DEF_CHOST);
         portStartup = getProperty(CONFIG_PORT, DEF_CPORT);
@@ -256,12 +256,6 @@ public class BgpConfigurationManager {
         LOG.info("BGP Configuration manager initialized");
         initer.countDown();
 
-        Integer batchSize = Integer.getInteger("batch.size", DEFAULT_BATCH_SIZE);
-
-        Integer batchInterval = Integer.getInteger("batch.wait.time", DEFAULT_BATCH_INTERVAL);
-        BgpUtil.registerWithBatchManager(
-                new DefaultBatchHandler(dataBroker, LogicalDatastoreType.CONFIGURATION, batchSize, batchInterval));
-
         GlobalEventExecutor.INSTANCE.execute(() -> {
             final WaitingServiceTracker<IBgpManager> tracker = WaitingServiceTracker.create(
                     IBgpManager.class, bundleContext);
@@ -1762,7 +1756,7 @@ public class BgpConfigurationManager {
         boolean needUpdate = addToRt2TepMap(rd, tepIp, mac, l2vni);
         if (needUpdate) {
             LOG.info("Adding tepIp {} with RD {} to ELan DS", tepIp, rd);
-            BgpUtil.addTepToElanInstance(dataBroker, rd, tepIp);
+            bgpUtil.addTepToElanInstance(rd, tepIp);
         } else {
             LOG.debug("Skipping the Elan update for RT2 from tep {} rd {}", tepIp, rd);
         }
@@ -1772,7 +1766,7 @@ public class BgpConfigurationManager {
         boolean needUpdate = deleteFromRt2TepMap(rd, tepIp, mac);
         if (needUpdate) {
             LOG.info("Deleting tepIp {} with RD {} to ELan DS", tepIp, rd);
-            BgpUtil.deleteTepFromElanInstance(dataBroker, rd, tepIp);
+            bgpUtil.deleteTepFromElanInstance(rd, tepIp);
         } else {
             LOG.debug("Skipping the Elan update for RT2 withdraw from tep {} rd {}", tepIp, rd);
         }
@@ -1797,7 +1791,7 @@ public class BgpConfigurationManager {
         VrfEntry.EncapType encapType = VrfEntry.EncapType.Mplsgre;
         if (protocolType.equals(protocol_type.PROTOCOL_EVPN)) {
             encapType = VrfEntry.EncapType.Vxlan;
-            VpnInstanceOpDataEntry vpnInstanceOpDataEntry = BgpUtil.getVpnInstanceOpData(dataBroker, rd);
+            VpnInstanceOpDataEntry vpnInstanceOpDataEntry = bgpUtil.getVpnInstanceOpData(rd);
             if (vpnInstanceOpDataEntry != null) {
                 if (vpnInstanceOpDataEntry.getType() == VpnInstanceOpDataEntry.Type.L2) {
                     LOG.info("Got RT2 route for RD {} l3label {} l2label {} from tep {} with mac {} remote RD {}",
@@ -1851,7 +1845,7 @@ public class BgpConfigurationManager {
             fibDSWriter.addFibEntryToDS(rd, macaddress, prefix + "/" + plen, nextHopList, encapType, label, l3vni,
                                         routermac, RouteOrigin.BGP);
             LOG.info("ADD: Added Fib entry rd {} prefix {} nexthop {} label {}", rd, prefix, nextHop, label);
-            String vpnName = BgpUtil.getVpnNameFromRd(dataBroker, rd);
+            String vpnName = bgpUtil.getVpnNameFromRd(rd);
             if (vpnName != null) {
                 vpnLinkService.leakRouteIfNeeded(vpnName, prefix, nextHopList, label, RouteOrigin.BGP,
                                                  NwConstants.ADD_FLOW);
@@ -1864,7 +1858,7 @@ public class BgpConfigurationManager {
         long vni = 0L;
         boolean macupdate = false;
         if (protocolType.equals(protocol_type.PROTOCOL_EVPN)) {
-            VpnInstanceOpDataEntry vpnInstanceOpDataEntry = BgpUtil.getVpnInstanceOpData(dataBroker, rd);
+            VpnInstanceOpDataEntry vpnInstanceOpDataEntry = bgpUtil.getVpnInstanceOpData(rd);
             if (vpnInstanceOpDataEntry != null) {
                 vni = vpnInstanceOpDataEntry.getL3vni();
                 if (vpnInstanceOpDataEntry.getType() == VpnInstanceOpDataEntry.Type.L2) {
@@ -1894,7 +1888,7 @@ public class BgpConfigurationManager {
     public void onUpdateWithdrawRoute(String rd, String prefix, int plen, String nexthop) {
         LOG.debug("Route del ** {} ** {}/{} ", rd, prefix, plen);
         fibDSWriter.removeOrUpdateFibEntryFromDS(rd, prefix + "/" + plen, nexthop);
-        String vpnName = BgpUtil.getVpnNameFromRd(dataBroker, rd);
+        String vpnName = bgpUtil.getVpnNameFromRd(rd);
         if (vpnName != null) {
             vpnLinkService.leakRouteIfNeeded(vpnName, prefix, null /*nextHopList*/, 0 /*INVALID_LABEL*/,
                                              RouteOrigin.BGP, NwConstants.DEL_FLOW);
@@ -2293,11 +2287,11 @@ public class BgpConfigurationManager {
     }
 
     private <T extends DataObject> void update(InstanceIdentifier<T> iid, T dto) {
-        BgpUtil.update(dataBroker, LogicalDatastoreType.CONFIGURATION, iid, dto);
+        bgpUtil.update(LogicalDatastoreType.CONFIGURATION, iid, dto);
     }
 
     private <T extends DataObject> void delete(InstanceIdentifier<T> iid) {
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, iid);
+        bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, iid);
     }
 
     public void startConfig(String bgpHost, int thriftPort) {
@@ -2421,7 +2415,7 @@ public class BgpConfigurationManager {
 
     // TODO: add LayerType as arg - supports command
     public void addVrf(String rd, List<String> irts, List<String> erts, AddressFamily addressFamily) {
-        Vrfs vrf = BgpUtil.getVrfFromRd(rd);
+        Vrfs vrf = bgpUtil.getVrfFromRd(rd);
         List<AddressFamiliesVrf> adfList = new ArrayList<>(1);
         if (vrf != null) {
             adfList = vrf.getAddressFamiliesVrf();
@@ -2552,7 +2546,7 @@ public class BgpConfigurationManager {
             adfBuilder.setAfi((long) af_afi.AFI_IP.getValue());
             adfBuilder.setSafi((long) af_safi.SAFI_EVPN.getValue());
         }
-        Vrfs vrfOriginal = BgpUtil.getVrfFromRd(rd);
+        Vrfs vrfOriginal = bgpUtil.getVrfFromRd(rd);
         if (vrfOriginal == null) {
             LOG.error("delVrf: no vrf with existing rd {}. step aborted", rd);
             return false;
@@ -2672,13 +2666,8 @@ public class BgpConfigurationManager {
         try {
             staledFibEntriesMap.clear();
             InstanceIdentifier<FibEntries> id = InstanceIdentifier.create(FibEntries.class);
-            DataBroker db = BgpUtil.getBroker();
-            if (db == null) {
-                LOG.error("Couldn't find BgpUtil dataBroker while creating createStaleFibMap");
-                return;
-            }
 
-            Optional<FibEntries> fibEntries = SingleTransactionDataBroker.syncReadOptional(BgpUtil.getBroker(),
+            Optional<FibEntries> fibEntries = SingleTransactionDataBroker.syncReadOptional(dataBroker,
                     LogicalDatastoreType.CONFIGURATION, id);
             if (fibEntries.isPresent()) {
                 List<VrfTables> staleVrfTables = fibEntries.get().getVrfTables();
@@ -2720,13 +2709,8 @@ public class BgpConfigurationManager {
         totalExternalMacRoutes = 0;
         try {
             InstanceIdentifier<FibEntries> id = InstanceIdentifier.create(FibEntries.class);
-            DataBroker db = BgpUtil.getBroker();
-            if (db == null) {
-                LOG.error("Couldn't find BgpUtil dataBroker while deleting external routes");
-                return;
-            }
 
-            Optional<FibEntries> fibEntries = SingleTransactionDataBroker.syncReadOptional(BgpUtil.getBroker(),
+            Optional<FibEntries> fibEntries = SingleTransactionDataBroker.syncReadOptional(dataBroker,
                     LogicalDatastoreType.CONFIGURATION, id);
             if (fibEntries.isPresent()) {
                 if (fibEntries.get().getVrfTables() == null) {
index e3c6028e7f6bb51ee53b13a2e360456e0c74d1c0..86782ed0fb4e21b738193b508d71be4acbdad782 100644 (file)
@@ -18,7 +18,6 @@ import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.apache.thrift.TException;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.netvirt.bgpmanager.api.IBgpManager;
 import org.opendaylight.netvirt.bgpmanager.oam.BgpAlarmErrorCodes;
 import org.opendaylight.netvirt.bgpmanager.oam.BgpConstants;
@@ -36,24 +35,19 @@ import org.slf4j.LoggerFactory;
 @Singleton
 public class BgpManager implements AutoCloseable, IBgpManager {
     private static final Logger LOG = LoggerFactory.getLogger(BgpManager.class);
-    private final DataBroker dataBroker;
     private final BgpConfigurationManager bcm;
 
     private final FibDSWriter fibDSWriter;
     private volatile long qbgprestartTS = 0;
 
     @Inject
-    public BgpManager(final DataBroker dataBroker,
-            final BgpConfigurationManager bcm,
-            final FibDSWriter fibDSWriter) {
-        this.dataBroker = dataBroker;
+    public BgpManager(final BgpConfigurationManager bcm, final FibDSWriter fibDSWriter) {
         this.bcm = bcm;
         this.fibDSWriter = fibDSWriter;
     }
 
     @PostConstruct
     public void init() {
-        BgpUtil.setBroker(dataBroker);
         LOG.info("{} start", getClass().getSimpleName());
     }
 
index b307763e0c913b7c01eef6717c28c56ba98190d9..c6cce539d1fa74aa07c48ca7652949419ede3af3 100755 (executable)
@@ -8,22 +8,22 @@
 package org.opendaylight.netvirt.bgpmanager;
 
 import com.google.common.base.Optional;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
+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.mdsalutil.MDSALUtil;
 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.genius.utils.batching.ResourceHandler;
 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;
@@ -59,13 +59,38 @@ import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BgpUtil {
-
+@Singleton
+public class BgpUtil implements AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(BgpUtil.class);
+    private static final String RESOURCE_TYPE = "BGP-RESOURCES";
+    private static final int DEFAULT_BATCH_SIZE = 1000;
+    private static final int DEFAULT_BATCH_INTERVAL = 500;
+
+    private final DataBroker dataBroker;
+
+    private final BlockingQueue<ActionableResource> bgpResourcesBufferQ = new LinkedBlockingQueue<>();
+
+    @Inject
+    public BgpUtil(DataBroker dataBroker) {
+        this.dataBroker = dataBroker;
+    }
 
-    private static DataBroker dataBroker;
+    @PostConstruct
+    public void init() {
+        ResourceBatchingManager resBatchingManager = ResourceBatchingManager.getInstance();
+
+        Integer batchSize = Integer.getInteger("batch.size", DEFAULT_BATCH_SIZE);
+        Integer batchInterval = Integer.getInteger("batch.wait.time", DEFAULT_BATCH_INTERVAL);
 
-    private static BlockingQueue<ActionableResource> bgpResourcesBufferQ = new LinkedBlockingQueue<>();
+        resBatchingManager.registerBatchableResource(RESOURCE_TYPE, bgpResourcesBufferQ,
+                new DefaultBatchHandler(dataBroker, LogicalDatastoreType.CONFIGURATION, batchSize, batchInterval));
+    }
+
+    @Override
+    @PreDestroy
+    public void close() {
+        ResourceBatchingManager.getInstance().deregisterBatchableResource(RESOURCE_TYPE);
+    }
 
     /**
      * get a translation from prefix ipv6 to afi<br>.
@@ -96,18 +121,8 @@ public class BgpUtil {
         return retValue;
     }
 
-    static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
-            .setNameFormat("bgp-util-mdsal-%d").build();
-
-    static ExecutorService threadPool = Executors.newFixedThreadPool(1, namedThreadFactory);
-
-    static void registerWithBatchManager(ResourceHandler resourceHandler) {
-        ResourceBatchingManager resBatchingManager = ResourceBatchingManager.getInstance();
-        resBatchingManager.registerBatchableResource("BGP-RESOURCES", bgpResourcesBufferQ, resourceHandler);
-    }
-
-    static <T extends DataObject> void update(DataBroker broker, final LogicalDatastoreType datastoreType,
-                                              final InstanceIdentifier<T> path, final T data) {
+    public <T extends DataObject> void update(final LogicalDatastoreType datastoreType,
+            final InstanceIdentifier<T> path, final T data) {
         ActionableResource actResource = new ActionableResourceImpl(path.toString());
         actResource.setAction(ActionableResource.UPDATE);
         actResource.setInstanceIdentifier(path);
@@ -115,8 +130,8 @@ public class BgpUtil {
         bgpResourcesBufferQ.add(actResource);
     }
 
-    public static <T extends DataObject> void write(DataBroker broker, final LogicalDatastoreType datastoreType,
-                                                    final InstanceIdentifier<T> path, final T data) {
+    public <T extends DataObject> void write(final LogicalDatastoreType datastoreType, final InstanceIdentifier<T> path,
+            final T data) {
         ActionableResource actResource = new ActionableResourceImpl(path.toString());
         actResource.setAction(ActionableResource.CREATE);
         actResource.setInstanceIdentifier(path);
@@ -124,8 +139,8 @@ public class BgpUtil {
         bgpResourcesBufferQ.add(actResource);
     }
 
-    static <T extends DataObject> void delete(DataBroker broker, final LogicalDatastoreType datastoreType,
-                                              final InstanceIdentifier<T> path) {
+    public <T extends DataObject> void delete(final LogicalDatastoreType datastoreType,
+            final InstanceIdentifier<T> path) {
         ActionableResource actResource = new ActionableResourceImpl(path.toString());
         actResource.setAction(ActionableResource.DELETE);
         actResource.setInstanceIdentifier(path);
@@ -133,14 +148,6 @@ public class BgpUtil {
         bgpResourcesBufferQ.add(actResource);
     }
 
-    public static void setBroker(final DataBroker broker) {
-        BgpUtil.dataBroker = broker;
-    }
-
-    public static DataBroker getBroker() {
-        return dataBroker;
-    }
-
     // Convert ProtocolType to thrift protocol_type
     public static protocol_type convertToThriftProtocolType(BgpControlPlaneType protocolType) {
         switch (protocolType) {
@@ -172,9 +179,9 @@ public class BgpUtil {
         }
     }
 
-    static VpnInstanceOpDataEntry getVpnInstanceOpData(DataBroker broker, String rd)  {
+    public VpnInstanceOpDataEntry getVpnInstanceOpData(String rd)  {
         InstanceIdentifier<VpnInstanceOpDataEntry> id = getVpnInstanceOpDataIdentifier(rd);
-        Optional<VpnInstanceOpDataEntry> vpnInstanceOpData = MDSALUtil.read(broker,
+        Optional<VpnInstanceOpDataEntry> vpnInstanceOpData = MDSALUtil.read(dataBroker,
                 LogicalDatastoreType.OPERATIONAL, id);
         if (vpnInstanceOpData.isPresent()) {
             return vpnInstanceOpData.get();
@@ -187,9 +194,9 @@ public class BgpUtil {
                 .child(VpnInstanceOpDataEntry.class, new VpnInstanceOpDataEntryKey(rd)).build();
     }
 
-    private static String getElanNamefromRd(DataBroker broker, String rd)  {
+    private String getElanNamefromRd(String rd)  {
         InstanceIdentifier<EvpnRdToNetwork> id = getEvpnRdToNetworkIdentifier(rd);
-        Optional<EvpnRdToNetwork> evpnRdToNetworkOpData = MDSALUtil.read(broker,
+        Optional<EvpnRdToNetwork> evpnRdToNetworkOpData = MDSALUtil.read(dataBroker,
                 LogicalDatastoreType.CONFIGURATION, id);
         if (evpnRdToNetworkOpData.isPresent()) {
             return evpnRdToNetworkOpData.get().getNetworkId();
@@ -202,12 +209,12 @@ public class BgpUtil {
                 .child(EvpnRdToNetwork.class, new EvpnRdToNetworkKey(rd)).build();
     }
 
-    public static void addTepToElanInstance(DataBroker broker, String rd, String tepIp) {
+    public void addTepToElanInstance(String rd, String tepIp) {
         if (rd == null || tepIp == null) {
             LOG.error("addTepToElanInstance : Null parameters returning");
             return;
         }
-        String elanName = getElanNamefromRd(broker, rd);
+        String elanName = getElanNamefromRd(rd);
         if (elanName == null) {
             LOG.error("Elan null while processing RT2 for RD {}", rd);
             return;
@@ -218,22 +225,22 @@ public class BgpUtil {
         ExternalTepsKey externalTepsKey = externalTepsId.firstKeyOf(ExternalTeps.class);
         externalTepsBuilder.setKey(externalTepsKey);
         externalTepsBuilder.setTepIp(externalTepsKey.getTepIp());
-        BgpUtil.update(dataBroker, LogicalDatastoreType.CONFIGURATION, externalTepsId, externalTepsBuilder.build());
+        update(LogicalDatastoreType.CONFIGURATION, externalTepsId, externalTepsBuilder.build());
     }
 
-    public static void deleteTepFromElanInstance(DataBroker broker, String rd, String tepIp) {
+    public void deleteTepFromElanInstance(String rd, String tepIp) {
         if (rd == null || tepIp == null) {
             LOG.error("deleteTepFromElanInstance : Null parameters returning");
             return;
         }
-        String elanName = getElanNamefromRd(broker, rd);
+        String elanName = getElanNamefromRd(rd);
         if (elanName == null) {
             LOG.error("Elan null while processing RT2 withdraw for RD {}", rd);
             return;
         }
         LOG.debug("Deleting tepIp {} from elan {}", tepIp, elanName);
         InstanceIdentifier<ExternalTeps> externalTepsId = getExternalTepsIdentifier(elanName, tepIp);
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, externalTepsId);
+        delete(LogicalDatastoreType.CONFIGURATION, externalTepsId);
     }
 
     private static InstanceIdentifier<ExternalTeps> getExternalTepsIdentifier(String elanInstanceName, String tepIp) {
@@ -243,8 +250,8 @@ public class BgpUtil {
                 new ExternalTepsKey(tepAdress)).build();
     }
 
-    public static String getVpnNameFromRd(DataBroker dataBroker2, String rd) {
-        VpnInstanceOpDataEntry vpnInstanceOpData = getVpnInstanceOpData(dataBroker2, rd);
+    public String getVpnNameFromRd(String rd) {
+        VpnInstanceOpDataEntry vpnInstanceOpData = getVpnInstanceOpData(rd);
         return vpnInstanceOpData != null ? vpnInstanceOpData.getVpnInstanceName() : null;
     }
 
@@ -252,7 +259,7 @@ public class BgpUtil {
      * @param rd is the RouteDistinguisher of vrf
      * @return the vrf of rd or null if no exist
      */
-    public static Vrfs getVrfFromRd(String rd) {
+    public Vrfs getVrfFromRd(String rd) {
         Vrfs vrfs = null;
         KeyedInstanceIdentifier<Vrfs, VrfsKey> id = InstanceIdentifier.create(Bgp.class)
                 .child(Vrfs.class, new VrfsKey(rd));
@@ -277,13 +284,12 @@ public class BgpUtil {
         return layerTypeValue;
     }
 
-    public static void removeVrfEntry(String rd, VrfEntry vrfEntry) {
+    public void removeVrfEntry(String rd, VrfEntry vrfEntry) {
         LOG.debug("removeVrfEntry : vrf {} prefix {}", rd, vrfEntry.getDestPrefix());
         InstanceIdentifier<VrfEntry> vrfEntryId =
                    InstanceIdentifier.builder(FibEntries.class)
                    .child(VrfTables.class, new VrfTablesKey(rd))
                    .child(VrfEntry.class, new VrfEntryKey(vrfEntry.getDestPrefix())).build();
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
+        delete(LogicalDatastoreType.CONFIGURATION, vrfEntryId);
     }
-
 }
index da183c485945c14da1e31848759529c7e94171b7..179281933d6395ec046bf6f6fccf7aad0ded0bb5 100644 (file)
@@ -25,12 +25,13 @@ public class EvpnRdNetworkListener extends AsyncDataTreeChangeListenerBase<EvpnR
 
     private final DataBroker broker;
     private final BgpConfigurationManager bgpConfigManager;
+    private final BgpUtil bgpUtil;
 
-    public EvpnRdNetworkListener(DataBroker dataBroker,
-                                 BgpConfigurationManager bgpConfigManager) {
+    public EvpnRdNetworkListener(DataBroker dataBroker, BgpConfigurationManager bgpConfigManager, BgpUtil bgpUtil) {
         super(EvpnRdToNetwork.class, EvpnRdNetworkListener.class);
         this.broker = dataBroker;
         this.bgpConfigManager = bgpConfigManager;
+        this.bgpUtil = bgpUtil;
     }
 
     @Override
@@ -83,14 +84,14 @@ public class EvpnRdNetworkListener extends AsyncDataTreeChangeListenerBase<EvpnR
     private void addExternalTepstoElanInstance(String rd) {
         for (String tepIp: bgpConfigManager.getTepIPs(rd)) {
             LOG.debug("Adding tep {} to Elan Corresponding to RD {}", tepIp, rd);
-            BgpUtil.addTepToElanInstance(broker, rd, tepIp);
+            bgpUtil.addTepToElanInstance(rd, tepIp);
         }
     }
 
     private void deleteExternalTepsfromElanInstance(String rd) {
         for (String tepIp: bgpConfigManager.getTepIPs(rd)) {
             LOG.debug("Deleting tep {} to Elan Corresponding to RD {}", tepIp, rd);
-            BgpUtil.deleteTepFromElanInstance(broker, rd, tepIp);
+            bgpUtil.deleteTepFromElanInstance(rd, tepIp);
         }
     }
 }
index ff9fedf09a6430bf41d9efe9e3037db7a925cf0e..f102fd6c274b41a32356e7bd0a84322053e542d4 100644 (file)
@@ -43,10 +43,12 @@ public class FibDSWriter {
     private static final Logger LOG = LoggerFactory.getLogger(FibDSWriter.class);
     private final DataBroker dataBroker;
     private final SingleTransactionDataBroker singleTxDB;
+    private final BgpUtil bgpUtil;
 
     @Inject
-    public FibDSWriter(final DataBroker dataBroker) {
+    public FibDSWriter(final DataBroker dataBroker, final BgpUtil bgpUtil) {
         this.dataBroker = dataBroker;
+        this.bgpUtil = bgpUtil;
         this.singleTxDB = new SingleTransactionDataBroker(dataBroker);
     }
 
@@ -76,7 +78,7 @@ public class FibDSWriter {
         VrfEntryBuilder vrfEntryBuilder = new VrfEntryBuilder().setDestPrefix(prefix).setOrigin(origin.getValue());
         buildVpnEncapSpecificInfo(vrfEntryBuilder, encapType, label, l3vni, macAddress,
                 gatewayMacAddress, nextHopList);
-        BgpUtil.update(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId, vrfEntryBuilder.build());
+        bgpUtil.update(LogicalDatastoreType.CONFIGURATION, vrfEntryId, vrfEntryBuilder.build());
     }
 
     public void addMacEntryToDS(String rd, String macAddress, String prefix,
@@ -104,7 +106,7 @@ public class FibDSWriter {
                 InstanceIdentifier.builder(FibEntries.class)
                         .child(VrfTables.class, new VrfTablesKey(rd))
                         .child(MacVrfEntry.class, new MacVrfEntryKey(macAddress)).build();
-        BgpUtil.update(dataBroker, LogicalDatastoreType.CONFIGURATION, macEntryId, macEntryBuilder.build());
+        bgpUtil.update(LogicalDatastoreType.CONFIGURATION, macEntryId, macEntryBuilder.build());
     }
 
     private static void buildVpnEncapSpecificInfo(VrfEntryBuilder builder,
@@ -146,7 +148,7 @@ public class FibDSWriter {
                 InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(rd)).child(
                         VrfEntry.class, new VrfEntryKey(prefix));
         InstanceIdentifier<VrfEntry> vrfEntryId = idBuilder.build();
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
+        bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, vrfEntryId);
 
     }
 
@@ -162,7 +164,7 @@ public class FibDSWriter {
                 InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(rd)).child(
                         MacVrfEntry.class, new MacVrfEntryKey(macAddress));
         InstanceIdentifier<MacVrfEntry> macEntryId = idBuilder.build();
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, macEntryId);
+        bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, macEntryId);
 
     }
 
@@ -185,7 +187,7 @@ public class FibDSWriter {
                     existingVrfEntry.toJavaUtil().map(VrfEntry::getRoutePaths).orElse(Collections.emptyList());
             if (routePaths.size() == 1) {
                 if (routePaths.get(0).getNexthopAddress().equals(nextHop)) {
-                    BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
+                    bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, vrfEntryId);
                 }
             } else {
                 routePaths.stream()
@@ -195,8 +197,7 @@ public class FibDSWriter {
                     .ifPresent(nh -> {
                         InstanceIdentifier<RoutePaths> routePathId =
                                 FibHelper.buildRoutePathId(rd, prefix, nextHop);
-                        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION,
-                                routePathId);
+                        bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, routePathId);
                     });
             }
         } catch (ReadFailedException e) {
@@ -244,7 +245,7 @@ public class FibDSWriter {
                     if (found == false) {
                         continue;
                     }
-                    BgpUtil.removeVrfEntry(rd, vrfEntry);
+                    bgpUtil.removeVrfEntry(rd, vrfEntry);
                 }
             }
         } catch (ReadFailedException rfe) {
@@ -261,7 +262,7 @@ public class FibDSWriter {
                 InstanceIdentifier.builder(FibEntries.class).child(VrfTables.class, new VrfTablesKey(rd));
         InstanceIdentifier<VrfTables> vrfTableId = idBuilder.build();
 
-        BgpUtil.delete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfTableId);
+        bgpUtil.delete(LogicalDatastoreType.CONFIGURATION, vrfTableId);
 
     }
 }
index 4bd3dfd860de8a588e22d59ba7a067d3d13b58cd..b013d962f7e4875e85c7dfc2303d12e792a23ce1 100644 (file)
@@ -32,9 +32,8 @@ public class BgpManagerTest extends AbstractDataBrokerTest {
     @Before
     public void setUp() throws Exception {
         dataBroker = getDataBroker();
-        bgpFibWriter = new FibDSWriter(dataBroker);
+        bgpFibWriter = new FibDSWriter(dataBroker, new BgpUtil(dataBroker));
         fibManager = new MockFibManager(dataBroker);
-        BgpUtil.setBroker(dataBroker);
     }
 
     @Test