Cleanup a few of the CORD apps.
* Removed or turned per-packet logs down to trace in the PIM app
* Can now reconfigure remote sync host in CordMcast
* CordMcast catches REST exceptions rather than bombing
Change-Id: Iae027d5ce1d9047827ea80b071dc77ca49c65206
diff --git a/src/main/java/org/onosproject/cordmcast/CordMcast.java b/src/main/java/org/onosproject/cordmcast/CordMcast.java
index 565d76b..76c6fd2 100644
--- a/src/main/java/org/onosproject/cordmcast/CordMcast.java
+++ b/src/main/java/org/onosproject/cordmcast/CordMcast.java
@@ -21,6 +21,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
import org.apache.felix.scr.annotations.Activate;
@@ -83,6 +84,7 @@
@Component(immediate = true)
public class CordMcast {
+ private static final int DEFAULT_REST_TIMEOUT_MS = 2000;
private static final int DEFAULT_PRIORITY = 1000;
private static final short DEFAULT_MCAST_VLAN = 4000;
private static final String DEFAULT_SYNC_HOST = "10.90.0.8:8181";
@@ -149,8 +151,6 @@
appId = coreService.registerApplication("org.onosproject.cordmcast");
- fabricOnosUrl = "http://" + syncHost + "/onos/v1/mcast";
-
clearRemoteRoutes();
mcastService.addListener(listener);
@@ -192,7 +192,7 @@
s = get(properties, "priority");
priority = isNullOrEmpty(s) ? DEFAULT_PRIORITY : Integer.parseInt(s.trim());
- s = get(properties, syncHost);
+ s = get(properties, "syncHost");
syncHost = isNullOrEmpty(s) ? DEFAULT_SYNC_HOST : s.trim();
} catch (Exception e) {
user = DEFAULT_USER;
@@ -202,6 +202,11 @@
vlanEnabled = false;
priority = DEFAULT_PRIORITY;
}
+ fabricOnosUrl = createRemoteUrl(syncHost);
+ }
+
+ private static String createRemoteUrl(String remoteHost) {
+ return "http://" + remoteHost + "/onos/v1/mcast";
}
private class InternalMulticastListener implements McastListener {
@@ -369,13 +374,18 @@
return;
}
- log.debug("Sending route to other ONOS: {}", route);
+ log.debug("Sending route {} to other ONOS {}", route, fabricOnosUrl);
WebResource.Builder builder = getClientBuilder(fabricOnosUrl);
ObjectNode json = codecService.getCodec(McastRoute.class)
.encode(route, new AbstractWebResource());
- builder.post(json.toString());
+
+ try {
+ builder.post(json.toString());
+ } catch (ClientHandlerException e) {
+ log.warn("Unable to send route to remote controller: {}", e.getMessage());
+ }
}
private void removeRemoteRoute(McastRoute route) {
@@ -384,13 +394,17 @@
return;
}
- log.debug("Removing route from other ONOS: {}", route);
+ log.debug("Removing route {} from other ONOS {}", route, fabricOnosUrl);
WebResource.Builder builder = getClientBuilder(fabricOnosUrl);
ObjectNode json = codecService.getCodec(McastRoute.class)
.encode(route, new AbstractWebResource());
- builder.delete(json.toString());
+ try {
+ builder.delete(json.toString());
+ } catch (ClientHandlerException e) {
+ log.warn("Unable to delete route from remote controller: {}", e.getMessage());
+ }
}
private void clearRemoteRoutes() {
@@ -399,23 +413,28 @@
return;
}
- log.debug("Clearing remote multicast routes");
+ log.debug("Clearing remote multicast routes from {}", fabricOnosUrl);
WebResource.Builder builder = getClientBuilder(fabricOnosUrl);
-
- String response = builder
- .accept(MediaType.APPLICATION_JSON_TYPE)
- .get(String.class);
-
- JsonCodec<McastRoute> routeCodec = codecService.getCodec(McastRoute.class);
- ObjectMapper mapper = new ObjectMapper();
List<McastRoute> mcastRoutes = Lists.newArrayList();
+
try {
+ String response = builder
+ .accept(MediaType.APPLICATION_JSON_TYPE)
+ .get(String.class);
+
+ JsonCodec<McastRoute> routeCodec = codecService.getCodec(McastRoute.class);
+ ObjectMapper mapper = new ObjectMapper();
+
+
ObjectNode node = (ObjectNode) mapper.readTree(response);
ArrayNode list = (ArrayNode) node.path("routes");
list.forEach(n -> mcastRoutes.add(
routeCodec.decode((ObjectNode) n, new AbstractWebResource())));
+
+ } catch (ClientHandlerException e) {
+ log.warn("Unable to clear routes from remote controller: {}", e.getMessage());
} catch (IOException e) {
log.warn("Error clearing remote routes", e);
}
@@ -429,6 +448,8 @@
private WebResource.Builder getClientBuilder(String uri) {
Client client = Client.create();
+ client.setConnectTimeout(DEFAULT_REST_TIMEOUT_MS);
+ client.setReadTimeout(DEFAULT_REST_TIMEOUT_MS);
client.addFilter(new HTTPBasicAuthFilter(user, password));
WebResource resource = client.resource(uri);
return resource.accept(JSON_UTF_8.toString())