lishuai

[ONOS-4562] Support flat and vlan network which has not segmentationId.

Change-Id: I06babd1d4a123146e4ef53caa90658d5f58dac16
...@@ -29,6 +29,7 @@ import org.onosproject.vtnrsc.TenantNetwork; ...@@ -29,6 +29,7 @@ import org.onosproject.vtnrsc.TenantNetwork;
29 import org.onosproject.vtnrsc.TenantNetwork.State; 29 import org.onosproject.vtnrsc.TenantNetwork.State;
30 import org.onosproject.vtnrsc.TenantNetwork.Type; 30 import org.onosproject.vtnrsc.TenantNetwork.Type;
31 import org.onosproject.vtnrsc.TenantNetworkId; 31 import org.onosproject.vtnrsc.TenantNetworkId;
32 +import org.onosproject.vtnrsc.service.VtnRscService;
32 import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; 33 import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
33 import org.onosproject.vtnweb.web.TenantNetworkCodec; 34 import org.onosproject.vtnweb.web.TenantNetworkCodec;
34 import org.slf4j.Logger; 35 import org.slf4j.Logger;
...@@ -278,11 +279,16 @@ public class TenantNetworkWebResource extends AbstractWebResource { ...@@ -278,11 +279,16 @@ public class TenantNetworkWebResource extends AbstractWebResource {
278 boolean adminStateUp = node.get("admin_state_up").asBoolean(); 279 boolean adminStateUp = node.get("admin_state_up").asBoolean();
279 String state = node.get("status").asText(); 280 String state = node.get("status").asText();
280 boolean shared = node.get("shared").asBoolean(); 281 boolean shared = node.get("shared").asBoolean();
281 - String tenantId = node.get("tenant_id").asText(); 282 + String tenantIdStr = node.get("tenant_id").asText();
282 boolean routerExternal = node.get("router:external").asBoolean(); 283 boolean routerExternal = node.get("router:external").asBoolean();
283 String type = node.get("provider:network_type").asText(); 284 String type = node.get("provider:network_type").asText();
284 String physicalNetwork = node.get("provider:physical_network").asText(); 285 String physicalNetwork = node.get("provider:physical_network").asText();
285 - String segmentationId = node.get("provider:segmentation_id").asText(); 286 + String segmentationIdStr = node.get("provider:segmentation_id").asText();
287 + SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr);
288 + TenantId tenantId = TenantId.tenantId(tenantIdStr);
289 + if (segmentationIdStr == null || segmentationIdStr.equals("null")) {
290 + segmentationId = get(VtnRscService.class).getL3vni(tenantId);
291 + }
286 TenantNetworkId id = null; 292 TenantNetworkId id = null;
287 if (flag.equals(CREATE_NETWORK)) { 293 if (flag.equals(CREATE_NETWORK)) {
288 id = TenantNetworkId.networkId(node.get("id").asText()); 294 id = TenantNetworkId.networkId(node.get("id").asText());
...@@ -295,13 +301,12 @@ public class TenantNetworkWebResource extends AbstractWebResource { ...@@ -295,13 +301,12 @@ public class TenantNetworkWebResource extends AbstractWebResource {
295 adminStateUp, 301 adminStateUp,
296 isState(state), 302 isState(state),
297 shared, 303 shared,
298 - TenantId.tenantId(tenantId), 304 + tenantId,
299 routerExternal, 305 routerExternal,
300 isType(type), 306 isType(type),
301 PhysicalNetwork 307 PhysicalNetwork
302 .physicalNetwork(physicalNetwork), 308 .physicalNetwork(physicalNetwork),
303 - SegmentationId 309 + segmentationId);
304 - .segmentationId(segmentationId));
305 networksMap.putIfAbsent(id, network); 310 networksMap.putIfAbsent(id, network);
306 311
307 return Collections.unmodifiableCollection(networksMap.values()); 312 return Collections.unmodifiableCollection(networksMap.values());
...@@ -324,23 +329,28 @@ public class TenantNetworkWebResource extends AbstractWebResource { ...@@ -324,23 +329,28 @@ public class TenantNetworkWebResource extends AbstractWebResource {
324 boolean adminStateUp = node.get("admin_state_up").asBoolean(); 329 boolean adminStateUp = node.get("admin_state_up").asBoolean();
325 String state = node.get("status").asText(); 330 String state = node.get("status").asText();
326 boolean shared = node.get("shared").asBoolean(); 331 boolean shared = node.get("shared").asBoolean();
327 - String tenantId = node.get("tenant_id").asText(); 332 + String tenantIdStr = node.get("tenant_id").asText();
328 boolean routerExternal = node.get("router:external") 333 boolean routerExternal = node.get("router:external")
329 .asBoolean(); 334 .asBoolean();
330 String type = node.get("provider:network_type").asText(); 335 String type = node.get("provider:network_type").asText();
331 String physicalNetwork = node.get("provider:physical_network").asText(); 336 String physicalNetwork = node.get("provider:physical_network").asText();
332 - String segmentationId = node.get("provider:segmentation_id").asText(); 337 + String segmentationIdStr = node.get("provider:segmentation_id").asText();
338 + SegmentationId segmentationId = SegmentationId.segmentationId(segmentationIdStr);
339 + TenantId tenantId = TenantId.tenantId(tenantIdStr);
340 + if (segmentationIdStr == null || segmentationIdStr.equals("null")) {
341 + segmentationId = get(VtnRscService.class).getL3vni(tenantId);
342 + }
333 network = new DefaultTenantNetwork( 343 network = new DefaultTenantNetwork(
334 TenantNetworkId.networkId(id), 344 TenantNetworkId.networkId(id),
335 name, 345 name,
336 adminStateUp, 346 adminStateUp,
337 isState(state), 347 isState(state),
338 shared, 348 shared,
339 - TenantId.tenantId(tenantId), 349 + tenantId,
340 routerExternal, 350 routerExternal,
341 isType(type), 351 isType(type),
342 PhysicalNetwork.physicalNetwork(physicalNetwork), 352 PhysicalNetwork.physicalNetwork(physicalNetwork),
343 - SegmentationId.segmentationId(segmentationId)); 353 + segmentationId);
344 networksMap.putIfAbsent(TenantNetworkId.networkId(id), network); 354 networksMap.putIfAbsent(TenantNetworkId.networkId(id), network);
345 } 355 }
346 356
......