Strip hardcoded v2.0 in Neutron APIs. Prefer usage of ApiMetadata version string.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/commit/92112318 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/92112318 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/92112318 Branch: refs/heads/master Commit: 92112318c14e7d779463b57f4701d19736f00297 Parents: 23a293e Author: Jeremy Daggett <[email protected]> Authored: Fri Aug 22 10:44:35 2014 -0700 Committer: Jeremy Daggett <[email protected]> Committed: Tue Aug 26 14:05:12 2014 -0700 ---------------------------------------------------------------------- .../openstack/neutron/v2/NeutronApi.java | 4 + .../neutron/v2/NeutronApiMetadata.java | 2 +- .../neutron/v2/extensions/RouterApi.java | 2 +- .../neutron/v2/features/NetworkApi.java | 2 +- .../openstack/neutron/v2/features/PortApi.java | 2 +- .../neutron/v2/features/SubnetApi.java | 2 +- .../v2/extensions/RouterApiLiveTest.java | 173 +++++ .../v2/extensions/RouterApiMockTest.java | 631 +++++++++++++++++++ .../v2/features/ExtensionApiLiveTest.java | 83 +++ .../v2/features/ExtensionApiMockTest.java | 152 +++++ .../neutron/v2/features/RouterApiLiveTest.java | 171 ----- .../neutron/v2/features/RouterApiMockTest.java | 631 ------------------- .../v2/internal/BaseNeutronApiMockTest.java | 8 +- .../src/test/resources/extension_details.json | 10 + .../src/test/resources/extension_list.json | 140 ++++ .../swift/v1/features/ObjectApiLiveTest.java | 4 - .../swift/v1/features/ObjectApiMockTest.java | 2 - 17 files changed, 1202 insertions(+), 817 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java index 29a75e1..233c41b 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java @@ -19,6 +19,9 @@ package org.jclouds.openstack.neutron.v2; import java.io.Closeable; import java.util.Set; +import javax.ws.rs.Path; + +import org.jclouds.Constants; import org.jclouds.location.Region; import org.jclouds.location.functions.RegionToEndpoint; import org.jclouds.openstack.neutron.v2.extensions.RouterApi; @@ -35,6 +38,7 @@ import com.google.inject.Provides; /** * Provides access to the OpenStack Networking (Neutron) v2 API. */ +@Path("{" + Constants.PROPERTY_API_VERSION + "}") public interface NeutronApi extends Closeable { /** * @return the Region codes configured http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java index d11cbb7..043bed8 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java @@ -70,7 +70,7 @@ public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> { .credentialName("${password}") .endpointName("Neutron base url ending in /v2.0/") .documentation(URI.create("http://docs.openstack.org/api/openstack-network/2.0/content/")) - .version("2.0") + .version("v2.0") .defaultEndpoint("http://localhost:5000/v2.0/") .defaultProperties(NeutronApiMetadata.defaultProperties()) .defaultModules(ImmutableSet.<Class<? extends Module>>builder() http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java index 376cdea..37cc282 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java @@ -61,7 +61,7 @@ import com.google.common.annotations.Beta; * "http://docs.openstack.org/api/openstack-network/2.0/content/router_ext.html">api doc</a> */ @Beta -@Path("/v2.0/routers") +@Path("/routers") @RequestFilters(AuthenticateRequest.class) @Consumes(MediaType.APPLICATION_JSON) public interface RouterApi { http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java index 6ab6fc9..769ae1f 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java @@ -58,7 +58,7 @@ import javax.ws.rs.core.MediaType; * "http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a> */ @Beta -@Path("/v2.0/networks") +@Path("/networks") @RequestFilters(AuthenticateRequest.class) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java index dabdc86..30cdacc 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java @@ -57,7 +57,7 @@ import java.util.List; * "http://docs.openstack.org/api/openstack-network/2.0/content/Ports.html">api doc</a> */ @Beta -@Path("/v2.0/ports") +@Path("/ports") @RequestFilters(AuthenticateRequest.class) @Consumes(MediaType.APPLICATION_JSON) public interface PortApi { http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java index a3aec61..3484e4a 100644 --- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java +++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java @@ -53,7 +53,7 @@ import java.util.List; * @see <a href= * "http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a> */ -@Path("/v2.0/subnets") +@Path("/subnets") @RequestFilters(AuthenticateRequest.class) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java new file mode 100644 index 0000000..5f06195 --- /dev/null +++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java @@ -0,0 +1,173 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jclouds.openstack.neutron.v2.extensions; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; + +import java.util.Set; + +import org.jclouds.openstack.neutron.v2.domain.ExternalGatewayInfo; +import org.jclouds.openstack.neutron.v2.domain.Network; +import org.jclouds.openstack.neutron.v2.domain.NetworkType; +import org.jclouds.openstack.neutron.v2.domain.Port; +import org.jclouds.openstack.neutron.v2.domain.Router; +import org.jclouds.openstack.neutron.v2.domain.RouterInterface; +import org.jclouds.openstack.neutron.v2.domain.Subnet; +import org.jclouds.openstack.neutron.v2.features.NetworkApi; +import org.jclouds.openstack.neutron.v2.features.PortApi; +import org.jclouds.openstack.neutron.v2.features.SubnetApi; +import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest; +import org.testng.annotations.Test; + +/** + * Tests parsing and Guice wiring of RouterApi + */ +@Test(groups = "live", testName = "RouterApiLiveTest") +public class RouterApiLiveTest extends BaseNeutronApiLiveTest { + + public void testCreateUpdateAndDeleteRouter() { + for (String region : api.getConfiguredRegions()) { + RouterApi routerApi = api.getRouterExtensionApi(region).get(); + NetworkApi networkApi = api.getNetworkApi(region); + SubnetApi subnetApi = api.getSubnetApi(region); + + Network network = networkApi.create( + Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); + assertNotNull(network); + + Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); + assertNotNull(subnet); + + Router router = routerApi.create(Router.createOptions().name("jclouds-router-test") + .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build()); + assertNotNull(router); + + /* List and Get test */ + Set<Router> routers = api.getRouterExtensionApi(region).get().list().concat().toSet(); + Router routerList = routers.iterator().next(); + Router routerGet = api.getRouterExtensionApi(region).get().get(routerList.getId()); + + assertNotNull(routerGet); + assertEquals(routerGet, routerList); + /***/ + + routerGet = routerApi.get(router.getId()); + + assertEquals(routerGet.getName(), router.getName()); + assertEquals(routerGet.getId(), router.getId()); + assertEquals(routerGet.getExternalGatewayInfo(), router.getExternalGatewayInfo()); + + Router routerUpdate = routerApi.update(router.getId(), Router.updateOptions().name("jclouds-router-test-rename").build()); + assertNotNull(routerUpdate); + assertEquals(routerUpdate.getName(), "jclouds-router-test-rename"); + + routerGet = routerApi.get(router.getId()); + + assertEquals(routerGet.getId(), router.getId()); + assertEquals(routerGet.getName(), "jclouds-router-test-rename"); + + assertTrue(routerApi.delete(router.getId())); + assertTrue(subnetApi.delete(subnet.getId())); + assertTrue(networkApi.delete(network.getId())); + } + } + + public void testCreateAndDeleteRouterInterfaceForSubnet() { + for (String region : api.getConfiguredRegions()) { + RouterApi routerApi = api.getRouterExtensionApi(region).get(); + NetworkApi networkApi = api.getNetworkApi(region); + SubnetApi subnetApi = api.getSubnetApi(region); + + Network network = networkApi.create(Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); + assertNotNull(network); + + Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); + assertNotNull(subnet); + + Network network2 = networkApi.create(Network.createOptions("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build()); + assertNotNull(network2); + + Subnet subnet2 = subnetApi.create(Subnet.createOptions(network2.getId(), "192.169.0.0/16").ipVersion(4).build()); + assertNotNull(subnet2); + + Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build()); + assertNotNull(router); + + RouterInterface routerInterface = routerApi.addInterfaceForSubnet(router.getId(), subnet.getId()); + assertNotNull(routerInterface); + + RouterInterface routerInterface2 = routerApi.addInterfaceForSubnet(router.getId(), subnet2.getId()); + assertNotNull(routerInterface2); + + assertTrue(routerApi.removeInterfaceForSubnet(router.getId(), subnet.getId())); + assertTrue(routerApi.removeInterfaceForSubnet(router.getId(), subnet2.getId())); + assertTrue(routerApi.delete(router.getId())); + assertTrue(subnetApi.delete(subnet.getId())); + assertTrue(networkApi.delete(network.getId())); + assertTrue(subnetApi.delete(subnet2.getId())); + assertTrue(networkApi.delete(network2.getId())); + } + } + + public void testCreateAndDeleteRouterInterfaceForPort() { + for (String region : api.getConfiguredRegions()) { + RouterApi routerApi = api.getRouterExtensionApi(region).get(); + NetworkApi networkApi = api.getNetworkApi(region); + SubnetApi subnetApi = api.getSubnetApi(region); + PortApi portApi = api.getPortApi(region); + + Network network = networkApi.create(Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); + assertNotNull(network); + + Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); + assertNotNull(subnet); + + Network network2 = networkApi.create(Network.createOptions("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build()); + assertNotNull(network2); + + Subnet subnet2 = subnetApi.create(Subnet.createOptions(network2.getId(), "192.169.0.0/16").ipVersion(4).build()); + assertNotNull(subnet2); + + Port port = portApi.create(Port.createOptions(network.getId()).build()); + assertNotNull(port); + + Port port2 = portApi.create(Port.createOptions(network2.getId()).build()); + assertNotNull(port2); + + Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build()); + assertNotNull(router); + + RouterInterface routerInterface = routerApi.addInterfaceForPort(router.getId(), port.getId()); + assertNotNull(routerInterface); + + RouterInterface routerInterface2 = routerApi.addInterfaceForPort(router.getId(), port2.getId()); + assertNotNull(routerInterface2); + + assertTrue(routerApi.removeInterfaceForPort(router.getId(), port.getId())); + assertTrue(routerApi.removeInterfaceForPort(router.getId(), port2.getId())); + assertTrue(routerApi.delete(router.getId())); + assertTrue(subnetApi.delete(subnet.getId())); + assertTrue(networkApi.delete(network.getId())); + assertTrue(subnetApi.delete(subnet2.getId())); + assertTrue(networkApi.delete(network2.getId())); + } + } + +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java new file mode 100644 index 0000000..0d16f39 --- /dev/null +++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java @@ -0,0 +1,631 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.openstack.neutron.v2.extensions; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.List; + +import org.jclouds.openstack.neutron.v2.NeutronApi; +import org.jclouds.openstack.neutron.v2.domain.ExternalGatewayInfo; +import org.jclouds.openstack.neutron.v2.domain.NetworkStatus; +import org.jclouds.openstack.neutron.v2.domain.Router; +import org.jclouds.openstack.neutron.v2.domain.RouterInterface; +import org.jclouds.openstack.neutron.v2.domain.Routers; +import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest; +import org.jclouds.openstack.v2_0.options.PaginationOptions; +import org.jclouds.rest.ResourceNotFoundException; +import org.testng.annotations.Test; + +import com.squareup.okhttp.mockwebserver.MockResponse; +import com.squareup.okhttp.mockwebserver.MockWebServer; + +/** + * Tests NetworkApi Guice wiring and parsing + * + */ +@Test +public class RouterApiMockTest extends BaseNeutronApiMockTest { + + public void testCreateRouter() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_create_response.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true) + .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) + .build(); + + Router router = api.create(createRouter); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "POST", "/v2.0/routers", "/router_create_request.json"); + + /* + * Check response + */ + assertNotNull(router); + assertEquals(router.getName(), "another_router"); + assertEquals(router.getExternalGatewayInfo().getNetworkId(), "8ca37218-28ff-41cb-9b10-039601ea7e6b"); + assertEquals(router.getStatus(), NetworkStatus.ACTIVE); + assertEquals(router.isAdminStateUp().booleanValue(), true); + assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e"); + assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3"); + } finally { + server.shutdown(); + } + } + + @Test(expectedExceptions = ResourceNotFoundException.class) + public void testCreateRouterFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true) + .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) + .build(); + + Router router = api.create(createRouter); + fail("Should have failed with not found exception"); + + } finally { + server.shutdown(); + } + } + + public void testListSpecificPagePort() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged1.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Routers routers = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg")); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg"); + + /* + * Check response + */ + assertNotNull(routers); + assertEquals(routers.size(), 2); + assertEquals(routers.first().get().getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); + } finally { + server.shutdown(); + } + } + + public void testListSpecificPagePortFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Routers routers = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg")); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg"); + + /* + * Check response + */ + assertNotNull(routers); + assertTrue(routers.isEmpty()); + } finally { + server.shutdown(); + } + } + + public void testListPagedRouter() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged1.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged2.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + // Note: Lazy! Have to actually look at the collection. + List<Router> routers = api.list().concat().toList(); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 3); + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers"); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718"); + + /* + * Check response + */ + assertNotNull(routers); + assertEquals(routers.size(), 4); + assertEquals(routers.get(0).getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); + assertEquals(routers.get(3).getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d_4"); + } finally { + server.shutdown(); + } + } + + public void testListPagedRouterFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + // Note: Lazy! Have to actually look at the collection. + List<Router> routers = api.list().concat().toList(); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 2); + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers"); + + /* + * Check response + */ + assertNotNull(routers); + assertTrue(routers.isEmpty()); + } finally { + server.shutdown(); + } + } + + public void testGetRouter() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_get_response.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router router = api.get("12345"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345"); + + /* + * Check response + */ + assertNotNull(router); + assertEquals(router.getName(), "router1"); + assertEquals(router.getExternalGatewayInfo().getNetworkId(), "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8"); + assertEquals(router.getStatus(), NetworkStatus.ACTIVE); + assertEquals(router.isAdminStateUp().booleanValue(), true); + assertEquals(router.getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); + assertEquals(router.getTenantId(), "33a40233088643acb66ff6eb0ebea679"); + } finally { + server.shutdown(); + } + } + + public void testGetRouterFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router router = api.get("12345"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345"); + + /* + * Check response + */ + assertNull(router); + } finally { + server.shutdown(); + } + } + + public void testUpdateRouter() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_update_response.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router.UpdateOptions updateOptions = Router.updateOptions() + .externalGatewayInfo( + ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) + .build(); + + Router router = api.update("12345", updateOptions); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json"); + + /* + * Check response + */ + assertNotNull(router); + assertEquals(router.getName(), "another_router"); + assertEquals(router.getExternalGatewayInfo().getNetworkId(), "8ca37218-28ff-41cb-9b10-039601ea7e6b"); + assertEquals(router.getStatus(), NetworkStatus.ACTIVE); + assertEquals(router.isAdminStateUp().booleanValue(), true); + assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e"); + assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3"); + } finally { + server.shutdown(); + } + } + + public void testUpdateRouterFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + Router.UpdateOptions updateOptions = Router.updateOptions() + .externalGatewayInfo( + ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) + .build(); + + Router router = api.update("12345", updateOptions); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json"); + + /* + * Check response + */ + assertNull(router); + } finally { + server.shutdown(); + } + } + + public void testDeleteRouter() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.delete("12345"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345"); + + /* + * Check response + */ + assertTrue(result); + } finally { + server.shutdown(); + } + } + + public void testDeleteRouterFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.delete("12345"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345"); + + /* + * Check response + */ + assertFalse(result); + } finally { + server.shutdown(); + } + } + + public void testAddRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json"); + + /* + * Check response + */ + assertNotNull(routerInterface); + assertEquals(routerInterface.getSubnetId(), "a2f1f29d-571b-4533-907f-5803ab96ead1"); + assertEquals(routerInterface.getPortId(), "3a44f4e5-1694-493a-a1fb-393881c673a4"); + } finally { + server.shutdown(); + } + } + + public void testAddRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json"); + + /* + * Check response + */ + assertNull(routerInterface); + } finally { + server.shutdown(); + } + } + + public void testAddRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + RouterInterface routerInterface = api.addInterfaceForPort("12345", "portid"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json"); + + /* + * Check response + */ + assertNotNull(routerInterface); + assertEquals(routerInterface.getSubnetId(), "a2f1f29d-571b-4533-907f-5803ab96ead1"); + assertEquals(routerInterface.getPortId(), "3a44f4e5-1694-493a-a1fb-393881c673a4"); + } finally { + server.shutdown(); + } + } + + public void testAddRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + RouterInterface routerInterface = api.addInterfaceForPort("12345", "portid"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json"); + + /* + * Check response + */ + assertNull(routerInterface); + } finally { + server.shutdown(); + } + } + + public void testRemoveRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.removeInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json"); + + /* + * Check response + */ + assertTrue(result); + } finally { + server.shutdown(); + } + } + + public void testRemoveRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.removeInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json"); + + /* + * Check response + */ + assertFalse(result); + } finally { + server.shutdown(); + } + } + + public void testRemoveRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(201))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.removeInterfaceForPort("12345", "portid"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json"); + + /* + * Check response + */ + assertTrue(result); + } finally { + server.shutdown(); + } + } + + public void testRemoveRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders( + new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); + + boolean result = api.removeInterfaceForPort("12345", "portid"); + + /* + * Check request + */ + assertAuthentication(server); + assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json"); + + /* + * Check response + */ + assertFalse(result); + } finally { + server.shutdown(); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java new file mode 100644 index 0000000..6dd729a --- /dev/null +++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.openstack.neutron.v2.features; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; + +import java.util.Set; + +import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest; +import org.jclouds.openstack.v2_0.domain.Extension; +import org.jclouds.openstack.v2_0.features.ExtensionApi; +import org.testng.annotations.Test; + +/** + * Tests behavior of {@link ExtensionApi} + */ +@Test(groups = "live", testName = "ExtensionApiLiveTest") +public class ExtensionApiLiveTest extends BaseNeutronApiLiveTest { + + /** + * Tests the listing of Neutron Extensions. + * + * @throws Exception + */ + public void testListExtensions() throws Exception { + for (String regionId : api.getConfiguredRegions()) { + ExtensionApi extensionApi = api.getExtensionApi(regionId); + Set<Extension> response = extensionApi.list(); + assertNotNull(response); + assertFalse(response.isEmpty()); + + for (Extension extension : response) { + assertNotNull(extension.getId()); + assertNotNull(extension.getName()); + assertNotNull(extension.getDescription()); + assertNotNull(extension.getNamespace()); + assertNotNull(extension.getUpdated()); + assertNotNull(extension.getLinks()); + } + } + } + + /** + * Tests retrieval of Neutron Extensions by their alias. + * + * @throws Exception + */ + public void testGetExtensionByAlias() throws Exception { + for (String regionId : api.getConfiguredRegions()) { + ExtensionApi extensionApi = api.getExtensionApi(regionId); + Set<Extension> response = extensionApi.list(); + assertNotNull(response); + + for (Extension extension : response) { + Extension details = extensionApi.get(extension.getId()); + assertNotNull(details); + assertEquals(details.getId(), extension.getId()); + assertEquals(details.getName(), extension.getName()); + assertEquals(details.getDescription(), extension.getDescription()); + assertEquals(details.getNamespace(), extension.getNamespace()); + assertEquals(details.getUpdated(), extension.getUpdated()); + assertEquals(details.getLinks(), extension.getLinks()); + } + } + } + +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java new file mode 100644 index 0000000..b9615d6 --- /dev/null +++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java @@ -0,0 +1,152 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.openstack.neutron.v2.features; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; + +import java.util.Set; + +import org.jclouds.openstack.neutron.v2.NeutronApi; +import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest; +import org.jclouds.openstack.v2_0.domain.Extension; +import org.jclouds.openstack.v2_0.features.ExtensionApi; +import org.testng.annotations.Test; + +import com.squareup.okhttp.mockwebserver.MockResponse; +import com.squareup.okhttp.mockwebserver.MockWebServer; + +/** + * Tests annotation parsing of {@code ExtensionApi} + */ +@Test(groups = "unit", testName = "ExtensionApiMockTest") +public class ExtensionApiMockTest extends BaseNeutronApiMockTest { + + public void testListExtensions() throws Exception { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse() + .setResponseCode(200).setBody(stringFromResource("/extension_list.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + ExtensionApi api = neutronApi.getExtensionApi("RegionOne"); + + Set<Extension> extensions = api.list(); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 2); + assertAuthentication(server); + assertExtensions(server, "/v2.0"); + + /* + * Check response + */ + assertNotNull(extensions); + assertEquals(extensions.size(), 17); + } finally { + server.shutdown(); + } + } + + public void testListExtensionsIsEmpty() throws Exception { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + ExtensionApi api = neutronApi.getExtensionApi("RegionOne"); + + Set<Extension> extensions = api.list(); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 2); + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/extensions"); + + /* + * Check response + */ + assertTrue(extensions.isEmpty()); + } finally { + server.shutdown(); + } + } + + public void testGetExtensionByAlias() throws Exception { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse() + .setResponseCode(200).setBody(stringFromResource("/extension_details.json")))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + + Extension routerExtension = neutronApi.getExtensionApi("RegionOne").get("router"); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 2); + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/extensions/router"); + + /* + * Check response + */ + assertNotNull(routerExtension); + assertEquals(routerExtension.getName(), "Neutron L3 Router"); + } finally { + server.shutdown(); + } + } + + public void testGetExtensionByAliasFail() throws Exception { + MockWebServer server = mockOpenStackServer(); + server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); + server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); + + try { + NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); + + Extension routerExtension = neutronApi.getExtensionApi("RegionOne").get("router"); + + /* + * Check request + */ + assertEquals(server.getRequestCount(), 2); + assertAuthentication(server); + assertRequest(server.takeRequest(), "GET", "/v2.0/extensions/router"); + + /* + * Check response + */ + assertNull(routerExtension); + } finally { + server.shutdown(); + } + + } + +} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiLiveTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiLiveTest.java deleted file mode 100644 index 4e364a5..0000000 --- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiLiveTest.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jclouds.openstack.neutron.v2.features; - -import org.jclouds.openstack.neutron.v2.domain.ExternalGatewayInfo; -import org.jclouds.openstack.neutron.v2.domain.Network; -import org.jclouds.openstack.neutron.v2.domain.NetworkType; -import org.jclouds.openstack.neutron.v2.domain.Port; -import org.jclouds.openstack.neutron.v2.domain.Router; -import org.jclouds.openstack.neutron.v2.domain.RouterInterface; -import org.jclouds.openstack.neutron.v2.domain.Subnet; -import org.jclouds.openstack.neutron.v2.extensions.RouterApi; -import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest; -import org.testng.annotations.Test; - -import java.util.Set; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -/** - * Tests parsing and Guice wiring of RouterApi - */ -@Test(groups = "live", testName = "RouterApiLiveTest") -public class RouterApiLiveTest extends BaseNeutronApiLiveTest { - - public void testCreateUpdateAndDeleteRouter() { - for (String region : api.getConfiguredRegions()) { - RouterApi routerApi = api.getRouterExtensionApi(region).get(); - NetworkApi networkApi = api.getNetworkApi(region); - SubnetApi subnetApi = api.getSubnetApi(region); - - Network network = networkApi.create( - Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); - assertNotNull(network); - - Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); - assertNotNull(subnet); - - Router router = routerApi.create(Router.createOptions().name("jclouds-router-test") - .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build()); - assertNotNull(router); - - /* List and Get test */ - Set<Router> routers = api.getRouterExtensionApi(region).get().list().concat().toSet(); - Router routerList = routers.iterator().next(); - Router routerGet = api.getRouterExtensionApi(region).get().get(routerList.getId()); - - assertNotNull(routerGet); - assertEquals(routerGet, routerList); - /***/ - - routerGet = routerApi.get(router.getId()); - - assertEquals(routerGet.getName(), router.getName()); - assertEquals(routerGet.getId(), router.getId()); - assertEquals(routerGet.getExternalGatewayInfo(), router.getExternalGatewayInfo()); - - Router routerUpdate = routerApi.update(router.getId(), Router.updateOptions().name("jclouds-router-test-rename").build()); - assertNotNull(routerUpdate); - assertEquals(routerUpdate.getName(), "jclouds-router-test-rename"); - - routerGet = routerApi.get(router.getId()); - - assertEquals(routerGet.getId(), router.getId()); - assertEquals(routerGet.getName(), "jclouds-router-test-rename"); - - assertTrue(routerApi.delete(router.getId())); - assertTrue(subnetApi.delete(subnet.getId())); - assertTrue(networkApi.delete(network.getId())); - } - } - - public void testCreateAndDeleteRouterInterfaceForSubnet() { - for (String region : api.getConfiguredRegions()) { - RouterApi routerApi = api.getRouterExtensionApi(region).get(); - NetworkApi networkApi = api.getNetworkApi(region); - SubnetApi subnetApi = api.getSubnetApi(region); - - Network network = networkApi.create(Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); - assertNotNull(network); - - Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); - assertNotNull(subnet); - - Network network2 = networkApi.create(Network.createOptions("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build()); - assertNotNull(network2); - - Subnet subnet2 = subnetApi.create(Subnet.createOptions(network2.getId(), "192.169.0.0/16").ipVersion(4).build()); - assertNotNull(subnet2); - - Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build()); - assertNotNull(router); - - RouterInterface routerInterface = routerApi.addInterfaceForSubnet(router.getId(), subnet.getId()); - assertNotNull(routerInterface); - - RouterInterface routerInterface2 = routerApi.addInterfaceForSubnet(router.getId(), subnet2.getId()); - assertNotNull(routerInterface2); - - assertTrue(routerApi.removeInterfaceForSubnet(router.getId(), subnet.getId())); - assertTrue(routerApi.removeInterfaceForSubnet(router.getId(), subnet2.getId())); - assertTrue(routerApi.delete(router.getId())); - assertTrue(subnetApi.delete(subnet.getId())); - assertTrue(networkApi.delete(network.getId())); - assertTrue(subnetApi.delete(subnet2.getId())); - assertTrue(networkApi.delete(network2.getId())); - } - } - - public void testCreateAndDeleteRouterInterfaceForPort() { - for (String region : api.getConfiguredRegions()) { - RouterApi routerApi = api.getRouterExtensionApi(region).get(); - NetworkApi networkApi = api.getNetworkApi(region); - SubnetApi subnetApi = api.getSubnetApi(region); - PortApi portApi = api.getPortApi(region); - - Network network = networkApi.create(Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build()); - assertNotNull(network); - - Subnet subnet = subnetApi.create(Subnet.createOptions(network.getId(), "192.168.0.0/16").ipVersion(4).build()); - assertNotNull(subnet); - - Network network2 = networkApi.create(Network.createOptions("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build()); - assertNotNull(network2); - - Subnet subnet2 = subnetApi.create(Subnet.createOptions(network2.getId(), "192.169.0.0/16").ipVersion(4).build()); - assertNotNull(subnet2); - - Port port = portApi.create(Port.createOptions(network.getId()).build()); - assertNotNull(port); - - Port port2 = portApi.create(Port.createOptions(network2.getId()).build()); - assertNotNull(port2); - - Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build()); - assertNotNull(router); - - RouterInterface routerInterface = routerApi.addInterfaceForPort(router.getId(), port.getId()); - assertNotNull(routerInterface); - - RouterInterface routerInterface2 = routerApi.addInterfaceForPort(router.getId(), port2.getId()); - assertNotNull(routerInterface2); - - assertTrue(routerApi.removeInterfaceForPort(router.getId(), port.getId())); - assertTrue(routerApi.removeInterfaceForPort(router.getId(), port2.getId())); - assertTrue(routerApi.delete(router.getId())); - assertTrue(subnetApi.delete(subnet.getId())); - assertTrue(networkApi.delete(network.getId())); - assertTrue(subnetApi.delete(subnet2.getId())); - assertTrue(networkApi.delete(network2.getId())); - } - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/92112318/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiMockTest.java ---------------------------------------------------------------------- diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiMockTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiMockTest.java deleted file mode 100644 index 0b2424c..0000000 --- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/RouterApiMockTest.java +++ /dev/null @@ -1,631 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.openstack.neutron.v2.features; - -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; -import org.jclouds.openstack.neutron.v2.NeutronApi; -import org.jclouds.openstack.neutron.v2.domain.ExternalGatewayInfo; -import org.jclouds.openstack.neutron.v2.domain.NetworkStatus; -import org.jclouds.openstack.neutron.v2.domain.Router; -import org.jclouds.openstack.neutron.v2.domain.RouterInterface; -import org.jclouds.openstack.neutron.v2.domain.Routers; -import org.jclouds.openstack.neutron.v2.extensions.RouterApi; -import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest; -import org.jclouds.openstack.v2_0.options.PaginationOptions; -import org.jclouds.rest.ResourceNotFoundException; -import org.testng.annotations.Test; - -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.List; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; - -/** - * Tests NetworkApi Guice wiring and parsing - * - */ -@Test -public class RouterApiMockTest extends BaseNeutronApiMockTest { - - public void testCreateRouter() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_create_response.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true) - .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) - .build(); - - Router router = api.create(createRouter); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "POST", "/v2.0/routers", "/router_create_request.json"); - - /* - * Check response - */ - assertNotNull(router); - assertEquals(router.getName(), "another_router"); - assertEquals(router.getExternalGatewayInfo().getNetworkId(), "8ca37218-28ff-41cb-9b10-039601ea7e6b"); - assertEquals(router.getStatus(), NetworkStatus.ACTIVE); - assertEquals(router.isAdminStateUp().booleanValue(), true); - assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e"); - assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3"); - } finally { - server.shutdown(); - } - } - - @Test(expectedExceptions = ResourceNotFoundException.class) - public void testCreateRouterFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true) - .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) - .build(); - - Router router = api.create(createRouter); - fail("Should have failed with not found exception"); - - } finally { - server.shutdown(); - } - } - - public void testListSpecificPagePort() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged1.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Routers routers = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg")); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg"); - - /* - * Check response - */ - assertNotNull(routers); - assertEquals(routers.size(), 2); - assertEquals(routers.first().get().getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); - } finally { - server.shutdown(); - } - } - - public void testListSpecificPagePortFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Routers routers = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg")); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg"); - - /* - * Check response - */ - assertNotNull(routers); - assertTrue(routers.isEmpty()); - } finally { - server.shutdown(); - } - } - - public void testListPagedRouter() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged1.json")))); - server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged2.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - // Note: Lazy! Have to actually look at the collection. - List<Router> routers = api.list().concat().toList(); - - /* - * Check request - */ - assertEquals(server.getRequestCount(), 3); - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers"); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718"); - - /* - * Check response - */ - assertNotNull(routers); - assertEquals(routers.size(), 4); - assertEquals(routers.get(0).getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); - assertEquals(routers.get(3).getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d_4"); - } finally { - server.shutdown(); - } - } - - public void testListPagedRouterFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - // Note: Lazy! Have to actually look at the collection. - List<Router> routers = api.list().concat().toList(); - - /* - * Check request - */ - assertEquals(server.getRequestCount(), 2); - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers"); - - /* - * Check response - */ - assertNotNull(routers); - assertTrue(routers.isEmpty()); - } finally { - server.shutdown(); - } - } - - public void testGetRouter() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_get_response.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router router = api.get("12345"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345"); - - /* - * Check response - */ - assertNotNull(router); - assertEquals(router.getName(), "router1"); - assertEquals(router.getExternalGatewayInfo().getNetworkId(), "3c5bcddd-6af9-4e6b-9c3e-c153e521cab8"); - assertEquals(router.getStatus(), NetworkStatus.ACTIVE); - assertEquals(router.isAdminStateUp().booleanValue(), true); - assertEquals(router.getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d"); - assertEquals(router.getTenantId(), "33a40233088643acb66ff6eb0ebea679"); - } finally { - server.shutdown(); - } - } - - public void testGetRouterFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router router = api.get("12345"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345"); - - /* - * Check response - */ - assertNull(router); - } finally { - server.shutdown(); - } - } - - public void testUpdateRouter() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_update_response.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router.UpdateOptions updateOptions = Router.updateOptions() - .externalGatewayInfo( - ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) - .build(); - - Router router = api.update("12345", updateOptions); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json"); - - /* - * Check response - */ - assertNotNull(router); - assertEquals(router.getName(), "another_router"); - assertEquals(router.getExternalGatewayInfo().getNetworkId(), "8ca37218-28ff-41cb-9b10-039601ea7e6b"); - assertEquals(router.getStatus(), NetworkStatus.ACTIVE); - assertEquals(router.isAdminStateUp().booleanValue(), true); - assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e"); - assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3"); - } finally { - server.shutdown(); - } - } - - public void testUpdateRouterFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - Router.UpdateOptions updateOptions = Router.updateOptions() - .externalGatewayInfo( - ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build()) - .build(); - - Router router = api.update("12345", updateOptions); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json"); - - /* - * Check response - */ - assertNull(router); - } finally { - server.shutdown(); - } - } - - public void testDeleteRouter() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.delete("12345"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345"); - - /* - * Check response - */ - assertTrue(result); - } finally { - server.shutdown(); - } - } - - public void testDeleteRouterFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.delete("12345"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345"); - - /* - * Check response - */ - assertFalse(result); - } finally { - server.shutdown(); - } - } - - public void testAddRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json"); - - /* - * Check response - */ - assertNotNull(routerInterface); - assertEquals(routerInterface.getSubnetId(), "a2f1f29d-571b-4533-907f-5803ab96ead1"); - assertEquals(routerInterface.getPortId(), "3a44f4e5-1694-493a-a1fb-393881c673a4"); - } finally { - server.shutdown(); - } - } - - public void testAddRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json"); - - /* - * Check response - */ - assertNull(routerInterface); - } finally { - server.shutdown(); - } - } - - public void testAddRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json")))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - RouterInterface routerInterface = api.addInterfaceForPort("12345", "portid"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json"); - - /* - * Check response - */ - assertNotNull(routerInterface); - assertEquals(routerInterface.getSubnetId(), "a2f1f29d-571b-4533-907f-5803ab96ead1"); - assertEquals(routerInterface.getPortId(), "3a44f4e5-1694-493a-a1fb-393881c673a4"); - } finally { - server.shutdown(); - } - } - - public void testAddRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - RouterInterface routerInterface = api.addInterfaceForPort("12345", "portid"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json"); - - /* - * Check response - */ - assertNull(routerInterface); - } finally { - server.shutdown(); - } - } - - public void testRemoveRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.removeInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json"); - - /* - * Check response - */ - assertTrue(result); - } finally { - server.shutdown(); - } - } - - public void testRemoveRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.removeInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json"); - - /* - * Check response - */ - assertFalse(result); - } finally { - server.shutdown(); - } - } - - public void testRemoveRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(201))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.removeInterfaceForPort("12345", "portid"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json"); - - /* - * Check response - */ - assertTrue(result); - } finally { - server.shutdown(); - } - } - - public void testRemoveRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException { - MockWebServer server = mockOpenStackServer(); - server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json")))); - server.enqueue(addCommonHeaders( - new MockResponse().setResponseCode(404))); - - try { - NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides); - RouterApi api = neutronApi.getRouterExtensionApi("RegionOne").get(); - - boolean result = api.removeInterfaceForPort("12345", "portid"); - - /* - * Check request - */ - assertAuthentication(server); - assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json"); - - /* - * Check response - */ - assertFalse(result); - } finally { - server.shutdown(); - } - } -}
