Committed by
Gerrit Code Review
tying up the apps - when auth is successful connectivity happens
Change-Id: Ic8d60b9421580af9168855d7bc553a0b19a5f0ca
Showing
1 changed file
with
57 additions
and
16 deletions
| ... | @@ -17,6 +17,7 @@ package org.onosproject.xosintegration; | ... | @@ -17,6 +17,7 @@ package org.onosproject.xosintegration; |
| 17 | 17 | ||
| 18 | import com.eclipsesource.json.JsonArray; | 18 | import com.eclipsesource.json.JsonArray; |
| 19 | import com.eclipsesource.json.JsonObject; | 19 | import com.eclipsesource.json.JsonObject; |
| 20 | +import com.google.common.collect.Maps; | ||
| 20 | import com.sun.jersey.api.client.Client; | 21 | import com.sun.jersey.api.client.Client; |
| 21 | import com.sun.jersey.api.client.ClientHandlerException; | 22 | import com.sun.jersey.api.client.ClientHandlerException; |
| 22 | import com.sun.jersey.api.client.ClientResponse; | 23 | import com.sun.jersey.api.client.ClientResponse; |
| ... | @@ -49,15 +50,14 @@ import org.osgi.service.component.ComponentContext; | ... | @@ -49,15 +50,14 @@ import org.osgi.service.component.ComponentContext; |
| 49 | import org.slf4j.Logger; | 50 | import org.slf4j.Logger; |
| 50 | 51 | ||
| 51 | import java.util.Dictionary; | 52 | import java.util.Dictionary; |
| 53 | +import java.util.Map; | ||
| 52 | import java.util.Set; | 54 | import java.util.Set; |
| 53 | import java.util.stream.Collectors; | 55 | import java.util.stream.Collectors; |
| 54 | import java.util.stream.IntStream; | 56 | import java.util.stream.IntStream; |
| 55 | 57 | ||
| 56 | import static com.google.common.base.Strings.isNullOrEmpty; | 58 | import static com.google.common.base.Strings.isNullOrEmpty; |
| 57 | import static com.google.common.net.MediaType.JSON_UTF_8; | 59 | import static com.google.common.net.MediaType.JSON_UTF_8; |
| 58 | -import static java.net.HttpURLConnection.HTTP_CREATED; | 60 | +import static java.net.HttpURLConnection.*; |
| 59 | -import static java.net.HttpURLConnection.HTTP_NO_CONTENT; | ||
| 60 | -import static java.net.HttpURLConnection.HTTP_OK; | ||
| 61 | import static org.slf4j.LoggerFactory.getLogger; | 61 | import static org.slf4j.LoggerFactory.getLogger; |
| 62 | 62 | ||
| 63 | 63 | ||
| ... | @@ -116,12 +116,16 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -116,12 +116,16 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 116 | protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE; | 116 | protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE; |
| 117 | 117 | ||
| 118 | private ApplicationId appId; | 118 | private ApplicationId appId; |
| 119 | + private Map<String, ConnectPoint> nodeToPort; | ||
| 119 | 120 | ||
| 120 | @Activate | 121 | @Activate |
| 121 | public void activate(ComponentContext context) { | 122 | public void activate(ComponentContext context) { |
| 122 | log.info("XOS app is starting"); | 123 | log.info("XOS app is starting"); |
| 123 | cfgService.registerProperties(getClass()); | 124 | cfgService.registerProperties(getClass()); |
| 124 | appId = coreService.registerApplication("org.onosproject.xosintegration"); | 125 | appId = coreService.registerApplication("org.onosproject.xosintegration"); |
| 126 | + | ||
| 127 | + setupMap(); | ||
| 128 | + | ||
| 125 | readComponentConfiguration(context); | 129 | readComponentConfiguration(context); |
| 126 | 130 | ||
| 127 | log.info("XOS({}) started", appId.id()); | 131 | log.info("XOS({}) started", appId.id()); |
| ... | @@ -138,6 +142,16 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -138,6 +142,16 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 138 | readComponentConfiguration(context); | 142 | readComponentConfiguration(context); |
| 139 | } | 143 | } |
| 140 | 144 | ||
| 145 | + private void setupMap() { | ||
| 146 | + nodeToPort = Maps.newHashMap(); | ||
| 147 | + | ||
| 148 | + nodeToPort.put("cordcompute01.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, | ||
| 149 | + PortNumber.portNumber(4))); | ||
| 150 | + | ||
| 151 | + nodeToPort.put("cordcompute02.onlab.us", new ConnectPoint(FABRIC_DEVICE_ID, | ||
| 152 | + PortNumber.portNumber(3))); | ||
| 153 | + } | ||
| 154 | + | ||
| 141 | /** | 155 | /** |
| 142 | * Converts a JSON representation of a tenant into a tenant object. | 156 | * Converts a JSON representation of a tenant into a tenant object. |
| 143 | * | 157 | * |
| ... | @@ -237,7 +251,7 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -237,7 +251,7 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 237 | * @param json JSON string to post | 251 | * @param json JSON string to post |
| 238 | */ | 252 | */ |
| 239 | @Deprecated | 253 | @Deprecated |
| 240 | - private void postRest(String json) { | 254 | + private String postRest(String json) { |
| 241 | WebResource.Builder builder = getClientBuilder(); | 255 | WebResource.Builder builder = getClientBuilder(); |
| 242 | ClientResponse response; | 256 | ClientResponse response; |
| 243 | 257 | ||
| ... | @@ -245,13 +259,14 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -245,13 +259,14 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 245 | response = builder.post(ClientResponse.class, json); | 259 | response = builder.post(ClientResponse.class, json); |
| 246 | } catch (ClientHandlerException e) { | 260 | } catch (ClientHandlerException e) { |
| 247 | log.warn("Unable to contact REST server: {}", e.getMessage()); | 261 | log.warn("Unable to contact REST server: {}", e.getMessage()); |
| 248 | - return; | 262 | + return "{ 'error' : 'oops no one home' }"; |
| 249 | } | 263 | } |
| 250 | 264 | ||
| 251 | if (response.getStatus() != HTTP_CREATED) { | 265 | if (response.getStatus() != HTTP_CREATED) { |
| 252 | log.info("REST POST request returned error code {}", | 266 | log.info("REST POST request returned error code {}", |
| 253 | response.getStatus()); | 267 | response.getStatus()); |
| 254 | } | 268 | } |
| 269 | + return response.getEntity(String.class); | ||
| 255 | } | 270 | } |
| 256 | 271 | ||
| 257 | /** | 272 | /** |
| ... | @@ -310,15 +325,27 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -310,15 +325,27 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 310 | .build(); | 325 | .build(); |
| 311 | String json = tenantToJson(tenantToCreate); | 326 | String json = tenantToJson(tenantToCreate); |
| 312 | 327 | ||
| 313 | - provisionDataPlane(tenantToCreate); | 328 | + //provisionDataPlane(tenantToCreate); |
| 314 | 329 | ||
| 315 | - postRest(json); | 330 | + String retJson = postRest(json); |
| 316 | 331 | ||
| 317 | - provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId()))); | 332 | + fetchCPELocation(newTenant, retJson); |
| 318 | 333 | ||
| 319 | return newTenant; | 334 | return newTenant; |
| 320 | } | 335 | } |
| 321 | 336 | ||
| 337 | + private void fetchCPELocation(VoltTenant newTenant, String jsonString) { | ||
| 338 | + JsonObject json = JsonObject.readFrom(jsonString); | ||
| 339 | + | ||
| 340 | + if (json.get("computeNodeName") != null) { | ||
| 341 | + ConnectPoint point = nodeToPort.get(json.get("computeNodeName")); | ||
| 342 | + | ||
| 343 | + provisionFabric(VlanId.vlanId(Short.parseShort(newTenant.vlanId())), | ||
| 344 | + point); | ||
| 345 | + } | ||
| 346 | + | ||
| 347 | + } | ||
| 348 | + | ||
| 322 | @Override | 349 | @Override |
| 323 | public VoltTenant getTenant(long id) { | 350 | public VoltTenant getTenant(long id) { |
| 324 | String jsonString = getRest(Long.toString(id)); | 351 | String jsonString = getRest(Long.toString(id)); |
| ... | @@ -375,13 +402,27 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -375,13 +402,27 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 375 | flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToGateway); | 402 | flowObjectiveService.forward(FABRIC_PORT.deviceId(), forwardToGateway); |
| 376 | } | 403 | } |
| 377 | 404 | ||
| 378 | - private void provisionFabric(VlanId vlanId) { | 405 | + private void provisionFabric(VlanId vlanId, ConnectPoint point) { |
| 379 | - String json = "{\"vlan\":" + vlanId + ",\"ports\":["; | 406 | + //String json = "{\"vlan\":" + vlanId + ",\"ports\":["; |
| 380 | - json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\"" | 407 | + //json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\"" |
| 381 | - + FABRIC_OLT_CONNECT_POINT.toString() + "\"},"; | 408 | + // + FABRIC_OLT_CONNECT_POINT.toString() + "\"},"; |
| 382 | - json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\"" | 409 | + //json += "{\"device\":\"" + FABRIC_DEVICE_ID.toString() + "\",\"port\":\"" |
| 383 | - + FABRIC_VCPE_CONNECT_POINT.toString() + "\"}"; | 410 | + // + FABRIC_VCPE_CONNECT_POINT.toString() + "\"}"; |
| 384 | - json += "]}"; | 411 | + //json += "]}"; |
| 412 | + | ||
| 413 | + JsonObject node = new JsonObject(); | ||
| 414 | + node.add("vlan", vlanId.toShort()); | ||
| 415 | + JsonArray array = new JsonArray(); | ||
| 416 | + JsonObject cp1 = new JsonObject(); | ||
| 417 | + JsonObject cp2 = new JsonObject(); | ||
| 418 | + cp1.add("device", point.deviceId().toString()); | ||
| 419 | + cp1.add("port", point.port().toLong()); | ||
| 420 | + cp2.add("device", FABRIC_DEVICE_ID.toString()); | ||
| 421 | + cp2.add("port", FABRIC_OLT_CONNECT_POINT.toString()); | ||
| 422 | + array.add(cp1); | ||
| 423 | + array.add(cp2); | ||
| 424 | + node.add("ports", array); | ||
| 425 | + | ||
| 385 | 426 | ||
| 386 | String baseUrl = "http://" + FABRIC_CONTROLLER_ADDRESS + ":" | 427 | String baseUrl = "http://" + FABRIC_CONTROLLER_ADDRESS + ":" |
| 387 | + Integer.toString(FABRIC_SERVER_PORT); | 428 | + Integer.toString(FABRIC_SERVER_PORT); |
| ... | @@ -391,7 +432,7 @@ public class OnosXOSIntegrationManager implements VoltTenantService { | ... | @@ -391,7 +432,7 @@ public class OnosXOSIntegrationManager implements VoltTenantService { |
| 391 | .type(JSON_UTF_8.toString()); | 432 | .type(JSON_UTF_8.toString()); |
| 392 | 433 | ||
| 393 | try { | 434 | try { |
| 394 | - builder.post(ClientResponse.class, json); | 435 | + builder.post(ClientResponse.class, node); |
| 395 | } catch (ClientHandlerException e) { | 436 | } catch (ClientHandlerException e) { |
| 396 | log.warn("Unable to contact fabric REST server:", e.getMessage()); | 437 | log.warn("Unable to contact fabric REST server:", e.getMessage()); |
| 397 | return; | 438 | return; | ... | ... |
-
Please register or login to post a comment