sangho
Committed by Jonathan Hart

[ONOS-4280] Allow to add a subnet to external network after the external network is used in routers

Change-Id: Idc41e64c21b9b36422bba67b48027c8a7f337a70
(cherry picked from commit efbc0389)
...@@ -233,10 +233,7 @@ public class OpenstackRoutingManager implements OpenstackRoutingService { ...@@ -233,10 +233,7 @@ public class OpenstackRoutingManager implements OpenstackRoutingService {
233 @Override 233 @Override
234 public void updateRouter(OpenstackRouter openstackRouter) { 234 public void updateRouter(OpenstackRouter openstackRouter) {
235 if (openstackRouter.gatewayExternalInfo().externalFixedIps().size() > 0) { 235 if (openstackRouter.gatewayExternalInfo().externalFixedIps().size() > 0) {
236 - Ip4Address externalIp = openstackRouter.gatewayExternalInfo().externalFixedIps() 236 + checkExternalConnection(openstackRouter, getOpenstackRouterInterface(openstackRouter));
237 - .values().stream().findFirst().orElse(null);
238 - OpenstackRouter router = getRouterfromExternalIp(externalIp);
239 - checkExternalConnection(router, getOpenstackRouterInterface(router));
240 } else { 237 } else {
241 unsetExternalConnection(); 238 unsetExternalConnection();
242 } 239 }
......
...@@ -41,7 +41,6 @@ import static com.google.common.base.Preconditions.checkNotNull; ...@@ -41,7 +41,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
41 /** 41 /**
42 * Handles REST API call of Neturon L3 plugin. 42 * Handles REST API call of Neturon L3 plugin.
43 */ 43 */
44 -
45 @Path("routers") 44 @Path("routers")
46 public class OpensatckRouterWebResource extends AbstractWebResource { 45 public class OpensatckRouterWebResource extends AbstractWebResource {
47 private final Logger log = LoggerFactory.getLogger(getClass()); 46 private final Logger log = LoggerFactory.getLogger(getClass());
...@@ -81,18 +80,25 @@ public class OpensatckRouterWebResource extends AbstractWebResource { ...@@ -81,18 +80,25 @@ public class OpensatckRouterWebResource extends AbstractWebResource {
81 @Path("{id}") 80 @Path("{id}")
82 @Consumes(MediaType.APPLICATION_JSON) 81 @Consumes(MediaType.APPLICATION_JSON)
83 @Produces(MediaType.APPLICATION_JSON) 82 @Produces(MediaType.APPLICATION_JSON)
84 - public Response updateRouter(InputStream input) { 83 + public Response updateRouter(@PathParam("id") String id, InputStream input) {
85 checkNotNull(input); 84 checkNotNull(input);
86 try { 85 try {
87 ObjectMapper mapper = new ObjectMapper(); 86 ObjectMapper mapper = new ObjectMapper();
88 ObjectNode routerNode = (ObjectNode) mapper.readTree(input); 87 ObjectNode routerNode = (ObjectNode) mapper.readTree(input);
89 88
90 - OpenstackRouter openstackRouter 89 + OpenstackRouter or = ROUTER_CODEC.decode(routerNode, this);
91 - = ROUTER_CODEC.decode(routerNode, this); 90 +
91 + OpenstackRouter.Builder osBuilder = new OpenstackRouter.Builder()
92 + .tenantId(or.tenantId())
93 + .id(id)
94 + .name(or.name())
95 + .status(OpenstackRouter.RouterStatus.ACTIVE)
96 + .adminStateUp(Boolean.valueOf(or.adminStateUp()))
97 + .gatewayExternalInfo(or.gatewayExternalInfo());
92 98
93 OpenstackRoutingService routingService 99 OpenstackRoutingService routingService
94 = getService(OpenstackRoutingService.class); 100 = getService(OpenstackRoutingService.class);
95 - routingService.updateRouter(openstackRouter); 101 + routingService.updateRouter(osBuilder.build());
96 102
97 log.debug("REST API UPDATE router is called from router {}", input.toString()); 103 log.debug("REST API UPDATE router is called from router {}", input.toString());
98 return Response.status(Response.Status.OK).build(); 104 return Response.status(Response.Status.OK).build();
...@@ -108,7 +114,7 @@ public class OpensatckRouterWebResource extends AbstractWebResource { ...@@ -108,7 +114,7 @@ public class OpensatckRouterWebResource extends AbstractWebResource {
108 @Path("{id}/add_router_interface") 114 @Path("{id}/add_router_interface")
109 @Consumes(MediaType.APPLICATION_JSON) 115 @Consumes(MediaType.APPLICATION_JSON)
110 @Produces(MediaType.APPLICATION_JSON) 116 @Produces(MediaType.APPLICATION_JSON)
111 - public Response addRouterInterface(InputStream input) { 117 + public Response addRouterInterface(@PathParam("id") String id, InputStream input) {
112 checkNotNull(input); 118 checkNotNull(input);
113 try { 119 try {
114 ObjectMapper mapper = new ObjectMapper(); 120 ObjectMapper mapper = new ObjectMapper();
......