David K. Bainbridge
Committed by Ray Milkey

ONOS-3325 - enable configuration of local IP via environment variables

Change-Id: Ia8df1c126a76c8060e869554316593598dc5ec3e
...@@ -55,6 +55,10 @@ public class StaticClusterMetadataStore ...@@ -55,6 +55,10 @@ public class StaticClusterMetadataStore
55 implements ClusterMetadataStore { 55 implements ClusterMetadataStore {
56 56
57 private final Logger log = getLogger(getClass()); 57 private final Logger log = getLogger(getClass());
58 +
59 + private static final String ONOS_IP = "ONOS_IP";
60 + private static final String ONOS_INTERFACE = "ONOS_INTERFACE";
61 + private static final String DEFAULT_ONOS_INTERFACE = "eth0";
58 private static final String CLUSTER_METADATA_FILE = "../config/cluster.json"; 62 private static final String CLUSTER_METADATA_FILE = "../config/cluster.json";
59 private static final int DEFAULT_ONOS_PORT = 9876; 63 private static final int DEFAULT_ONOS_PORT = 9876;
60 private final File metadataFile = new File(CLUSTER_METADATA_FILE); 64 private final File metadataFile = new File(CLUSTER_METADATA_FILE);
...@@ -194,6 +198,22 @@ public class StaticClusterMetadataStore ...@@ -194,6 +198,22 @@ public class StaticClusterMetadataStore
194 198
195 199
196 private static String getSiteLocalAddress() { 200 private static String getSiteLocalAddress() {
201 +
202 + /*
203 + * If the IP ONOS should use is set via the environment variable we will assume it is valid and should be used.
204 + * Setting the IP address takes presidence over setting the interface via the environment.
205 + */
206 + String useOnosIp = System.getenv(ONOS_IP);
207 + if (useOnosIp != null) {
208 + return useOnosIp;
209 + }
210 +
211 + // Read environment variables for IP interface information or set to default
212 + String useOnosInterface = System.getenv(ONOS_INTERFACE);
213 + if (useOnosInterface == null) {
214 + useOnosInterface = DEFAULT_ONOS_INTERFACE;
215 + }
216 +
197 Function<NetworkInterface, IpAddress> ipLookup = nif -> { 217 Function<NetworkInterface, IpAddress> ipLookup = nif -> {
198 for (InetAddress address : Collections.list(nif.getInetAddresses())) { 218 for (InetAddress address : Collections.list(nif.getInetAddresses())) {
199 if (address.isSiteLocalAddress()) { 219 if (address.isSiteLocalAddress()) {
...@@ -203,7 +223,7 @@ public class StaticClusterMetadataStore ...@@ -203,7 +223,7 @@ public class StaticClusterMetadataStore
203 return null; 223 return null;
204 }; 224 };
205 try { 225 try {
206 - IpAddress ip = ipLookup.apply(NetworkInterface.getByName("eth0")); 226 + IpAddress ip = ipLookup.apply(NetworkInterface.getByName(useOnosInterface));
207 if (ip != null) { 227 if (ip != null) {
208 return ip.toString(); 228 return ip.toString();
209 } 229 }
...@@ -218,4 +238,4 @@ public class StaticClusterMetadataStore ...@@ -218,4 +238,4 @@ public class StaticClusterMetadataStore
218 } 238 }
219 return IpAddress.valueOf(InetAddress.getLoopbackAddress()).toString(); 239 return IpAddress.valueOf(InetAddress.getLoopbackAddress()).toString();
220 } 240 }
221 -}
...\ No newline at end of file ...\ No newline at end of file
241 +}
......