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)
Showing
2 changed files
with
13 additions
and
10 deletions
| ... | @@ -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(); | ... | ... |
-
Please register or login to post a comment