tying up the apps - when auth is successful connectivity happens
Change-Id: Ic8d60b9421580af9168855d7bc553a0b19a5f0ca
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
index 1dd8d8d..faa8ea5 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
@@ -17,6 +17,7 @@
import com.eclipsesource.json.JsonArray;
import com.eclipsesource.json.JsonObject;
+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.ClientResponse;
@@ -49,15 +50,14 @@
import org.slf4j.Logger;
import java.util.Dictionary;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.net.MediaType.JSON_UTF_8;
-import static java.net.HttpURLConnection.HTTP_CREATED;
-import static java.net.HttpURLConnection.HTTP_NO_CONTENT;
-import static java.net.HttpURLConnection.HTTP_OK;
+import static java.net.HttpURLConnection.*;
import static org.slf4j.LoggerFactory.getLogger;
@@ -116,12 +116,16 @@
protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE;
private ApplicationId appId;
+ private Map<String, ConnectPoint> nodeToPort;
@Activate
public void activate(ComponentContext context) {
log.info("XOS app is starting");
cfgService.registerProperties(getClass());
appId = coreService.registerApplication("org.onosproject.xosintegration");
+
+ setupMap();
+
readComponentConfiguration(context);
log.info("XOS({}) started", appId.id());
@@ -138,6 +142,16 @@
readComponentConfiguration(context);
}
+ private void setupMap() {
+ nodeToPort = Maps.newHashMap();
+
+ nodeToPort.put("cordcompute01.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID,
+ PortNumber.portNumber(4)));
+
+ nodeToPort.put("cordcompute02.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID,
+ PortNumber.portNumber(3)));
+ }
+
/**
* Converts a JSON representation of a tenant into a tenant object.
*
@@ -237,7 +251,7 @@
* @param json JSON string to post
*/
@Deprecated
- private void postRest(String json) {
+ private String postRest(String json) {
WebResource.Builder builder = getClientBuilder();
ClientResponse response;
@@ -245,13 +259,14 @@
response = builder.post(ClientResponse.class, json);
} catch (ClientHandlerException e) {
log.warn("Unable to contact REST server: {}", e.getMessage());
- return;
+ return "{ 'error' : 'oops no one home' }";
}
if (response.getStatus() != HTTP_CREATED) {
log.info("REST POST request returned error code {}",
response.getStatus());
}
+ return response.getEntity(String.class);
}
/**
@@ -310,15 +325,27 @@
.build();
String json = tenantToJson(tenantToCreate);
- provisionDataPlane(tenantToCreate);
+ //provisionDataPlane(tenantToCreate);
- postRest(json);
+ String retJson = postRest(json);
- provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId())));
+ fetchCPELocation(newTenant, retJson);
return newTenant;
}
+ private void fetchCPELocation(VoltTenant newTenant, String jsonString) {
+ JsonObject json = JsonObject.readFrom(jsonString);
+
+ if (json.get("computeNodeName") != null) {
+ ConnectPoint point = nodeToPort.get(json.get("computeNodeName"));
+
+ provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId())),
+ point);
+ }
+
+ }
+
@Override
public VoltTenant getTenant(long id) {
String jsonString = getRest(Long.toString(id));
@@ -375,13 +402,27 @@
flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToGateway);
}
- private void provisionFabric(VlanId vlanId) {
- String json = "{\"vlan\":" + vlanId + ",\"ports\":[";
- json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\""
- + FABRIC_OLT_CONNECT_POINT.toString() + "\"},";
- json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\""
- + FABRIC_VCPE_CONNECT_POINT.toString() + "\"}";
- json += "]}";
+ private void provisionFabric(VlanId vlanId, ConnectPoint point) {
+ //String json = "{\"vlan\":" + vlanId + ",\"ports\":[";
+ //json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\""
+ // + FABRIC_OLT_CONNECT_POINT.toString() + "\"},";
+ //json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\""
+ // + FABRIC_VCPE_CONNECT_POINT.toString() + "\"}";
+ //json += "]}";
+
+ JsonObject node = new JsonObject();
+ node.add("vlan", vlanId.toShort());
+ JsonArray array = new JsonArray();
+ JsonObject cp1 = new JsonObject();
+ JsonObject cp2 = new JsonObject();
+ cp1.add("device", point.deviceId().toString());
+ cp1.add("port", point.port().toLong());
+ cp2.add("device", FABRIC_DEVICE_ID.toString());
+ cp2.add("port", FABRIC_OLT_CONNECT_POINT.toString());
+ array.add(cp1);
+ array.add(cp2);
+ node.add("ports", array);
+
String baseUrl = "http://" + FABRIC_CONTROLLER_ADDRESS + ":"
+ Integer.toString(FABRIC_SERVER_PORT);
@@ -391,7 +432,7 @@
.type(JSON_UTF_8.toString());
try {
- builder.post(ClientResponse.class, json);
+ builder.post(ClientResponse.class, node);
} catch (ClientHandlerException e) {
log.warn("Unable to contact fabric REST server:", e.getMessage());
return;