Cleaned up SDN-IP config reader
Change-Id: I98100a77b7460eeba848c2b7016f51cdcfef072a
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index e4eafb5..f1a14e7 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -143,7 +143,7 @@
}
/**
- * Starts the Router.
+ * Starts the router.
*/
public void start() {
bgpUpdatesExecutor.execute(new Runnable() {
@@ -161,6 +161,14 @@
});
}
+ /**
+ * Shuts the router down.
+ */
+ public void shutdown() {
+ bgpUpdatesExecutor.shutdownNow();
+ bgpIntentsSynchronizerExecutor.shutdownNow();
+ }
+
//@Override TODO hook this up to something
public void leaderChanged(boolean isLeader) {
log.debug("Leader changed: {}", isLeader);
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
index 0f6e38a..4abefa7 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
@@ -90,6 +90,9 @@
@Deactivate
protected void deactivate() {
+ bgpSessionManager.shutDown();
+ router.shutdown();
+
log.info("Stopped");
}
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
index cde65c6..2fcd1fe 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
@@ -16,6 +16,7 @@
package org.onlab.onos.sdnip.config;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
@@ -40,12 +41,8 @@
private static final String DEFAULT_CONFIG_FILE = "config/sdnip.json";
private String configFileName = DEFAULT_CONFIG_FILE;
- //private Map<String, Interface> interfaces;
- // We call the BGP routers in our SDN network the BGP speakers, and call
- // the BGP routers outside our SDN network the BGP peers.
- private Map<String, BgpSpeaker> bgpSpeakers;
- private Map<IpAddress, BgpPeer> bgpPeers;
- //private InvertedRadixTree<Interface> interfaceRoutes;
+ private Map<String, BgpSpeaker> bgpSpeakers = new ConcurrentHashMap<>();
+ private Map<IpAddress, BgpPeer> bgpPeers = new ConcurrentHashMap<>();
/**
* Reads the info contained in the configuration file.
@@ -58,78 +55,25 @@
try {
Configuration config = mapper.readValue(gatewaysFile, Configuration.class);
- /*interfaces = new ConcurrentHashMap<>();
- for (Interface intf : config.getInterfaces()) {
- interfaces.put(intf.getName(), intf);
- }*/
- bgpSpeakers = new ConcurrentHashMap<>();
for (BgpSpeaker speaker : config.getBgpSpeakers()) {
bgpSpeakers.put(speaker.name(), speaker);
}
- bgpPeers = new ConcurrentHashMap<>();
for (BgpPeer peer : config.getPeers()) {
bgpPeers.put(peer.ipAddress(), peer);
}
+ } catch (FileNotFoundException e) {
+ log.warn("Configuration file not found: {}", configFileName);
} catch (IOException e) {
log.error("Error reading JSON file", e);
- //throw new ConfigurationRuntimeException("Error in JSON file", e);
}
-
- // Populate the interface InvertedRadixTree
- /*for (Interface intf : interfaces.values()) {
- Ip4Prefix prefix = intf.getIp4Prefix();
- String binaryString = RouteEntry.createBinaryString(prefix);
- interfaceRoutes.put(binaryString, intf);
- }*/
}
- /*
- * To find the Interface which has longest matchable IP prefix (sub-network
- * prefix) to next hop IP address.
- *
- * @param address the IP address of next hop router
- * @return the Interface which has longest matchable IP prefix
- */
- /*private Interface longestInterfacePrefixMatch(IpAddress address) {
- Ip4Prefix prefixToSearchFor =
- new Ip4Prefix(address, (short) Ip4Address.BIT_LENGTH);
- String binaryString = RouteEntry.createBinaryString(prefixToSearchFor);
-
- Iterator<Interface> it =
- interfaceRoutes.getValuesForKeysPrefixing(binaryString).iterator();
- Interface intf = null;
- // Find the last prefix, which will be the longest prefix
- while (it.hasNext()) {
- intf = it.next();
- }
-
- return intf;
- }*/
-
- /*@Override
- public Interface getOutgoingInterface(IpAddress dstIpAddress) {
- return longestInterfacePrefixMatch(dstIpAddress);
- }*/
-
public void init() {
- //interfaceRoutes = new ConcurrentInvertedRadixTree<>(
- //new DefaultByteArrayNodeFactory());
-
- // Reading config values
- /*String configFilenameParameter = context.getConfigParams(this).get("configfile");
- if (configFilenameParameter != null) {
- currentConfigFilename = configFilenameParameter;
- }*/
log.debug("Config file set to {}", configFileName);
readConfiguration(configFileName);
}
- /*@Override
- public Map<String, Interface> getInterfaces() {
- return Collections.unmodifiableMap(interfaces);
- }*/
-
@Override
public Map<String, BgpSpeaker> getBgpSpeakers() {
return Collections.unmodifiableMap(bgpSpeakers);