Bug2121 -- Add configuration parameter for TopologyId. 74/11674/1
authorAlex Fan <railor33@gmail.com>
Tue, 30 Sep 2014 19:06:27 +0000 (12:06 -0700)
committerAlex Fan <railor33@gmail.com>
Tue, 30 Sep 2014 19:06:27 +0000 (12:06 -0700)
Change-Id: I3a5f486c7fa32f10451098fcfdf6fff0d87d104d
Signed-off-by: Alex Fan <railor33@gmail.com>
loopremover/config/src/main/resources/initial/52-loopremover.xml
loopremover/implementation/src/main/java/org/opendaylight/l2switch/loopremover/topology/TopologyLinkDataChangeHandler.java
loopremover/implementation/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/packet/loop/remover/impl/rev140528/LoopRemoverModule.java
loopremover/implementation/src/main/yang/loop-remover-impl.yang

index 10e41d348c0363fc6495c58bdb2f84bb9e467183..eb57ddb7164311f1c5215d1c289633f83f05a94a 100644 (file)
@@ -22,6 +22,7 @@
           <lldp-flow-idle-timeout>0</lldp-flow-idle-timeout>
           <lldp-flow-hard-timeout>0</lldp-flow-hard-timeout>
           <graph-refresh-delay>1000</graph-refresh-delay>
+          <topology-id>flow:1</topology-id>
 
           <notification-service>
             <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">
index 95459077fdd3b15cb9f04fc81b2523c2126c535b..4756c36a227340c3bd50a4d8fe4e200f3a9673c1 100644 (file)
@@ -56,6 +56,7 @@ import java.util.concurrent.TimeUnit;
 public class TopologyLinkDataChangeHandler implements DataChangeListener {
   private static final Logger _logger = LoggerFactory.getLogger(TopologyLinkDataChangeHandler.class);
   private static final String DEFAULT_TOPOLOGY_ID = "flow:1";
+  private static final long DEFAULT_GRAPH_REFRESH_DELAY = 1000;
 
   private final ScheduledExecutorService topologyDataChangeEventProcessor = Executors.newScheduledThreadPool(1);
 
@@ -63,6 +64,7 @@ public class TopologyLinkDataChangeHandler implements DataChangeListener {
   private boolean networkGraphRefreshScheduled = false;
   private boolean threadReschedule = false;
   private long graphRefreshDelay;
+  private String topologyId;
 
   private final DataBroker dataBroker;
 
@@ -74,7 +76,17 @@ public class TopologyLinkDataChangeHandler implements DataChangeListener {
   }
 
   public void setGraphRefreshDelay(long graphRefreshDelay) {
-    this.graphRefreshDelay = graphRefreshDelay;
+    if (graphRefreshDelay < 0) {
+      this.graphRefreshDelay = DEFAULT_GRAPH_REFRESH_DELAY;
+    }
+    else this.graphRefreshDelay = graphRefreshDelay;
+  }
+
+  public void setTopologyId(String topologyId) {
+    if (topologyId == null || topologyId.isEmpty()) {
+      this.topologyId = DEFAULT_TOPOLOGY_ID;
+    }
+    else this.topologyId = topologyId;
   }
 
   /**
@@ -85,7 +97,7 @@ public class TopologyLinkDataChangeHandler implements DataChangeListener {
    */
   public ListenerRegistration<DataChangeListener> registerAsDataChangeListener() {
     InstanceIdentifier<Link> linkInstance = InstanceIdentifier.builder(NetworkTopology.class)
-        .child(Topology.class, new TopologyKey(new TopologyId(DEFAULT_TOPOLOGY_ID))).child(Link.class).toInstance();
+        .child(Topology.class, new TopologyKey(new TopologyId(topologyId))).child(Link.class).toInstance();
     return dataBroker.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, linkInstance, this, AsyncDataBroker.DataChangeScope.BASE);
   }
 
@@ -186,7 +198,7 @@ public class TopologyLinkDataChangeHandler implements DataChangeListener {
     }
 
     private List<Link> getLinksFromTopology() {
-      InstanceIdentifier<Topology> topologyInstanceIdentifier = InstanceIdentifierUtils.generateTopologyInstanceIdentifier(DEFAULT_TOPOLOGY_ID);
+      InstanceIdentifier<Topology> topologyInstanceIdentifier = InstanceIdentifierUtils.generateTopologyInstanceIdentifier(topologyId);
       Topology topology = null;
       ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
       try {
index 484109cc4712cc42267cd02cb6e688b1f2052bd5..edafe1818e1759d44e46eff2479793938b300388 100644 (file)
@@ -53,6 +53,7 @@ public class LoopRemoverModule extends org.opendaylight.yang.gen.v1.urn.opendayl
     NetworkGraphService networkGraphService = new NetworkGraphImpl();
     this.topologyLinkDataChangeHandler = new TopologyLinkDataChangeHandler(dataService, networkGraphService);
     topologyLinkDataChangeHandler.setGraphRefreshDelay(getGraphRefreshDelay());
+    topologyLinkDataChangeHandler.setTopologyId(getTopologyId());
     listenerRegistration = topologyLinkDataChangeHandler.registerAsDataChangeListener();
 
     final class CloseResources implements AutoCloseable {
index 26ab0c0b09d562fcf9b798ab376afda98ae5fef7..2490f21833d5b399268d70963d98842e9e94879a 100644 (file)
@@ -46,6 +46,9 @@ module loop-remover-impl {
       leaf graph-refresh-delay {
         type uint32;
       }
+      leaf topology-id {
+        type string;
+      }
       container notification-service {
         uses config:service-ref {
           refine type {