Committed by
Brian O'Connor
Cleaned up SDN-IP config reader
Change-Id: I98100a77b7460eeba848c2b7016f51cdcfef072a
Showing
3 changed files
with
17 additions
and
62 deletions
| ... | @@ -143,7 +143,7 @@ public class Router implements RouteListener { | ... | @@ -143,7 +143,7 @@ public class Router implements RouteListener { |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | /** | 145 | /** |
| 146 | - * Starts the Router. | 146 | + * Starts the router. |
| 147 | */ | 147 | */ |
| 148 | public void start() { | 148 | public void start() { |
| 149 | bgpUpdatesExecutor.execute(new Runnable() { | 149 | bgpUpdatesExecutor.execute(new Runnable() { |
| ... | @@ -161,6 +161,14 @@ public class Router implements RouteListener { | ... | @@ -161,6 +161,14 @@ public class Router implements RouteListener { |
| 161 | }); | 161 | }); |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | + /** | ||
| 165 | + * Shuts the router down. | ||
| 166 | + */ | ||
| 167 | + public void shutdown() { | ||
| 168 | + bgpUpdatesExecutor.shutdownNow(); | ||
| 169 | + bgpIntentsSynchronizerExecutor.shutdownNow(); | ||
| 170 | + } | ||
| 171 | + | ||
| 164 | //@Override TODO hook this up to something | 172 | //@Override TODO hook this up to something |
| 165 | public void leaderChanged(boolean isLeader) { | 173 | public void leaderChanged(boolean isLeader) { |
| 166 | log.debug("Leader changed: {}", isLeader); | 174 | log.debug("Leader changed: {}", isLeader); | ... | ... |
| ... | @@ -90,6 +90,9 @@ public class SdnIp implements SdnIpService { | ... | @@ -90,6 +90,9 @@ public class SdnIp implements SdnIpService { |
| 90 | 90 | ||
| 91 | @Deactivate | 91 | @Deactivate |
| 92 | protected void deactivate() { | 92 | protected void deactivate() { |
| 93 | + bgpSessionManager.shutDown(); | ||
| 94 | + router.shutdown(); | ||
| 95 | + | ||
| 93 | log.info("Stopped"); | 96 | log.info("Stopped"); |
| 94 | } | 97 | } |
| 95 | 98 | ... | ... |
| ... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
| 16 | package org.onlab.onos.sdnip.config; | 16 | package org.onlab.onos.sdnip.config; |
| 17 | 17 | ||
| 18 | import java.io.File; | 18 | import java.io.File; |
| 19 | +import java.io.FileNotFoundException; | ||
| 19 | import java.io.IOException; | 20 | import java.io.IOException; |
| 20 | import java.util.Collections; | 21 | import java.util.Collections; |
| 21 | import java.util.Map; | 22 | import java.util.Map; |
| ... | @@ -40,12 +41,8 @@ public class SdnIpConfigReader implements SdnIpConfigService { | ... | @@ -40,12 +41,8 @@ public class SdnIpConfigReader implements SdnIpConfigService { |
| 40 | 41 | ||
| 41 | private static final String DEFAULT_CONFIG_FILE = "config/sdnip.json"; | 42 | private static final String DEFAULT_CONFIG_FILE = "config/sdnip.json"; |
| 42 | private String configFileName = DEFAULT_CONFIG_FILE; | 43 | private String configFileName = DEFAULT_CONFIG_FILE; |
| 43 | - //private Map<String, Interface> interfaces; | 44 | + private Map<String, BgpSpeaker> bgpSpeakers = new ConcurrentHashMap<>(); |
| 44 | - // We call the BGP routers in our SDN network the BGP speakers, and call | 45 | + private Map<IpAddress, BgpPeer> bgpPeers = new ConcurrentHashMap<>(); |
| 45 | - // the BGP routers outside our SDN network the BGP peers. | ||
| 46 | - private Map<String, BgpSpeaker> bgpSpeakers; | ||
| 47 | - private Map<IpAddress, BgpPeer> bgpPeers; | ||
| 48 | - //private InvertedRadixTree<Interface> interfaceRoutes; | ||
| 49 | 46 | ||
| 50 | /** | 47 | /** |
| 51 | * Reads the info contained in the configuration file. | 48 | * Reads the info contained in the configuration file. |
| ... | @@ -58,78 +55,25 @@ public class SdnIpConfigReader implements SdnIpConfigService { | ... | @@ -58,78 +55,25 @@ public class SdnIpConfigReader implements SdnIpConfigService { |
| 58 | 55 | ||
| 59 | try { | 56 | try { |
| 60 | Configuration config = mapper.readValue(gatewaysFile, Configuration.class); | 57 | Configuration config = mapper.readValue(gatewaysFile, Configuration.class); |
| 61 | - /*interfaces = new ConcurrentHashMap<>(); | ||
| 62 | - for (Interface intf : config.getInterfaces()) { | ||
| 63 | - interfaces.put(intf.getName(), intf); | ||
| 64 | - }*/ | ||
| 65 | - bgpSpeakers = new ConcurrentHashMap<>(); | ||
| 66 | for (BgpSpeaker speaker : config.getBgpSpeakers()) { | 58 | for (BgpSpeaker speaker : config.getBgpSpeakers()) { |
| 67 | bgpSpeakers.put(speaker.name(), speaker); | 59 | bgpSpeakers.put(speaker.name(), speaker); |
| 68 | } | 60 | } |
| 69 | - bgpPeers = new ConcurrentHashMap<>(); | ||
| 70 | for (BgpPeer peer : config.getPeers()) { | 61 | for (BgpPeer peer : config.getPeers()) { |
| 71 | bgpPeers.put(peer.ipAddress(), peer); | 62 | bgpPeers.put(peer.ipAddress(), peer); |
| 72 | } | 63 | } |
| 64 | + } catch (FileNotFoundException e) { | ||
| 65 | + log.warn("Configuration file not found: {}", configFileName); | ||
| 73 | } catch (IOException e) { | 66 | } catch (IOException e) { |
| 74 | log.error("Error reading JSON file", e); | 67 | log.error("Error reading JSON file", e); |
| 75 | - //throw new ConfigurationRuntimeException("Error in JSON file", e); | ||
| 76 | } | 68 | } |
| 77 | - | ||
| 78 | - // Populate the interface InvertedRadixTree | ||
| 79 | - /*for (Interface intf : interfaces.values()) { | ||
| 80 | - Ip4Prefix prefix = intf.getIp4Prefix(); | ||
| 81 | - String binaryString = RouteEntry.createBinaryString(prefix); | ||
| 82 | - interfaceRoutes.put(binaryString, intf); | ||
| 83 | - }*/ | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - /* | ||
| 87 | - * To find the Interface which has longest matchable IP prefix (sub-network | ||
| 88 | - * prefix) to next hop IP address. | ||
| 89 | - * | ||
| 90 | - * @param address the IP address of next hop router | ||
| 91 | - * @return the Interface which has longest matchable IP prefix | ||
| 92 | - */ | ||
| 93 | - /*private Interface longestInterfacePrefixMatch(IpAddress address) { | ||
| 94 | - Ip4Prefix prefixToSearchFor = | ||
| 95 | - new Ip4Prefix(address, (short) Ip4Address.BIT_LENGTH); | ||
| 96 | - String binaryString = RouteEntry.createBinaryString(prefixToSearchFor); | ||
| 97 | - | ||
| 98 | - Iterator<Interface> it = | ||
| 99 | - interfaceRoutes.getValuesForKeysPrefixing(binaryString).iterator(); | ||
| 100 | - Interface intf = null; | ||
| 101 | - // Find the last prefix, which will be the longest prefix | ||
| 102 | - while (it.hasNext()) { | ||
| 103 | - intf = it.next(); | ||
| 104 | } | 69 | } |
| 105 | 70 | ||
| 106 | - return intf; | ||
| 107 | - }*/ | ||
| 108 | - | ||
| 109 | - /*@Override | ||
| 110 | - public Interface getOutgoingInterface(IpAddress dstIpAddress) { | ||
| 111 | - return longestInterfacePrefixMatch(dstIpAddress); | ||
| 112 | - }*/ | ||
| 113 | - | ||
| 114 | public void init() { | 71 | public void init() { |
| 115 | - //interfaceRoutes = new ConcurrentInvertedRadixTree<>( | ||
| 116 | - //new DefaultByteArrayNodeFactory()); | ||
| 117 | - | ||
| 118 | - // Reading config values | ||
| 119 | - /*String configFilenameParameter = context.getConfigParams(this).get("configfile"); | ||
| 120 | - if (configFilenameParameter != null) { | ||
| 121 | - currentConfigFilename = configFilenameParameter; | ||
| 122 | - }*/ | ||
| 123 | log.debug("Config file set to {}", configFileName); | 72 | log.debug("Config file set to {}", configFileName); |
| 124 | 73 | ||
| 125 | readConfiguration(configFileName); | 74 | readConfiguration(configFileName); |
| 126 | } | 75 | } |
| 127 | 76 | ||
| 128 | - /*@Override | ||
| 129 | - public Map<String, Interface> getInterfaces() { | ||
| 130 | - return Collections.unmodifiableMap(interfaces); | ||
| 131 | - }*/ | ||
| 132 | - | ||
| 133 | @Override | 77 | @Override |
| 134 | public Map<String, BgpSpeaker> getBgpSpeakers() { | 78 | public Map<String, BgpSpeaker> getBgpSpeakers() { |
| 135 | return Collections.unmodifiableMap(bgpSpeakers); | 79 | return Collections.unmodifiableMap(bgpSpeakers); | ... | ... |
-
Please register or login to post a comment