You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/01/17 08:07:28 UTC

[01/50] [abbrv] jclouds git commit: Cleans up neutron code

Repository: jclouds
Updated Branches:
  refs/heads/master 6fd7c7c38 -> 3ac9279ac


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
index 738ede5..a9a2dc4 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
@@ -61,7 +61,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.CreateOptions createPort = Port.createOptions("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
+         Port.CreatePort createPort = Port.createBuilder("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
                .name("port1")
                .adminStateUp(true)
                .deviceId("d6b4d3a5-c700-476f-b609-1493dd9dadc0")
@@ -108,7 +108,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.CreateOptions createPort = Port.createOptions("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
+         Port.CreatePort createPort = Port.createBuilder("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
                .name("port1")
                .adminStateUp(true)
                .deviceId("d6b4d3a5-c700-476f-b609-1493dd9dadc0")
@@ -246,14 +246,14 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.CreateOptions createPort1 = Port.createOptions("64239a54-dcc4-4b39-920b-b37c2144effa")
+         Port.CreatePort createPort1 = Port.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa")
                .name("port1")
                .adminStateUp(true)
                .deviceId("24df1d04-d5cb-41e1-8de5-61ed77c558df")
                .securityGroups(ImmutableSet.of("dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();
 
-         Port.CreateOptions createPort2 = Port.createOptions("e6031bc2-901a-4c66-82da-f4c32ed89406")
+         Port.CreatePort createPort2 = Port.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406")
                .name("port2")
                .adminStateUp(false)
                .securityGroups(
@@ -291,14 +291,14 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.CreateOptions createPort1 = Port.createOptions("64239a54-dcc4-4b39-920b-b37c2144effa")
+         Port.CreatePort createPort1 = Port.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa")
                .name("port1")
                .adminStateUp(true)
                .deviceId("24df1d04-d5cb-41e1-8de5-61ed77c558df")
                .securityGroups(ImmutableSet.of("dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();
 
-         Port.CreateOptions createPort2 = Port.createOptions("e6031bc2-901a-4c66-82da-f4c32ed89406")
+         Port.CreatePort createPort2 = Port.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406")
                .name("port2")
                .adminStateUp(false)
                .securityGroups(
@@ -384,7 +384,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.UpdateOptions updatePort = Port.updateOptions()
+         Port.UpdatePort updatePort = Port.updateBuilder()
                .securityGroups(
                      ImmutableSet.of("85cc3048-abc3-43cc-89b3-377341426ac5", "c5ab5c29-2c99-44cb-a4b8-e70a88b77799"))
                .build();
@@ -417,7 +417,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          PortApi api = neutronApi.getPortApi("RegionOne");
 
-         Port.UpdateOptions updatePort = Port.updateOptions()
+         Port.UpdatePort updatePort = Port.updateBuilder()
                .securityGroups(ImmutableSet.of("85cc3048-abc3-43cc-89b3-377341426ac5", "c5ab5c29-2c99-44cb-a4b8-e70a88b77799"))
                .build();
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiLiveTest.java
index 3e1adb8..3c5d7a8 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiLiveTest.java
@@ -44,7 +44,7 @@ public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
    public void testCreateUpdateAndDeleteSubnet() {
       for (String region : api.getConfiguredRegions()) {
          NetworkApi networkApi = api.getNetworkApi(region);
-         String networkId = networkApi.create(Network.createOptions("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
+         String networkId = networkApi.create(Network.createBuilder("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
 
          SubnetApi subnetApi = api.getSubnetApi(region);
          ImmutableSet<AllocationPool> allocationPools = ImmutableSet.of(
@@ -54,7 +54,7 @@ public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
          ImmutableSet<HostRoute> hostRoutes = ImmutableSet.of(
             HostRoute.builder().destinationCidr("a3:bc00::/48").nextHop("a3:bc00::0004").build()
          );
-         Subnet subnet = subnetApi.create(Subnet.createOptions(networkId, "a3:bc00::/48").ipVersion(6).allocationPools(allocationPools).hostRoutes(hostRoutes).build());
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(networkId, "a3:bc00::/48").ipVersion(6).allocationPools(allocationPools).hostRoutes(hostRoutes).build());
          assertNotNull(subnet);
 
          /* Test list and get */
@@ -71,7 +71,7 @@ public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
          assertTrue(retrievedSubnet.getDnsNameservers().isEmpty());
          assertEquals(retrievedSubnet.getAllocationPools().size(), 2);
          assertEquals(retrievedSubnet.getHostRoutes().size(), 1);
-         assertNotNull(subnetApi.update(retrievedSubnet.getId(), Subnet.updateOptions().name("jclouds-live-test-update").build()));
+         assertNotNull(subnetApi.update(retrievedSubnet.getId(), Subnet.updateBuilder().name("jclouds-live-test-update").build()));
 
          retrievedSubnet = subnetApi.get(retrievedSubnet.getId());
 
@@ -79,7 +79,7 @@ public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
          assertEquals(retrievedSubnet.getName(), "jclouds-live-test-update");
          assertTrue(retrievedSubnet.getDnsNameservers().isEmpty());
 
-         Subnet subnet2 = subnetApi.create(Subnet.createOptions(networkId, "a3:bd01::/48").ipVersion(6).build());
+         Subnet subnet2 = subnetApi.create(Subnet.createBuilder(networkId, "a3:bd01::/48").ipVersion(6).build());
          assertNotNull(subnet2);
 
          assertTrue(subnetApi.delete(subnet.getId()));
@@ -91,14 +91,14 @@ public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
    public void testBulkCreateSubnet() {
       for (String region : api.getConfiguredRegions()) {
          NetworkApi networkApi = api.getNetworkApi(region);
-         String networkId = networkApi.create(Network.createOptions("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
+         String networkId = networkApi.create(Network.createBuilder("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
 
          SubnetApi subnetApi = api.getSubnetApi(region);
          Set<? extends Subnet> subnets = subnetApi.createBulk(
                ImmutableList.of(
-                  Subnet.createOptions("jclouds-live-test-1", "a3:bd01::/48").ipVersion(6).networkId(networkId).build(),
-                  Subnet.createOptions("jclouds-live-test-2", "a3:bd02::/48").ipVersion(6).networkId(networkId).build(),
-                  Subnet.createOptions("jclouds-live-test-3", "a3:bd03::/48").ipVersion(6).networkId(networkId).build()
+                  Subnet.createBuilder("jclouds-live-test-1", "a3:bd01::/48").ipVersion(6).networkId(networkId).build(),
+                  Subnet.createBuilder("jclouds-live-test-2", "a3:bd02::/48").ipVersion(6).networkId(networkId).build(),
+                  Subnet.createBuilder("jclouds-live-test-3", "a3:bd03::/48").ipVersion(6).networkId(networkId).build()
                )
          ).toSet();
          Set<Subnet> existingSubnets = subnetApi.list().concat().toSet();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
index 51855ad..3571b0c 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
@@ -55,7 +55,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.CreateOptions createSubnet = Subnet.createOptions("1234567890", "10.0.3.0/24")
+         Subnet.CreateSubnet createSubnet = Subnet.createBuilder("1234567890", "10.0.3.0/24")
                .name("jclouds-wibble")
                .ipVersion(4)
                .build();
@@ -92,7 +92,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.CreateOptions createSubnet = Subnet.createOptions("1234567890", "cidr")
+         Subnet.CreateSubnet createSubnet = Subnet.createBuilder("1234567890", "cidr")
                .name("jclouds-wibble")
                .ipVersion(4)
                .build();
@@ -284,12 +284,12 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.CreateOptions createSubnet1 = Subnet.createOptions("e6031bc2-901a-4c66-82da-f4c32ed89406",
+         Subnet.CreateSubnet createSubnet1 = Subnet.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406",
                "192.168.199.0/24")
                .ipVersion(4)
                .build();
 
-         Subnet.CreateOptions createSubnet2 = Subnet.createOptions("64239a54-dcc4-4b39-920b-b37c2144effa",
+         Subnet.CreateSubnet createSubnet2 = Subnet.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa",
                "10.56.4.0/22")
                .ipVersion(4)
                .build();
@@ -333,12 +333,12 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.CreateOptions createSubnet1 = Subnet.createOptions("e6031bc2-901a-4c66-82da-f4c32ed89406",
+         Subnet.CreateSubnet createSubnet1 = Subnet.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406",
                "192.168.199.0/24")
                .ipVersion(4)
                .build();
 
-         Subnet.CreateOptions createSubnet2 = Subnet.createOptions("64239a54-dcc4-4b39-920b-b37c2144effa",
+         Subnet.CreateSubnet createSubnet2 = Subnet.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa",
                "10.56.4.0/22")
                .ipVersion(4)
                .build();
@@ -358,7 +358,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.UpdateOptions updateSubnet = Subnet.updateOptions()
+         Subnet.UpdateSubnet updateSubnet = Subnet.updateBuilder()
                .name("new_name")
                .gatewayIp("10.0.3.254")
                .build();
@@ -393,7 +393,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SubnetApi api = neutronApi.getSubnetApi("RegionOne");
 
-         Subnet.UpdateOptions updateSubnet = Subnet.updateOptions()
+         Subnet.UpdateSubnet updateSubnet = Subnet.updateBuilder()
                .name("new_name")
                .gatewayIp("10.0.3.254")
                .build();


[09/50] [abbrv] jclouds git commit: Support LBaaS v1

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
new file mode 100644
index 0000000..64275e0
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
@@ -0,0 +1,637 @@
+/*
+ * 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.lbaas.v1;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jclouds.logging.Logger;
+import org.jclouds.openstack.neutron.v2.domain.Network;
+import org.jclouds.openstack.neutron.v2.domain.NetworkType;
+import org.jclouds.openstack.neutron.v2.domain.Subnet;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HttpMethod;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.LBaaSStatus;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pool;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.ProbeType;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Protocol;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.SessionPersistence;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+import org.jclouds.openstack.neutron.v2.features.NetworkApi;
+import org.jclouds.openstack.neutron.v2.features.SubnetApi;
+import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableMap;
+
+/**
+ * Tests parsing and Guice wiring of RouterApi
+ */
+@Test(groups = "live", testName = "LBaaSApiLiveTest")
+public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
+
+   private Logger logger = getLoggingModule().createLoggerFactory().getLogger(LBaaSApiLiveTest.class.getName());
+
+   private Map<String, Network> networks;
+   private Map<String, Subnet> subnets;
+
+   public void testLBaaSPresence() throws Exception {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lBaaSv1Api = api.getLBaaSApi(region);
+
+         /*
+          * Check response
+          */
+         assertNotNull(lBaaSv1Api);
+         if (lBaaSv1Api.isPresent()) {
+            logger.info("LBaaS API Version 1 is available");
+         } else {
+            logger.info("LBaaS API Version 1 is unavailable");
+         }
+      }
+   }
+
+   @BeforeClass
+   public void createSubnets() {
+      networks = new HashMap<>();
+      subnets = new HashMap<>();
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         NetworkApi networkApi = api.getNetworkApi(region);
+         SubnetApi subnetApi = api.getSubnetApi(region);
+
+         Network network = networkApi.create(Network.createBuilder("jclouds-lbaas-test-network").networkType(NetworkType.LOCAL).build());
+         assertNotNull(network);
+         networks.put(region, network);
+
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(network.getId(), "10.0.0.0/24").ipVersion(4).name("jclouds-lbaas-test-subnet").build());
+         assertNotNull(subnet);
+         subnets.put(region, subnet);
+      }
+   }
+
+   @AfterClass
+   public void deleteSubnets() {
+      for (String region : api.getConfiguredRegions()) {
+         NetworkApi networkApi = api.getNetworkApi(region);
+         SubnetApi subnetApi = api.getSubnetApi(region);
+
+         try {
+            Subnet subnet = subnets.get(region);
+            if (subnet != null) {
+               assertTrue(subnetApi.delete(subnet.getId()));
+            }
+         } finally {
+            Network network = networks.get(region);
+            if (network != null) {
+               assertTrue(networkApi.delete(network.getId()));
+            }
+         }
+      }
+      networks = null;
+      subnets = null;
+   }
+
+   public void testCreateUpdateAndDeletePool() {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         LBaaSApi lbaasApi = lbaasApiExtension.get();
+
+         Subnet subnet = subnets.get(region);
+         Pool pool = null;
+
+         try {
+            // Create
+            Pool.CreatePool createPool = Pool.createBuilder(subnet.getId(), Protocol.HTTP, Pool.ROUND_ROBIN)
+                  .name("jclouds-lbaas-test-pool").description(null).healthMonitors(null).provider(null).adminStateUp(null).build();
+            pool = lbaasApi.createPool(createPool);
+            assertNotNull(pool);
+            assertNotNull(pool.getId());
+            assertEquals(pool.getTenantId(), subnet.getTenantId());
+            assertNull(pool.getVIPId());
+            assertEquals(pool.getName(), "jclouds-lbaas-test-pool");
+            assertEquals(pool.getDescription(), "");
+            assertEquals(pool.getSubnetId(), subnet.getId());
+            assertEquals(pool.getProtocol(), Protocol.HTTP);
+            assertNotNull(pool.getProvider());
+            assertEquals(pool.getLBMethod(), Pool.ROUND_ROBIN);
+            assertNotNull(pool.getHealthMonitors());
+            assertTrue(pool.getHealthMonitors().isEmpty());
+            assertNotNull(pool.getHealthMonitorsStatus());
+            assertTrue(pool.getHealthMonitorsStatus().isEmpty());
+            assertNotNull(pool.getMembers());
+            assertTrue(pool.getMembers().isEmpty());
+            assertEquals(pool.getAdminStateUp(), Boolean.TRUE);
+            assertTrue(pool.getStatus() == LBaaSStatus.PENDING_CREATE || pool.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(pool.getStatusDescription());
+
+            // List and Get
+            Pools pools = lbaasApi.listPools(PaginationOptions.Builder.queryParameters(ImmutableMap.of("name", "jclouds-lbaas-test-pool").asMultimap()));
+            assertNotNull(pools);
+            assertFalse(pools.isEmpty());
+            Pool poolList = pools.first().get();
+            Pool poolGet = lbaasApi.getPool(poolList.getId());
+            assertNotNull(poolGet);
+            assertEquals(poolGet, poolList);
+
+            poolGet = lbaasApi.getPool(pool.getId());
+            assertNotNull(poolGet);
+            assertEquals(poolGet.getName(), pool.getName());
+            assertEquals(poolGet.getId(), pool.getId());
+
+            // Update
+            Pool.UpdatePool updatePool = Pool.updateBuilder().name("jclouds-lbaas-test-pool-renamed").description("new description").lbMethod(Pool.ROUND_ROBIN)
+                  .healthMonitors(null).adminStateUp(Boolean.FALSE).build();
+            Pool poolUpdate = lbaasApi.updatePool(pool.getId(), updatePool);
+            assertNotNull(poolUpdate);
+            assertEquals(poolUpdate.getName(), "jclouds-lbaas-test-pool-renamed");
+            assertEquals(poolUpdate.getLBMethod(), Pool.ROUND_ROBIN);
+            assertNotNull(poolUpdate.getHealthMonitors());
+            assertTrue(poolUpdate.getHealthMonitors().isEmpty());
+            assertNotNull(poolUpdate.getHealthMonitorsStatus());
+            assertTrue(poolUpdate.getHealthMonitorsStatus().isEmpty());
+            assertEquals(poolUpdate.getAdminStateUp(), Boolean.FALSE);
+
+            poolGet = lbaasApi.getPool(pool.getId());
+            assertNotNull(poolGet);
+            assertEquals(poolGet.getId(), pool.getId());
+            assertEquals(poolGet.getTenantId(), subnet.getTenantId());
+            assertNull(poolGet.getVIPId());
+            assertEquals(poolGet.getName(), "jclouds-lbaas-test-pool-renamed");
+            assertEquals(poolGet.getDescription(), "new description");
+            assertEquals(poolGet.getSubnetId(), subnet.getId());
+            assertEquals(poolGet.getProtocol(), Protocol.HTTP);
+            assertNotNull(poolGet.getProvider());
+            assertEquals(poolGet.getLBMethod(), Pool.ROUND_ROBIN);
+            assertNotNull(poolGet.getHealthMonitors());
+            assertTrue(poolGet.getHealthMonitors().isEmpty());
+            assertNotNull(poolGet.getHealthMonitorsStatus());
+            assertTrue(poolGet.getHealthMonitorsStatus().isEmpty());
+            assertNotNull(poolGet.getMembers());
+            assertTrue(poolGet.getMembers().isEmpty());
+            assertEquals(poolGet.getAdminStateUp(), Boolean.FALSE);
+            assertTrue(poolGet.getStatus() == LBaaSStatus.PENDING_UPDATE || poolGet.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(poolGet.getStatusDescription());
+         } finally {
+            if (pool != null) {
+               // Delete
+               assertTrue(lbaasApi.deletePool(pool.getId()));
+               Pool poolGet = lbaasApi.getPool(pool.getId());
+               assertNull(poolGet);
+            }
+         }
+      }
+   }
+
+   public void testCreateUpdateAndDeleteMember() {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         LBaaSApi lbaasApi = lbaasApiExtension.get();
+
+         Subnet subnet = subnets.get(region);
+         Pool pool1 = null;
+         Pool pool2 = null;
+         Member member = null;
+
+         try {
+            // Create pools
+            Pool.CreateBuilder createBuilder = Pool.createBuilder(subnet.getId(), Protocol.HTTP, Pool.ROUND_ROBIN)
+                  .name("jclouds-lbaas-test-member-pool-1").description(null).healthMonitors(null).provider(null).adminStateUp(null);
+            pool1 = lbaasApi.createPool(createBuilder.build());
+            assertNotNull(pool1);
+            createBuilder.name("jclouds-lbaas-test-member-pool-2");
+            pool2 = lbaasApi.createPool(createBuilder.build());
+            assertNotNull(pool2);
+
+            // Create
+            Member.CreateMember createMember = Member.createBuilder(pool1.getId(), "10.0.0.100", 80)
+                  .weight(null).adminStateUp(null).build();
+            member = lbaasApi.createMember(createMember);
+            assertNotNull(member);
+            assertNotNull(member.getId());
+            assertEquals(member.getTenantId(), subnet.getTenantId());
+            assertEquals(member.getPoolId(), pool1.getId());
+            assertEquals(member.getAddress(), "10.0.0.100");
+            assertEquals(member.getProtocolPort(), Integer.valueOf(80));
+            assertEquals(member.getWeight(), Integer.valueOf(1));
+            assertEquals(member.getAdminStateUp(), Boolean.TRUE);
+            assertTrue(member.getStatus() == LBaaSStatus.PENDING_CREATE || member.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(member.getStatusDescription());
+
+            // List and Get
+            Members members = lbaasApi.listMembers(PaginationOptions.Builder.queryParameters(ImmutableMap.of("tenant_id", subnet.getTenantId()).asMultimap()));
+            assertNotNull(members);
+            assertFalse(members.isEmpty());
+            Member memberList = members.first().get();
+            Member memberGet = lbaasApi.getMember(memberList.getId());
+            assertNotNull(memberGet);
+            assertEquals(memberGet, memberList);
+
+            memberGet = lbaasApi.getMember(member.getId());
+            assertNotNull(memberGet);
+            assertEquals(memberGet.getId(), member.getId());
+
+            // Verify member appears in pool1 and not in pool2
+            Pool pool1Get = lbaasApi.getPool(pool1.getId());
+            assertNotNull(pool1Get);
+            assertNotNull(pool1Get.getMembers());
+            assertFalse(pool1Get.getMembers().isEmpty());
+            assertEquals(pool1Get.getMembers().iterator().next(), member.getId());
+            Pool pool2Get = lbaasApi.getPool(pool2.getId());
+            assertNotNull(pool2Get);
+            assertNotNull(pool2Get.getMembers());
+            assertTrue(pool2Get.getMembers().isEmpty());
+
+            // Update
+            Member.UpdateMember updateMember = Member.updateBuilder()
+                  .poolId(pool2.getId()).weight(2).adminStateUp(Boolean.FALSE).build();
+            Member memberUpdate = lbaasApi.updateMember(member.getId(), updateMember);
+            assertNotNull(memberUpdate);
+            assertEquals(memberUpdate.getPoolId(), pool2.getId());
+            assertEquals(memberUpdate.getWeight(), Integer.valueOf(2));
+            assertEquals(memberUpdate.getAdminStateUp(), Boolean.FALSE);
+
+            memberGet = lbaasApi.getMember(member.getId());
+            assertNotNull(memberGet);
+            assertNotNull(memberGet.getId());
+            assertEquals(memberGet.getTenantId(), subnet.getTenantId());
+            assertEquals(memberGet.getPoolId(), pool2.getId());
+            assertEquals(member.getAddress(), "10.0.0.100");
+            assertEquals(memberGet.getProtocolPort(), Integer.valueOf(80));
+            assertEquals(memberGet.getWeight(), Integer.valueOf(2));
+            assertEquals(memberGet.getAdminStateUp(), Boolean.FALSE);
+            assertTrue(memberGet.getStatus() == LBaaSStatus.PENDING_UPDATE || memberGet.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(memberGet.getStatusDescription());
+
+            // Verify member appears in pool2 and not in pool1
+            pool1Get = lbaasApi.getPool(pool1.getId());
+            assertNotNull(pool1Get);
+            assertNotNull(pool1Get.getMembers());
+            assertTrue(pool1Get.getMembers().isEmpty());
+            pool2Get = lbaasApi.getPool(pool2.getId());
+            assertNotNull(pool2Get);
+            assertNotNull(pool2Get.getMembers());
+            assertFalse(pool2Get.getMembers().isEmpty());
+            assertEquals(pool2Get.getMembers().iterator().next(), member.getId());
+         } finally {
+            if (member != null) {
+               // Delete
+               assertTrue(lbaasApi.deleteMember(member.getId()));
+               Member memberGet = lbaasApi.getMember(member.getId());
+               assertNull(memberGet);
+
+               // Verify member does not appear in pool1 and in pool2
+               Pool pool1Get = lbaasApi.getPool(pool1.getId());
+               assertNotNull(pool1Get);
+               assertNotNull(pool1Get.getMembers());
+               assertTrue(pool1Get.getMembers().isEmpty());
+               Pool pool2Get = lbaasApi.getPool(pool2.getId());
+               assertNotNull(pool2Get);
+               assertNotNull(pool2Get.getMembers());
+               assertTrue(pool2Get.getMembers().isEmpty());
+            }
+            if (pool2 != null) {
+               assertTrue(lbaasApi.deletePool(pool2.getId()));
+            }
+            if (pool1 != null) {
+               assertTrue(lbaasApi.deletePool(pool1.getId()));
+            }
+         }
+      }
+   }
+
+   public void testCreateUpdateAndDeleteVIP() {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         LBaaSApi lbaasApi = lbaasApiExtension.get();
+
+         Subnet subnet = subnets.get(region);
+         Pool pool1 = null;
+         Pool pool2 = null;
+         VIP vip = null;
+
+         try {
+            // Create pools
+            Pool.CreateBuilder createBuilder = Pool.createBuilder(subnet.getId(), Protocol.HTTP, Pool.ROUND_ROBIN)
+                  .name("jclouds-lbaas-test-vip-pool-1").description(null).healthMonitors(null).provider(null).adminStateUp(null);
+            pool1 = lbaasApi.createPool(createBuilder.build());
+            assertNotNull(pool1);
+            createBuilder.name("jclouds-lbaas-test-vip-pool-2");
+            pool2 = lbaasApi.createPool(createBuilder.build());
+            assertNotNull(pool2);
+
+            // Create
+            VIP.CreateVIP createVIP = VIP.createBuilder(subnet.getId(), Protocol.HTTP, 80, pool1.getId())
+                  .name("jclouds-lbaas-test-vip").description(null).address(null).sessionPersistence(null).connectionLimit(null).build();
+            vip = lbaasApi.createVIP(createVIP);
+            assertNotNull(vip);
+            assertNotNull(vip.getId());
+            assertEquals(vip.getTenantId(), subnet.getTenantId());
+            assertEquals(vip.getName(), "jclouds-lbaas-test-vip");
+            assertEquals(vip.getDescription(), "");
+            assertEquals(vip.getSubnetId(), subnet.getId());
+            assertNotNull(vip.getAddress());
+            assertNotNull(vip.getPortId());
+            assertEquals(vip.getProtocol(), Protocol.HTTP);
+            assertEquals(vip.getProtocolPort(), Integer.valueOf(80));
+            assertEquals(vip.getPoolId(), pool1.getId());
+            assertNull(vip.getSessionPersistence());
+            assertEquals(vip.getConnectionLimit(), Integer.valueOf(-1));
+            assertEquals(vip.getAdminStateUp(), Boolean.TRUE);
+            assertTrue(vip.getStatus() == LBaaSStatus.PENDING_CREATE || vip.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(vip.getStatusDescription());
+
+            // List and Get
+            VIPs vips = lbaasApi.listVIPs(PaginationOptions.Builder.queryParameters(ImmutableMap.of("tenant_id", subnet.getTenantId()).asMultimap()));
+            assertNotNull(vips);
+            assertFalse(vips.isEmpty());
+            VIP vipList = vips.first().get();
+            VIP vipGet = lbaasApi.getVIP(vipList.getId());
+            assertNotNull(vipGet);
+            assertEquals(vipGet, vipList);
+
+            vipGet = lbaasApi.getVIP(vip.getId());
+            assertNotNull(vipGet);
+            assertEquals(vipGet.getId(), vip.getId());
+
+            // Verify VIP appears in pool1 and not in pool2
+            Pool pool1Get = lbaasApi.getPool(pool1.getId());
+            assertNotNull(pool1Get);
+            assertEquals(pool1Get.getVIPId(), vip.getId());
+            Pool pool2Get = lbaasApi.getPool(pool2.getId());
+            assertNotNull(pool2Get);
+            assertNotEquals(pool2Get.getVIPId(), vip.getId());
+
+            // Update
+            SessionPersistence sessionPersistence = SessionPersistence.builder().type(SessionPersistence.Type.HTTP_COOKIE).cookieName(null).build();
+            VIP.UpdateVIP updateVIP = VIP.updateBuilder()
+                  .name("jclouds-lbaas-test-vip-renamed").description("new description").poolId(pool2.getId())
+                  .sessionPersistence(sessionPersistence).connectionLimit(2).adminStateUp(Boolean.FALSE).build();
+            VIP vipUpdate = lbaasApi.updateVIP(vip.getId(), updateVIP);
+            assertNotNull(vipUpdate);
+            assertEquals(vipUpdate.getName(), "jclouds-lbaas-test-vip-renamed");
+            assertEquals(vipUpdate.getDescription(), "new description");
+            assertEquals(vipUpdate.getPoolId(), pool2.getId());
+            assertEquals(vipUpdate.getSessionPersistence(), sessionPersistence);
+            assertEquals(vipUpdate.getConnectionLimit(), Integer.valueOf(2));
+            assertEquals(vipUpdate.getAdminStateUp(), Boolean.FALSE);
+
+            vipGet = lbaasApi.getVIP(vip.getId());
+            assertNotNull(vipGet);
+            assertNotNull(vipGet.getId());
+            assertEquals(vipGet.getTenantId(), subnet.getTenantId());
+            assertEquals(vipGet.getName(), "jclouds-lbaas-test-vip-renamed");
+            assertEquals(vipGet.getDescription(), "new description");
+            assertEquals(vipGet.getSubnetId(), subnet.getId());
+            assertNotNull(vipGet.getAddress());
+            assertNotNull(vipGet.getPortId());
+            assertEquals(vipGet.getProtocol(), Protocol.HTTP);
+            assertEquals(vipGet.getProtocolPort(), Integer.valueOf(80));
+            assertEquals(vipGet.getPoolId(), pool2.getId());
+            assertEquals(vipGet.getSessionPersistence(), sessionPersistence);
+            assertEquals(vipGet.getConnectionLimit(), Integer.valueOf(2));
+            assertEquals(vipGet.getAdminStateUp(), Boolean.FALSE);
+            assertTrue(vipGet.getStatus() == LBaaSStatus.PENDING_UPDATE || vipGet.getStatus() == LBaaSStatus.ACTIVE);
+            assertNull(vipGet.getStatusDescription());
+
+            // Verify VIP appears in pool2 and not in pool1
+            pool1Get = lbaasApi.getPool(pool1.getId());
+            assertNotNull(pool1Get);
+            assertNotEquals(pool1Get.getVIPId(), vip.getId());
+            pool2Get = lbaasApi.getPool(pool2.getId());
+            assertNotNull(pool2Get);
+            assertEquals(pool2Get.getVIPId(), vip.getId());
+         } finally {
+            if (vip != null) {
+               // Delete
+               assertTrue(lbaasApi.deleteVIP(vip.getId()));
+               VIP vipGet = lbaasApi.getVIP(vip.getId());
+               assertNull(vipGet);
+
+               // Verify VIP does not appear in pool1 and in pool2
+               Pool pool1Get = lbaasApi.getPool(pool1.getId());
+               assertNotNull(pool1Get);
+               assertNotEquals(pool1Get.getVIPId(), vip.getId());
+               Pool pool2Get = lbaasApi.getPool(pool2.getId());
+               assertNotNull(pool2Get);
+               assertNotEquals(pool2Get.getVIPId(), vip.getId());
+            }
+            if (pool2 != null) {
+               assertTrue(lbaasApi.deletePool(pool2.getId()));
+            }
+            if (pool1 != null) {
+               assertTrue(lbaasApi.deletePool(pool1.getId()));
+            }
+         }
+      }
+   }
+
+   public void testCreateUpdateAndDeleteHealthMonitor() {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         LBaaSApi lbaasApi = lbaasApiExtension.get();
+
+         Subnet subnet = subnets.get(region);
+         HealthMonitor healthMonitor = null;
+
+         try {
+            // Create
+            HealthMonitor.CreateHealthMonitor createHealthMonitor = HealthMonitor.createBuilder(ProbeType.HTTP, Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1))
+                  .httpMethod(null).urlPath(null).expectedCodes(null).adminStateUp(null).build();
+            healthMonitor = lbaasApi.createHealthMonitor(createHealthMonitor);
+            assertNotNull(healthMonitor);
+            assertNotNull(healthMonitor.getId());
+            assertEquals(healthMonitor.getTenantId(), subnet.getTenantId());
+            assertEquals(healthMonitor.getType(), ProbeType.HTTP);
+            assertEquals(healthMonitor.getDelay(), Integer.valueOf(1));
+            assertEquals(healthMonitor.getTimeout(), Integer.valueOf(1));
+            assertEquals(healthMonitor.getMaxRetries(), Integer.valueOf(1));
+            assertEquals(healthMonitor.getHttpMethod(), HttpMethod.GET);
+            assertEquals(healthMonitor.getUrlPath(), "/");
+            assertEquals(healthMonitor.getExpectedCodes(), "200");
+            assertNotNull(healthMonitor.getPools());
+            assertTrue(healthMonitor.getPools().isEmpty());
+            assertEquals(healthMonitor.getAdminStateUp(), Boolean.TRUE);
+            //assertEquals(healthMonitor.getStatus(), LBaaSStatus.PENDING_CREATE);
+            assertNull(healthMonitor.getStatus());
+            assertNull(healthMonitor.getStatusDescription());
+
+            // List and Get
+            HealthMonitors healthMonitors = lbaasApi.listHealthMonitors(PaginationOptions.Builder.queryParameters(ImmutableMap.of("tenant_id", subnet.getTenantId()).asMultimap()));
+            assertNotNull(healthMonitors);
+            assertFalse(healthMonitors.isEmpty());
+            HealthMonitor healthMonitorList = healthMonitors.first().get();
+            HealthMonitor healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitorList.getId());
+            assertNotNull(healthMonitorGet);
+            assertEquals(healthMonitorGet, healthMonitorList);
+
+            healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitor.getId());
+            assertNotNull(healthMonitorGet);
+            assertEquals(healthMonitorGet.getId(), healthMonitor.getId());
+
+            // Update
+            HealthMonitor.UpdateHealthMonitor updateHealthMonitor = HealthMonitor.updateBuilder().delay(Integer.valueOf(2)).timeout(Integer.valueOf(2)).maxRetries(Integer.valueOf(2))
+                  .httpMethod(HttpMethod.HEAD).urlPath("/index.html").expectedCodes("201").adminStateUp(Boolean.FALSE).build();
+            HealthMonitor healthMonitorUpdate = lbaasApi.updateHealthMonitor(healthMonitor.getId(), updateHealthMonitor);
+            assertNotNull(healthMonitorUpdate);
+            assertEquals(healthMonitorUpdate.getDelay(), Integer.valueOf(2));
+            assertEquals(healthMonitorUpdate.getTimeout(), Integer.valueOf(2));
+            assertEquals(healthMonitorUpdate.getMaxRetries(), Integer.valueOf(2));
+            assertEquals(healthMonitorUpdate.getHttpMethod(), HttpMethod.HEAD);
+            assertEquals(healthMonitorUpdate.getUrlPath(), "/index.html");
+            assertEquals(healthMonitorUpdate.getExpectedCodes(), "201");
+            assertEquals(healthMonitorUpdate.getAdminStateUp(), Boolean.FALSE);
+
+            healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitor.getId());
+            assertNotNull(healthMonitorGet);
+            assertNotNull(healthMonitorGet.getId());
+            assertEquals(healthMonitorGet.getTenantId(), subnet.getTenantId());
+            assertEquals(healthMonitorGet.getType(), ProbeType.HTTP);
+            assertEquals(healthMonitorGet.getDelay(), Integer.valueOf(2));
+            assertEquals(healthMonitorGet.getTimeout(), Integer.valueOf(2));
+            assertEquals(healthMonitorGet.getMaxRetries(), Integer.valueOf(2));
+            assertEquals(healthMonitorGet.getHttpMethod(), HttpMethod.HEAD);
+            assertEquals(healthMonitorGet.getUrlPath(), "/index.html");
+            assertEquals(healthMonitorGet.getExpectedCodes(), "201");
+            assertNotNull(healthMonitorGet.getPools());
+            assertTrue(healthMonitorGet.getPools().isEmpty());
+            assertEquals(healthMonitorGet.getAdminStateUp(), Boolean.FALSE);
+            //assertEquals(healthMonitorGet.getStatus(), LBaaSStatus.PENDING_UPDATE);
+            assertNull(healthMonitorGet.getStatus());
+            assertNull(healthMonitorGet.getStatusDescription());
+         } finally {
+            if (healthMonitor != null) {
+               // Delete
+               assertTrue(lbaasApi.deleteHealthMonitor(healthMonitor.getId()));
+               HealthMonitor healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitor.getId());
+               assertNull(healthMonitorGet);
+            }
+         }
+      }
+   }
+
+   public void testAssociateAndDisassociateHealthMonitorWithPool() {
+      for (String region : api.getConfiguredRegions()) {
+         Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
+         if (!lbaasApiExtension.isPresent()) {
+            continue;
+         }
+         LBaaSApi lbaasApi = lbaasApiExtension.get();
+
+         Subnet subnet = subnets.get(region);
+         Pool pool = null;
+         HealthMonitor healthMonitor = null;
+
+         try {
+            // Create pool
+            Pool.CreatePool poolCreateOptions = Pool.createBuilder(subnet.getId(), Protocol.TCP, Pool.ROUND_ROBIN)
+                  .name("jclouds-lbaas-test-pool-association").build();
+            pool = lbaasApi.createPool(poolCreateOptions);
+            assertNotNull(pool);
+            assertNotNull(pool.getId());
+            assertNotNull(pool.getHealthMonitors());
+            assertTrue(pool.getHealthMonitors().isEmpty());
+            assertNotNull(pool.getHealthMonitorsStatus());
+            assertTrue(pool.getHealthMonitorsStatus().isEmpty());
+
+            // Create health monitor
+            HealthMonitor.CreateHealthMonitor healthMonitorCreateOptions = HealthMonitor.createBuilder(ProbeType.HTTP, Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1)).build();
+            healthMonitor = lbaasApi.createHealthMonitor(healthMonitorCreateOptions);
+            assertNotNull(healthMonitor);
+            assertNotNull(healthMonitor.getId());
+            assertNotNull(healthMonitor.getPools());
+            assertTrue(healthMonitor.getPools().isEmpty());
+
+            // Associate health monitor with pool
+            HealthMonitor healthMonitorAssociated = lbaasApi.associateHealthMonitor(pool.getId(), healthMonitor.getId());
+            assertNotNull(healthMonitorAssociated);
+
+            // Verify health monitor is associated with pool
+            Pool poolGet = lbaasApi.getPool(pool.getId());
+            assertNotNull(poolGet);
+            assertNotNull(poolGet.getHealthMonitors());
+            assertEquals(poolGet.getHealthMonitors().size(), 1);
+            assertEquals(poolGet.getHealthMonitors().iterator().next(), healthMonitor.getId());
+            assertNotNull(poolGet.getHealthMonitorsStatus());
+            assertEquals(poolGet.getHealthMonitorsStatus().size(), 1);
+            assertEquals(poolGet.getHealthMonitorsStatus().iterator().next().getId(), healthMonitor.getId());
+
+            HealthMonitor healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitor.getId());
+            assertNotNull(healthMonitorGet);
+            assertNotNull(healthMonitorGet.getPools());
+            assertEquals(healthMonitorGet.getPools().size(), 1);
+            assertEquals(healthMonitorGet.getPools().iterator().next().getId(), pool.getId());
+
+            // Disassociate health monitor from pool
+            assertTrue(lbaasApi.disassociateHealthMonitor(pool.getId(), healthMonitor.getId()));
+
+            // Verify health monitor is disassociated from pool
+            poolGet = lbaasApi.getPool(pool.getId());
+            assertNotNull(poolGet);
+            assertNotNull(poolGet.getHealthMonitors());
+            assertTrue(poolGet.getHealthMonitors().isEmpty());
+            assertNotNull(poolGet.getHealthMonitorsStatus());
+            assertTrue(poolGet.getHealthMonitorsStatus().isEmpty());
+
+            healthMonitorGet = lbaasApi.getHealthMonitor(healthMonitor.getId());
+            assertNotNull(healthMonitorGet);
+            assertNotNull(healthMonitorGet.getPools());
+            assertTrue(healthMonitorGet.getPools().isEmpty());
+         } finally {
+            if (healthMonitor != null) {
+               assertTrue(lbaasApi.deleteHealthMonitor(healthMonitor.getId()));
+            }
+            if (pool != null) {
+               assertTrue(lbaasApi.deletePool(pool.getId()));
+            }
+         }
+      }
+   }
+
+}


[24/50] [abbrv] jclouds git commit: Apache jclouds 1.9.0 release

Posted by na...@apache.org.
Apache jclouds 1.9.0 release


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/550c3e3a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/550c3e3a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/550c3e3a

Branch: refs/heads/master
Commit: 550c3e3a85128e0caa39f8375b56280a26b9ec67
Parents: f5a7a6f
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Mar 24 10:59:36 2015 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Mar 24 10:59:36 2015 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/550c3e3a/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 15e0225..9614f9d 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -22,14 +22,14 @@
   <parent>
     <groupId>org.apache.jclouds</groupId>
     <artifactId>jclouds-project</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>1.9.0</version>
     <relativePath />
   </parent>
 
   <!-- TODO: when out of labs, switch to org.jclouds.api -->
   <groupId>org.apache.jclouds.labs</groupId>
   <artifactId>openstack-neutron</artifactId>
-  <version>2.0.0-SNAPSHOT</version>
+  <version>1.9.0</version>
   <name>jclouds openstack-neutron api</name>
   <description>jclouds components to access an implementation of OpenStack Neutron</description>
   <packaging>bundle</packaging>


[04/50] [abbrv] jclouds git commit: Added extension namespace support to Neutron

Posted by na...@apache.org.
Added extension namespace support to Neutron


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/388ad724
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/388ad724
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/388ad724

Branch: refs/heads/master
Commit: 388ad724c41790f2eb722a228e45228f3bd4b27d
Parents: 6cd16ff
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Thu Sep 11 11:12:47 2014 -0700
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Tue Sep 16 07:51:59 2014 -0700

----------------------------------------------------------------------
 .../neutron/v2/config/NeutronHttpApiModule.java | 29 ++++++----
 .../v2/extensions/ExtensionNamespaces.java      | 35 ++++++++++++
 .../neutron/v2/extensions/FloatingIPApi.java    |  3 +
 .../neutron/v2/extensions/RouterApi.java        |  3 +
 .../neutron/v2/extensions/SecurityGroupApi.java |  4 ++
 .../v2/extensions/FloatingIPApiMockTest.java    | 39 ++++++++++++-
 .../v2/extensions/RouterApiMockTest.java        | 59 ++++++++++++++++++-
 .../v2/extensions/SecurityGroupApiMockTest.java | 60 ++++++++++++++++++--
 8 files changed, 213 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index 545e7e4..f05439a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.config;
 
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
-import com.google.inject.Provides;
+import java.net.URI;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
 import org.jclouds.http.HttpErrorHandler;
 import org.jclouds.http.annotation.ClientError;
 import org.jclouds.http.annotation.Redirection;
@@ -29,6 +30,7 @@ import org.jclouds.http.annotation.ServerError;
 import org.jclouds.json.config.GsonModule.DateAdapter;
 import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
 import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.extensions.ExtensionNamespaces;
 import org.jclouds.openstack.neutron.v2.handlers.NeutronErrorHandler;
 import org.jclouds.openstack.v2_0.domain.Extension;
 import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet;
@@ -36,11 +38,12 @@ import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.config.HttpApiModule;
 import org.jclouds.rest.functions.ImplicitOptionalConverter;
 
-import javax.inject.Provider;
-import javax.inject.Singleton;
-import java.net.URI;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.Multimap;
+import com.google.inject.Provides;
 
 /**
  * Configures the Neutron connection.
@@ -60,6 +63,10 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
    @Singleton
    public Multimap<URI, URI> aliases() {
        return ImmutableMultimap.<URI, URI>builder()
+          .put(URI.create(ExtensionNamespaces.L3_ROUTER),
+               URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"))
+          .put(URI.create(ExtensionNamespaces.SECURITY_GROUPS),
+               URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"))
           .build();
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
new file mode 100644
index 0000000..00af74d
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+/**
+ * Extension Namespaces for OpenStack Networking (Neutron).
+ */
+public final class ExtensionNamespaces {
+   /**
+    * Neutron Layer-3 Router Extension
+    */
+   public static final String L3_ROUTER = "http://docs.openstack.org/ext/neutron/router/api/v1.0";
+   /**
+    * Neutron Security Groups Extension
+    */
+   public static final String SECURITY_GROUPS = "http://docs.openstack.org/ext/securitygroups/api/v2.0";
+
+   private ExtensionNamespaces() {
+      throw new AssertionError("intentionally unimplemented");
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
index 9a65543..9f0164a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -37,7 +37,9 @@ import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
 import org.jclouds.openstack.neutron.v2.fallbacks.EmptyFloatingIPsFallback;
 import org.jclouds.openstack.neutron.v2.functions.FloatingIPsToPagedIterable;
 import org.jclouds.openstack.neutron.v2.functions.ParseFloatingIPs;
+import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
@@ -59,6 +61,7 @@ import com.google.common.annotations.Beta;
 @Path("/floatingips")
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER)
 public interface FloatingIPApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index e259d69..b4668aa 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -39,7 +39,9 @@ import org.jclouds.openstack.neutron.v2.fallbacks.EmptyRoutersFallback;
 import org.jclouds.openstack.neutron.v2.functions.ParseRouters;
 import org.jclouds.openstack.neutron.v2.functions.RouterToPagedIterable;
 import org.jclouds.openstack.neutron.v2.options.EmptyOptions;
+import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
 import org.jclouds.rest.annotations.PayloadParam;
@@ -64,6 +66,7 @@ import com.google.common.annotations.Beta;
 @Path("/routers")
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER)
 public interface RouterApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
index 0832d4c..6e049c0 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
@@ -41,13 +41,16 @@ import org.jclouds.openstack.neutron.v2.functions.ParseRules;
 import org.jclouds.openstack.neutron.v2.functions.ParseSecurityGroups;
 import org.jclouds.openstack.neutron.v2.functions.RulesToPagedIterable;
 import org.jclouds.openstack.neutron.v2.functions.SecurityGroupsToPagedIterable;
+import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.SelectJson;
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.annotations.WrapWith;
+
 import com.google.common.annotations.Beta;
 
 /**
@@ -61,6 +64,7 @@ import com.google.common.annotations.Beta;
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.SECURITY_GROUPS)
 public interface SecurityGroupApi {
    /**
     * Groups

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
index c28b1c8..576d6d3 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
@@ -47,6 +47,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/floatingip_create_response.json"))));
 
@@ -63,7 +64,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "POST", "/v2.0/floatingips", "/floatingip_create_request.json");
 
          /*
@@ -87,6 +90,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -107,6 +111,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/floatingip_list_response_paged1.json"))));
 
       try {
@@ -118,7 +123,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?limit=2&marker=abcdefg");
 
          /*
@@ -136,6 +143,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -147,7 +155,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?limit=2&marker=abcdefg");
 
          /*
@@ -163,6 +173,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/floatingip_list_response_paged1.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/floatingip_list_response_paged2.json"))));
 
@@ -176,8 +187,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 3);
+         assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
@@ -196,6 +208,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -208,8 +221,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 2);
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips");
 
          /*
@@ -225,6 +239,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testGetFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/floatingip_get_response.json"))));
 
@@ -237,7 +252,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips/12345");
 
          /*
@@ -260,6 +277,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testGetFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -272,7 +290,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips/12345");
 
          /*
@@ -288,6 +308,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testUpdateFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/floatingip_update_response.json"))));
 
@@ -304,7 +325,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_request.json");
 
          /*
@@ -321,6 +344,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testUpdateFloatingIPDissociate() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/floatingip_update_dissociate_response.json"))));
 
@@ -335,7 +359,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_dissociate_request.json");
 
          /*
@@ -352,6 +378,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testUpdateFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -368,7 +395,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_request.json");
 
          /*
@@ -383,6 +412,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -395,7 +425,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/floatingips/12345");
 
          /*
@@ -410,6 +442,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -422,7 +455,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/floatingips/12345");
 
          /*

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index 346e820..cbd2204 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -51,6 +51,7 @@ 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().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_create_response.json"))));
 
@@ -67,7 +68,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "POST", "/v2.0/routers", "/router_create_request.json");
 
          /*
@@ -89,6 +92,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -111,6 +115,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/router_list_response_paged1.json"))));
 
       try {
@@ -122,7 +127,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg");
 
          /*
@@ -139,6 +146,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -150,7 +158,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg");
 
          /*
@@ -166,6 +176,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.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"))));
 
@@ -179,8 +190,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 3);
+         assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
@@ -199,6 +211,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -211,8 +224,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 2);
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers");
 
          /*
@@ -228,6 +242,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testGetRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_get_response.json"))));
 
@@ -240,7 +255,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345");
 
          /*
@@ -261,6 +278,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testGetRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -273,7 +291,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345");
 
          /*
@@ -288,6 +308,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testUpdateRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_update_response.json"))));
 
@@ -305,7 +326,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json");
 
          /*
@@ -326,6 +349,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testUpdateRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -343,7 +367,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json");
 
          /*
@@ -358,6 +384,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -370,7 +397,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345");
 
          /*
@@ -385,6 +414,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteRouterFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -397,7 +427,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345");
 
          /*
@@ -412,6 +444,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testAddRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json"))));
 
@@ -425,6 +458,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json");
 
          /*
@@ -441,6 +475,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testAddRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -453,7 +488,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json");
 
          /*
@@ -468,6 +505,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testAddRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/router_add_interface_response.json"))));
 
@@ -480,7 +518,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
 
          /*
@@ -497,6 +537,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testAddRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -509,7 +550,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
 
          /*
@@ -524,6 +567,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testRemoveRouterInterfaceForSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -536,7 +580,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
 
          /*
@@ -551,6 +597,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testRemoveRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -563,7 +610,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
 
          /*
@@ -578,6 +627,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testRemoveRouterInterfaceForPort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -590,7 +640,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
 
          /*
@@ -605,6 +657,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
    public void testRemoveRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -617,7 +670,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
 
          /*

http://git-wip-us.apache.org/repos/asf/jclouds/blob/388ad724/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
index dfe6a80..e766b6d 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
@@ -52,6 +52,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_create_response.json"))));
 
@@ -68,7 +69,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "POST", "/v2.0/security-groups", "/security_group_create_request.json");
 
          /*
@@ -94,6 +97,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -114,6 +118,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_rule_create_response.json"))));
 
@@ -135,7 +140,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "POST", "/v2.0/security-group-rules", "/security_group_rule_create_request.json");
 
          /*
@@ -161,6 +168,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testCreateSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -186,6 +194,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged1.json"))));
 
       try {
@@ -197,7 +206,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?limit=2&marker=abcdefg");
 
          /*
@@ -216,6 +227,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -227,7 +239,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?limit=2&marker=abcdefg");
 
          /*
@@ -243,6 +257,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged1.json"))));
 
       try {
@@ -254,7 +269,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?limit=2&marker=abcdefg");
 
          /*
@@ -273,6 +290,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListSpecificPageSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -284,7 +302,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?limit=2&marker=abcdefg");
 
          /*
@@ -300,6 +320,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedSecurityGroups() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged1.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged2.json"))));
 
@@ -313,8 +334,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 3);
+         assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
@@ -335,6 +357,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedSecurityGroupsFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -347,8 +370,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 2);
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups");
 
          /*
@@ -365,6 +389,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedSecurityGroupRules() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged1.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged2.json"))));
 
@@ -378,8 +403,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 3);
+         assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
@@ -400,6 +426,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testListPagedSecurityGroupRulesFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
 
       try {
@@ -412,8 +439,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
-         assertEquals(server.getRequestCount(), 2);
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules");
 
          /*
@@ -430,6 +458,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testGetSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_get_response.json"))));
 
@@ -442,7 +471,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups/12345");
 
          /*
@@ -463,6 +494,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testGetSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -475,7 +507,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups/12345");
 
          /*
@@ -491,6 +525,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testGetSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_rule_get_response.json"))));
 
@@ -503,7 +538,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules/12345");
 
          /*
@@ -524,6 +561,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testGetSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -536,7 +574,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules/12345");
 
          /*
@@ -552,6 +592,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -564,7 +605,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-groups/12345");
 
          /*
@@ -579,6 +622,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -591,7 +635,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-groups/12345");
 
          /*
@@ -606,6 +652,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(201)));
 
@@ -618,7 +665,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-group-rules/12345");
 
          /*
@@ -633,6 +682,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
    public void testDeleteSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
       server.enqueue(addCommonHeaders(
             new MockResponse().setResponseCode(404)));
 
@@ -645,7 +695,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          /*
           * Check request
           */
+         assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
+         assertExtensions(server, "/v2.0");
          assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-group-rules/12345");
 
          /*


[13/50] [abbrv] jclouds git commit: Revert "Fix poms so that modernizer doesn't fail on snapshot."

Posted by na...@apache.org.
Revert "Fix poms so that modernizer doesn't fail on snapshot."

This reverts commit 889243a677ebba620cc9915f26304091b4dd53bb. The
snapshot repository has now been added to the jclouds-project POM.
See commit 79d4b48 to jclouds/jclouds.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/66b7bd16
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/66b7bd16
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/66b7bd16

Branch: refs/heads/master
Commit: 66b7bd1634ad7ef20e995271e7a7f41c618549f3
Parents: f4f05a3
Author: Andrew Phillips <an...@apache.org>
Authored: Sun Oct 5 18:52:24 2014 -0400
Committer: Andrew Phillips <an...@apache.org>
Committed: Mon Oct 6 00:36:04 2014 -0400

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 14 --------------
 1 file changed, 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/66b7bd16/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 54fe044..0a661ef 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -65,20 +65,6 @@
     </repository>
   </repositories>
 
-  <!-- For modernizer, which depends on jclouds-resources snapshot. -->
-  <pluginRepositories>
-    <pluginRepository>
-      <id>apache-snapshots</id>
-      <url>https://repository.apache.org/content/repositories/snapshots</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </pluginRepository>
-  </pluginRepositories>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.jclouds.api</groupId>


[02/50] [abbrv] jclouds git commit: Cleans up neutron code

Posted by na...@apache.org.
Cleans up neutron code


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0485a564
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0485a564
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0485a564

Branch: refs/heads/master
Commit: 0485a564a003c470909a85780c0ba251c4697a8e
Parents: 994a169
Author: Zack Shoylev <za...@rackspace.com>
Authored: Wed Sep 3 11:43:55 2014 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue Sep 9 13:39:49 2014 -0500

----------------------------------------------------------------------
 .../openstack/neutron/v2/domain/FloatingIP.java | 20 ++---
 .../neutron/v2/domain/IPv6DHCPMode.java         |  2 +-
 .../openstack/neutron/v2/domain/Network.java    | 34 +++++----
 .../neutron/v2/domain/NetworkStatus.java        |  5 +-
 .../neutron/v2/domain/NetworkType.java          | 17 ++---
 .../openstack/neutron/v2/domain/Port.java       | 34 +++++----
 .../openstack/neutron/v2/domain/Router.java     | 30 ++++----
 .../openstack/neutron/v2/domain/Rule.java       | 22 +++---
 .../neutron/v2/domain/RuleDirection.java        |  2 +-
 .../neutron/v2/domain/RuleEthertype.java        |  2 +-
 .../neutron/v2/domain/RuleProtocol.java         |  2 +-
 .../neutron/v2/domain/SecurityGroup.java        | 12 +--
 .../openstack/neutron/v2/domain/Subnet.java     | 34 +++++----
 .../openstack/neutron/v2/domain/VIFType.java    |  2 +-
 .../openstack/neutron/v2/domain/VNICType.java   |  2 +-
 .../neutron/v2/extensions/FloatingIPApi.java    |  8 +-
 .../neutron/v2/extensions/RouterApi.java        |  4 +-
 .../neutron/v2/extensions/SecurityGroupApi.java |  8 +-
 .../neutron/v2/features/NetworkApi.java         | 33 +++++----
 .../openstack/neutron/v2/features/PortApi.java  |  6 +-
 .../neutron/v2/features/SubnetApi.java          |  6 +-
 .../v2/functions/ParseSecurityGroups.java       |  8 +-
 .../v2/extensions/FloatingIPApiLiveTest.java    |  6 +-
 .../v2/extensions/FloatingIPApiMockTest.java    | 16 ++--
 .../v2/extensions/RouterApiLiveTest.java        | 38 ++++------
 .../v2/extensions/RouterApiMockTest.java        | 25 ++-----
 .../v2/extensions/SecurityGroupApiLiveTest.java | 77 +++++++++++---------
 .../v2/extensions/SecurityGroupApiMockTest.java | 12 ++-
 .../neutron/v2/features/NetworkApiLiveTest.java | 14 ++--
 .../neutron/v2/features/NetworkApiMockTest.java | 16 ++--
 .../neutron/v2/features/PortApiLiveTest.java    | 26 +++----
 .../neutron/v2/features/PortApiMockTest.java    | 16 ++--
 .../neutron/v2/features/SubnetApiLiveTest.java  | 16 ++--
 .../neutron/v2/features/SubnetApiMockTest.java  | 16 ++--
 34 files changed, 290 insertions(+), 281 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
index c5c3b7d..9c01056 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
@@ -166,14 +166,14 @@ public class FloatingIP {
    /**
     * @return the Builder for creating a new floating IP
     */
-   public static CreateBuilder createOptions(String floatingNetworkId) {
+   public static CreateBuilder createBuilder(String floatingNetworkId) {
       return new CreateBuilder(floatingNetworkId);
    }
 
    /**
     * @return the Builder for updating a floating IP
     */
-   public static UpdateBuilder updateOptions() {
+   public static UpdateBuilder updateBuilder() {
       return new UpdateBuilder();
    }
 
@@ -260,8 +260,8 @@ public class FloatingIP {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(floatingIP);
+      public CreateFloatingIP build() {
+         return new CreateFloatingIP(floatingIP);
       }
 
       protected CreateBuilder self() {
@@ -294,8 +294,8 @@ public class FloatingIP {
       /**
        * @return a UpdateOptions constructed with this Builder.
        */
-      public UpdateOptions build() {
-         return new UpdateOptions(floatingIP);
+      public UpdateFloatingIP build() {
+         return new UpdateFloatingIP(floatingIP);
       }
 
       protected UpdateBuilder self() {
@@ -303,13 +303,13 @@ public class FloatingIP {
       }
    }
 
-   public static class CreateOptions extends FloatingIP {
-      private CreateOptions(FloatingIP floatingIP) {
+   public static class CreateFloatingIP extends FloatingIP {
+      private CreateFloatingIP(FloatingIP floatingIP) {
          super(floatingIP);
       }
    }
-   public static class UpdateOptions extends FloatingIP {
-      private UpdateOptions(FloatingIP floatingIP) {
+   public static class UpdateFloatingIP extends FloatingIP {
+      private UpdateFloatingIP(FloatingIP floatingIP) {
          super(floatingIP);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
index f985041..654e053 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IPv6DHCPMode.java
@@ -40,7 +40,7 @@ public enum IPv6DHCPMode {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static IPv6DHCPMode fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
index 863f89d..76af6b0 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -16,15 +16,17 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import org.jclouds.javax.annotation.Nullable;
+import static com.google.common.base.Preconditions.checkNotNull;
 
-import javax.inject.Named;
 import java.beans.ConstructorProperties;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * A Neutron network
@@ -367,14 +369,14 @@ public class Network {
    /**
     * @return the Builder for creating a new Router
     */
-   public static CreateBuilder createOptions(String name) {
+   public static CreateBuilder createBuilder(String name) {
       return new CreateBuilder(name);
    }
 
    /**
     * @return the Builder for updating a Router
     */
-   public static UpdateBuilder updateOptions() {
+   public static UpdateBuilder updateBuilder() {
       return new UpdateBuilder();
    }
 
@@ -585,8 +587,8 @@ public class Network {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(network);
+      public CreateNetwork build() {
+         return new CreateNetwork(network);
       }
 
       protected CreateBuilder self() {
@@ -607,8 +609,8 @@ public class Network {
       /**
        * @return a UpdateOptions constructed with this Builder.
        */
-      public UpdateOptions build() {
-         return new UpdateOptions(network);
+      public UpdateNetwork build() {
+         return new UpdateNetwork(network);
       }
 
       protected UpdateBuilder self() {
@@ -620,11 +622,11 @@ public class Network {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class CreateOptions extends Network {
+   public static class CreateNetwork extends Network {
       /**
        * Copy constructor
        */
-      private CreateOptions(Network network) {
+      private CreateNetwork(Network network) {
          super(network);
          checkNotNull(network.name, "name should not be null");
       }
@@ -634,11 +636,11 @@ public class Network {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class UpdateOptions extends Network  {
+   public static class UpdateNetwork extends Network  {
       /**
        * Copy constructor
        */
-      private UpdateOptions(Network network) {
+      private UpdateNetwork(Network network) {
          super(network);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
index 059ffa7..04334d0 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkStatus.java
@@ -17,6 +17,9 @@
 
 package org.jclouds.openstack.neutron.v2.domain;
 
+/**
+ * Enumerates Network Status.
+ */
 public enum NetworkStatus {
    ACTIVE("active"),
    DOWN("down"),
@@ -38,7 +41,7 @@ public enum NetworkStatus {
       return name();
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * @param name The string representation of this enum value.
     * @return The corresponding enum value.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
index 950138a..89c3e9a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkType.java
@@ -18,10 +18,7 @@
 package org.jclouds.openstack.neutron.v2.domain;
 
 /**
- * Enumerates supported Network types. 
- * 
- * @see <a href=
- *      "http://docs.openstack.org/api/openstack-network/2.0/content/provider_ext.html">api doc</a>
+ * Enumerates supported Network types.
  */
 public enum NetworkType {
    /**
@@ -37,15 +34,15 @@ public enum NetworkType {
     */
    VLAN("vlan"),
    /**
-    * Used to describe a Virtual Extensible LAN (VXLAN) network. 
-    * It uses a VLAN-like encapsulation technique to encapsulate MAC-based 
+    * Used to describe a Virtual Extensible LAN (VXLAN) network.
+    * It uses a VLAN-like encapsulation technique to encapsulate MAC-based
     * OSI layer 2 Ethernet frames within layer 4 UDP packets.
     */
    VXLAN("vxlan"),
    /**
-    * Used to describe a GRE tunnel network. A virtual network realized as 
-    * packets encapsulated using Generic Routing Encapsulation. GRE tunnel 
-    * packets are routed by the compute node hosts, so GRE tunnels are not 
+    * Used to describe a GRE tunnel network. A virtual network realized as
+    * packets encapsulated using Generic Routing Encapsulation. GRE tunnel
+    * packets are routed by the compute node hosts, so GRE tunnels are not
     * associated by the openvswitch plugin with specific physical networks.
     */
    GRE("gre"),
@@ -65,7 +62,7 @@ public enum NetworkType {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * @param name The string representation of this enum value.
     * @return The corresponding enum value.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
index 3376d6f..79c1cda 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
@@ -16,16 +16,18 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import org.jclouds.javax.annotation.Nullable;
-
-import javax.inject.Named;
-import java.beans.ConstructorProperties;
-
-import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * A Neutron port
@@ -460,14 +462,14 @@ public class Port {
    /**
     * @return the Builder for creating a new Router
     */
-   public static CreateBuilder createOptions(String networkId) {
+   public static CreateBuilder createBuilder(String networkId) {
       return new CreateBuilder(networkId);
    }
 
    /**
     * @return the Builder for updating a Router
     */
-   public static UpdateBuilder updateOptions() {
+   public static UpdateBuilder updateBuilder() {
       return new UpdateBuilder();
    }
 
@@ -702,8 +704,8 @@ public class Port {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(port);
+      public CreatePort build() {
+         return new CreatePort(port);
       }
 
       protected CreateBuilder self() {
@@ -724,8 +726,8 @@ public class Port {
       /**
        * @return a UpdateOptions constructed with this Builder.
        */
-      public UpdateOptions build() {
-         return new UpdateOptions(port);
+      public UpdatePort build() {
+         return new UpdatePort(port);
       }
 
       protected UpdateBuilder self() {
@@ -737,11 +739,11 @@ public class Port {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class CreateOptions extends Port {
+   public static class CreatePort extends Port {
       /**
        * Copy constructor
        */
-      private CreateOptions(Port port) {
+      private CreatePort(Port port) {
          super(port);
          checkNotNull(port.networkId, "networkId should not be null");
       }
@@ -751,11 +753,11 @@ public class Port {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class UpdateOptions extends Port {
+   public static class UpdatePort extends Port {
       /**
        * Copy constructor
        */
-      private UpdateOptions(Port port) {
+      private UpdatePort(Port port) {
          super(port);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
index 6c9794b..33163f1 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
@@ -16,12 +16,14 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
 
 /**
  * A Neutron Router
@@ -125,14 +127,14 @@ public class Router {
    /**
     * @return the Builder for creating a new Router
     */
-   public static CreateBuilder createOptions() {
+   public static CreateBuilder createBuilder() {
       return new CreateBuilder();
    }
 
    /**
     * @return the Builder for updating a Router
     */
-   public static UpdateBuilder updateOptions() {
+   public static UpdateBuilder updateBuilder() {
       return new UpdateBuilder();
    }
 
@@ -237,8 +239,8 @@ public class Router {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(router);
+      public CreateRouter build() {
+         return new CreateRouter(router);
       }
 
       protected CreateBuilder self() {
@@ -256,8 +258,8 @@ public class Router {
       /**
        * @return a UpdateOptions constructed with this Builder.
        */
-      public UpdateOptions build() {
-         return new UpdateOptions(router);
+      public UpdateRouter build() {
+         return new UpdateRouter(router);
       }
 
       protected UpdateBuilder self() {
@@ -265,19 +267,19 @@ public class Router {
       }
    }
 
-   public static class CreateOptions extends Router{
+   public static class CreateRouter extends Router{
       /**
        * Copy constructor
        */
-      private CreateOptions(Router router) {
+      private CreateRouter(Router router) {
          super(router);
       }
    }
-   public static class UpdateOptions extends Router{
+   public static class UpdateRouter extends Router{
       /**
        * Copy constructor
        */
-      private UpdateOptions(Router router) {
+      private UpdateRouter(Router router) {
          super(router);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
index e3b7aca..8b7cc84 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
@@ -16,13 +16,15 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
 
 import java.beans.ConstructorProperties;
+
 import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
@@ -216,7 +218,7 @@ public class Rule {
    /**
     * @return the Builder for creating a new SecurityGroupRule
     */
-   public static CreateBuilder createOptions(RuleDirection direction, String securityGroupId) {
+   public static CreateBuilder createBuilder(RuleDirection direction, String securityGroupId) {
       return new CreateBuilder(direction, securityGroupId);
    }
 
@@ -348,8 +350,8 @@ public class Rule {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(rule);
+      public CreateRule build() {
+         return new CreateRule(rule);
       }
 
       protected CreateBuilder self() {
@@ -361,14 +363,14 @@ public class Rule {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class CreateOptions extends Rule {
-      private CreateOptions(Rule rule) {
+   public static class CreateRule extends Rule {
+      private CreateRule(Rule rule) {
          super(rule);
-         checkNotNull(rule.getDirection(), "direction should not be null");
-         checkNotNull(rule.getSecurityGroupId(), "security group id should not be null");
-         checkState(rule.getPortRangeMax()>= rule.getPortRangeMin(),
+         checkNotNull(this.getDirection(), "direction should not be null");
+         checkNotNull(this.getSecurityGroupId(), "security group id should not be null");
+         checkArgument(this.getPortRangeMax() >= this.getPortRangeMin(),
                "port range max should be greater than or equal to port range min");
-         checkState(rule.getRemoteGroupId()==null || rule.getRemoteIpPrefix()==null,
+         checkArgument(this.getRemoteGroupId() == null || this.getRemoteIpPrefix() == null,
                "You can specify either remote_group_id or remote_ip_prefix in the request body.");
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleDirection.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleDirection.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleDirection.java
index 759bb8c..52e4273 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleDirection.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleDirection.java
@@ -44,7 +44,7 @@ public enum RuleDirection {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static RuleDirection fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleEthertype.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleEthertype.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleEthertype.java
index 1508070..dd3aa3f 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleEthertype.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleEthertype.java
@@ -44,7 +44,7 @@ public enum RuleEthertype {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static RuleEthertype fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleProtocol.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleProtocol.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleProtocol.java
index 9ad105f..f6a4574 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleProtocol.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RuleProtocol.java
@@ -48,7 +48,7 @@ public enum RuleProtocol {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static RuleProtocol fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
index 604776e..ac62c56 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
@@ -95,7 +95,7 @@ public class SecurityGroup {
     * @return The collection of rules for this Security Group.
     */
    public ImmutableList<Rule> getRules() {
-      return rules!=null ? rules : ImmutableList.<Rule>of();
+      return rules != null ? rules : ImmutableList.<Rule>of();
    }
 
    @Override
@@ -137,7 +137,7 @@ public class SecurityGroup {
    /**
     * @return the Builder for creating a new SecurityGroup
     */
-   public static CreateBuilder createOptions() {
+   public static CreateBuilder createBuilder() {
       return new CreateBuilder();
    }
 
@@ -198,8 +198,8 @@ public class SecurityGroup {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(securityGroup);
+      public CreateSecurityGroup build() {
+         return new CreateSecurityGroup(securityGroup);
       }
 
       protected CreateBuilder self() {
@@ -211,8 +211,8 @@ public class SecurityGroup {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class CreateOptions extends SecurityGroup {
-      private CreateOptions(SecurityGroup securityGroup) {
+   public static class CreateSecurityGroup extends SecurityGroup {
+      private CreateSecurityGroup(SecurityGroup securityGroup) {
          super(securityGroup);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
index c28b2d9..4110f2c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
@@ -16,16 +16,18 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import org.jclouds.javax.annotation.Nullable;
+import static com.google.common.base.Preconditions.checkNotNull;
 
-import javax.inject.Named;
 import java.beans.ConstructorProperties;
 import java.util.Collection;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * A Neutron subnet
@@ -266,14 +268,14 @@ public class Subnet {
    /**
     * @return the Builder for creating a new Router
     */
-   public static CreateBuilder createOptions(String networkId, String cidr) {
+   public static CreateBuilder createBuilder(String networkId, String cidr) {
       return new CreateBuilder(networkId, cidr);
    }
 
    /**
     * @return the Builder for updating a Router
     */
-   public static UpdateBuilder updateOptions() {
+   public static UpdateBuilder updateBuilder() {
       return new UpdateBuilder();
    }
 
@@ -404,8 +406,8 @@ public class Subnet {
       /**
        * @return a CreateOptions constructed with this Builder.
        */
-      public CreateOptions build() {
-         return new CreateOptions(subnet);
+      public CreateSubnet build() {
+         return new CreateSubnet(subnet);
       }
 
       protected CreateBuilder self() {
@@ -426,8 +428,8 @@ public class Subnet {
       /**
        * @return a UpdateOptions constructed with this Builder.
        */
-      public UpdateOptions build() {
-         return new UpdateOptions(subnet);
+      public UpdateSubnet build() {
+         return new UpdateSubnet(subnet);
       }
 
       protected UpdateBuilder self() {
@@ -439,11 +441,11 @@ public class Subnet {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class CreateOptions extends Subnet {
+   public static class CreateSubnet extends Subnet {
       /**
        * Copy constructor
        */
-      private CreateOptions(Subnet subnet) {
+      private CreateSubnet(Subnet subnet) {
          super(subnet);
          checkNotNull(subnet.networkId, "networkId should not be null");
          checkNotNull(subnet.cidr, "cidr should not be null");
@@ -454,11 +456,11 @@ public class Subnet {
     * Create and Update options - extend the domain class, passed to API update and create calls.
     * Essentially the same as the domain class. Ensure validation and safe typing.
     */
-   public static class UpdateOptions extends Subnet {
+   public static class UpdateSubnet extends Subnet {
       /**
        * Copy constructor
        */
-      private UpdateOptions(Subnet subnet) {
+      private UpdateSubnet(Subnet subnet) {
          super(subnet);
       }
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VIFType.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VIFType.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VIFType.java
index 0c53e77..5417065 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VIFType.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VIFType.java
@@ -45,7 +45,7 @@ public enum VIFType {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static VIFType fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VNICType.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VNICType.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VNICType.java
index b67063d..80fd4aa 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VNICType.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/VNICType.java
@@ -39,7 +39,7 @@ public enum VNICType {
       return name;
    }
 
-   /**
+   /*
     * This provides GSON enum support in jclouds.
     * */
    public static VNICType fromValue(String name){

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
index 5565668..9a65543 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -101,19 +101,19 @@ public interface FloatingIPApi {
    /**
     * Creates a floating IP.
     *
-    * @param createOptions Options for creating a Floating IP
+    * @param createFloatingIP Options for creating a Floating IP
     * @return the newly created Floating IP
     */
    @Named("floatingip:create")
    @POST
    @SelectJson("floatingip")
-   FloatingIP create(@WrapWith("floatingip") FloatingIP.CreateOptions createOptions);
+   FloatingIP create(@WrapWith("floatingip") FloatingIP.CreateFloatingIP createFloatingIP);
 
    /**
     * Update a Floating IP
     *
     * @param id the id of the Floating IP to update
-    * @param updateOptions Contains only the attributes to update
+    * @param updateFloatingIP Contains only the attributes to update
     * @return The modified Floating IP
     */
    @Named("floatingip:update")
@@ -122,7 +122,7 @@ public interface FloatingIPApi {
    @SelectJson("floatingip")
    @Fallback(NullOnNotFoundOr404.class)
    @Nullable
-   FloatingIP update(@PathParam("id") String id, @WrapWith("floatingip") FloatingIP.UpdateOptions updateOptions);
+   FloatingIP update(@PathParam("id") String id, @WrapWith("floatingip") FloatingIP.UpdateFloatingIP updateFloatingIP);
 
    /**
     * Deletes the specified floatingIP

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index 37cc282..e259d69 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -111,7 +111,7 @@ public interface RouterApi {
    @Named("router:create")
    @POST
    @SelectJson("router")
-   Router create(@WrapWith("router") Router.CreateOptions router);
+   Router create(@WrapWith("router") Router.CreateRouter router);
 
    /**
     * Update a router
@@ -126,7 +126,7 @@ public interface RouterApi {
    @SelectJson("router")
    @Fallback(NullOnNotFoundOr404.class)
    @Nullable
-   Router update(@PathParam("id") String id, @WrapWith("router") Router.UpdateOptions router);
+   Router update(@PathParam("id") String id, @WrapWith("router") Router.UpdateRouter router);
 
    /**
     * Deletes the specified router

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
index 4c0b4da..0832d4c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
@@ -100,7 +100,7 @@ public interface SecurityGroupApi {
    SecurityGroup getSecurityGroup(@PathParam("id") String id);
 
    /**
-    * Create a new SecurityGroup.
+    * Creates a new SecurityGroup.
     *
     * @param securityGroup Describes the security group to be created.
     * @return a reference of the newly-created security group
@@ -109,7 +109,7 @@ public interface SecurityGroupApi {
    @Named("secuity-group:create")
    @POST
    @SelectJson("security_group")
-   SecurityGroup create(@WrapWith("security_group") SecurityGroup.CreateOptions securityGroup);
+   SecurityGroup create(@WrapWith("security_group") SecurityGroup.CreateSecurityGroup securityGroup);
 
    /**
     * Deletes the specified Security Group.
@@ -161,7 +161,7 @@ public interface SecurityGroupApi {
    Rule get(@PathParam("id") String id);
 
    /**
-    * Create a new Security Group Rule.
+    * Creates a new Security Group Rule.
     *
     * @param securityGroupRule Describes the security group rule to be created.
     * @return a reference of the newly-created security group rule.
@@ -170,7 +170,7 @@ public interface SecurityGroupApi {
    @Named("security-group-rule:create")
    @POST
    @SelectJson("security_group_rule")
-   Rule create(@WrapWith("security_group_rule") Rule.CreateOptions securityGroupRule);
+   Rule create(@WrapWith("security_group_rule") Rule.CreateRule securityGroupRule);
 
    /**
     * Deletes the specified Security Group Rule.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
index 769ae1f..08e5586 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
@@ -16,9 +16,17 @@
  */
 package org.jclouds.openstack.neutron.v2.features;
 
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
 import org.jclouds.Fallbacks;
 import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
@@ -37,16 +45,9 @@ import org.jclouds.rest.annotations.SelectJson;
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.annotations.WrapWith;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
 
 /**
  * Provides access to Network operations for the OpenStack Networking (Neutron) v2 API.
@@ -108,7 +109,7 @@ public interface NetworkApi {
    @Named("network:create")
    @POST
    @SelectJson("network")
-   Network create(@WrapWith("network") Network.CreateOptions network);
+   Network create(@WrapWith("network") Network.CreateNetwork network);
 
    /**
     * Create multiple networks
@@ -119,7 +120,7 @@ public interface NetworkApi {
    @Named("network:createBulk")
    @POST
    @SelectJson("networks")
-   FluentIterable<Network> createBulk(@WrapWith("networks") ImmutableList<Network.CreateOptions> networks);
+   FluentIterable<Network> createBulk(@WrapWith("networks") ImmutableList<Network.CreateNetwork> networks);
 
    /**
     * Update a network
@@ -134,7 +135,7 @@ public interface NetworkApi {
    @SelectJson("network")
    @Fallback(Fallbacks.NullOnNotFoundOr404.class)
    @Nullable
-   Network update(@PathParam("id") String id, @WrapWith("network") Network.UpdateOptions network);
+   Network update(@PathParam("id") String id, @WrapWith("network") Network.UpdateNetwork network);
 
    /**
     * Deletes the specified network

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
index 30cdacc..6466a90 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
@@ -107,7 +107,7 @@ public interface PortApi {
    @Named("port:create")
    @POST
    @SelectJson("port")
-   Port create(@WrapWith("port") Port.CreateOptions port);
+   Port create(@WrapWith("port") Port.CreatePort port);
 
    /**
     * Create multiple ports
@@ -118,7 +118,7 @@ public interface PortApi {
    @Named("port:createBulk")
    @POST
    @SelectJson("ports")
-   FluentIterable<Port> createBulk(@WrapWith("ports") List<Port.CreateOptions> ports);
+   FluentIterable<Port> createBulk(@WrapWith("ports") List<Port.CreatePort> ports);
 
    /**
     * Update a port
@@ -132,7 +132,7 @@ public interface PortApi {
    @Path("/{id}")
    @SelectJson("port")
    @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   Port update(@PathParam("id") String id, @WrapWith("port") Port.UpdateOptions port);
+   Port update(@PathParam("id") String id, @WrapWith("port") Port.UpdatePort port);
 
    /**
     * Delete a port

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
index 3484e4a..7b6f54e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
@@ -104,7 +104,7 @@ public interface SubnetApi {
    @Named("subnet:create")
    @POST
    @SelectJson("subnet")
-   Subnet create(@WrapWith("subnet") Subnet.CreateOptions subnet);
+   Subnet create(@WrapWith("subnet") Subnet.CreateSubnet subnet);
 
    /**
     * Create multiple subnets
@@ -115,7 +115,7 @@ public interface SubnetApi {
    @Named("subnet:createBulk")
    @POST
    @SelectJson("subnets")
-   FluentIterable<Subnet> createBulk(@WrapWith("subnets") List<Subnet.CreateOptions> subnets);
+   FluentIterable<Subnet> createBulk(@WrapWith("subnets") List<Subnet.CreateSubnet> subnets);
 
    /**
     * Update a subnet
@@ -128,7 +128,7 @@ public interface SubnetApi {
    @Path("/{id}")
    @SelectJson("subnet")
    @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   Subnet update(@PathParam("id") String id, @WrapWith("subnet") Subnet.UpdateOptions subnet);
+   Subnet update(@PathParam("id") String id, @WrapWith("subnet") Subnet.UpdateSubnet subnet);
 
    /**
     * Delete a subnet

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseSecurityGroups.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseSecurityGroups.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseSecurityGroups.java
index fbc3fd4..3864781 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseSecurityGroups.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseSecurityGroups.java
@@ -16,14 +16,14 @@
  */
 package org.jclouds.openstack.neutron.v2.functions;
 
-import com.google.inject.TypeLiteral;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
 import org.jclouds.http.functions.ParseJson;
 import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
 import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
 
-import javax.inject.Inject;
-import javax.inject.Singleton;
+import com.google.inject.TypeLiteral;
 
 /**
  * Used by jclouds to provide more specific collections and fallbacks.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiLiveTest.java
index dd3dd8d..a3d5f3d 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiLiveTest.java
@@ -54,13 +54,13 @@ public class FloatingIPApiLiveTest extends BaseNeutronApiLiveTest {
 
          try {
             network = networkApi.create(
-                  Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
+                  Network.createBuilder("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
             assertNotNull(network);
 
-            ipv4SubnetId = subnetApi.create(Subnet.createOptions(network.getId(), "198.51.100.0/24").ipVersion(4)
+            ipv4SubnetId = subnetApi.create(Subnet.createBuilder(network.getId(), "198.51.100.0/24").ipVersion(4)
                   .name("JClouds-Live-IPv4-Subnet").build()).getId();
 
-            floatingIPApi.create(FloatingIP.createOptions(network.getId()).build());
+            floatingIPApi.create(FloatingIP.createBuilder(network.getId()).build());
 
             /* List and Get test */
             Set<FloatingIP> floatingIPs = floatingIPApi.list().concat().toSet();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
index 6187cd3..c28b1c8 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
@@ -54,7 +54,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
 
-         FloatingIP.CreateOptions createFip = FloatingIP.createOptions("376da547-b977-4cfe-9cba-275c80debf57")
+         FloatingIP.CreateFloatingIP createFip = FloatingIP.createBuilder("376da547-b977-4cfe-9cba-275c80debf57")
                .portId("ce705c24-c1ef-408a-bda3-7bbd946164ab")
                .build();
 
@@ -94,7 +94,7 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
 
-         FloatingIP.CreateOptions createFip = FloatingIP.createOptions("376da547-b977-4cfe-9cba-275c80debf57")
+         FloatingIP.CreateFloatingIP createFip = FloatingIP.createBuilder("376da547-b977-4cfe-9cba-275c80debf57")
                .portId("ce705c24-c1ef-408a-bda3-7bbd946164ab")
                .build();
 
@@ -295,11 +295,11 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
 
-         FloatingIP.UpdateOptions updateOptions = FloatingIP.updateOptions()
+         FloatingIP.UpdateFloatingIP updateFloatingIP = FloatingIP.updateBuilder()
                .portId("fc861431-0e6c-4842-a0ed-e2363f9bc3a8")
                .build();
 
-         FloatingIP floatingIP = api.update("12345", updateOptions);
+         FloatingIP floatingIP = api.update("12345", updateFloatingIP);
 
          /*
           * Check request
@@ -328,9 +328,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
 
-         FloatingIP.UpdateOptions updateOptions = FloatingIP.updateOptions().build();
+         FloatingIP.UpdateFloatingIP updateFloatingIP = FloatingIP.updateBuilder().build();
 
-         FloatingIP floatingIP = api.update("12345", updateOptions);
+         FloatingIP floatingIP = api.update("12345", updateFloatingIP);
 
          /*
           * Check request
@@ -359,11 +359,11 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
 
-         FloatingIP.UpdateOptions updateOptions = FloatingIP.updateOptions()
+         FloatingIP.UpdateFloatingIP updateFloatingIP = FloatingIP.updateBuilder()
                .portId("fc861431-0e6c-4842-a0ed-e2363f9bc3a8")
                .build();
 
-         FloatingIP floatingIP = api.update("12345", updateOptions);
+         FloatingIP floatingIP = api.update("12345", updateFloatingIP);
 
          /*
           * Check request

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
index 050dc72..2a006e8 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
@@ -23,12 +23,6 @@ import static org.testng.Assert.assertTrue;
 
 import java.util.Set;
 
-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;
@@ -55,13 +49,13 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
          SubnetApi subnetApi = api.getSubnetApi(region);
 
          Network network = networkApi.create(
-               Network.createOptions("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
+               Network.createBuilder("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());
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(network.getId(), "192.168.0.0/16").ipVersion(4).build());
          assertNotNull(subnet);
 
-         Router router = routerApi.create(Router.createOptions().name("jclouds-router-test")
+         Router router = routerApi.create(Router.createBuilder().name("jclouds-router-test")
             .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build());
          assertNotNull(router);
 
@@ -80,7 +74,7 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
          assertEquals(routerGet.getId(), router.getId());
          assertEquals(routerGet.getExternalGatewayInfo(), router.getExternalGatewayInfo());
 
-         Router routerUpdate = routerApi.update(router.getId(), Router.updateOptions().name("jclouds-router-test-rename").build());
+         Router routerUpdate = routerApi.update(router.getId(), Router.updateBuilder().name("jclouds-router-test-rename").build());
          assertNotNull(routerUpdate);
          assertEquals(routerUpdate.getName(), "jclouds-router-test-rename");
 
@@ -101,19 +95,19 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
          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());
+         Network network = networkApi.create(Network.createBuilder("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());
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(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());
+         Network network2 = networkApi.create(Network.createBuilder("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());
+         Subnet subnet2 = subnetApi.create(Subnet.createBuilder(network2.getId(), "192.169.0.0/16").ipVersion(4).build());
          assertNotNull(subnet2);
 
-         Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build());
+         Router router = routerApi.create(Router.createBuilder().name("jclouds-router-test").build());
          assertNotNull(router);
 
          RouterInterface routerInterface = routerApi.addInterfaceForSubnet(router.getId(), subnet.getId());
@@ -139,25 +133,25 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
          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());
+         Network network = networkApi.create(Network.createBuilder("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());
+         Subnet subnet = subnetApi.create(Subnet.createBuilder(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());
+         Network network2 = networkApi.create(Network.createBuilder("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());
+         Subnet subnet2 = subnetApi.create(Subnet.createBuilder(network2.getId(), "192.169.0.0/16").ipVersion(4).build());
          assertNotNull(subnet2);
 
-         Port port = portApi.create(Port.createOptions(network.getId()).build());
+         Port port = portApi.create(Port.createBuilder(network.getId()).build());
          assertNotNull(port);
 
-         Port port2 = portApi.create(Port.createOptions(network2.getId()).build());
+         Port port2 = portApi.create(Port.createBuilder(network2.getId()).build());
          assertNotNull(port2);
 
-         Router router = routerApi.create(Router.createOptions().name("jclouds-router-test").build());
+         Router router = routerApi.create(Router.createBuilder().name("jclouds-router-test").build());
          assertNotNull(router);
 
          RouterInterface routerInterface = routerApi.addInterfaceForPort(router.getId(), port.getId());

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index 36face9..346e820 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -27,17 +27,6 @@ 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;
-
-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;
@@ -69,7 +58,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true)
+         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(true)
                .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
@@ -107,11 +96,11 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.CreateOptions createRouter = Router.createOptions().name("another_router").adminStateUp(true)
+         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(true)
                .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
-         Router router = api.create(createRouter);
+         api.create(createRouter);
          fail("Should have failed with not found exception");
 
       } finally {
@@ -306,12 +295,12 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.UpdateOptions updateOptions = Router.updateOptions()
+         Router.UpdateRouter updateRouter = Router.updateBuilder()
                .externalGatewayInfo(
                      ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
-         Router router = api.update("12345", updateOptions);
+         Router router = api.update("12345", updateRouter);
 
          /*
           * Check request
@@ -344,12 +333,12 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.UpdateOptions updateOptions = Router.updateOptions()
+         Router.UpdateRouter updateRouter = Router.updateBuilder()
                .externalGatewayInfo(
                      ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
-         Router router = api.update("12345", updateOptions);
+         Router router = api.update("12345", updateRouter);
 
          /*
           * Check request

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
index 8771a3e..a7ef1a6 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
@@ -40,49 +40,60 @@ public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
     */
    public void testCreateUpdateAndDeleteSecurityGroup() {
       for (String region : api.getConfiguredRegions()) {
-         SecurityGroupApi sgApi = api.getSecurityGroupApi(region).get();
+         SecurityGroupApi sgApi = null;
+         Rule rule = null;
+         SecurityGroup securityGroup = null;
 
-         SecurityGroup securityGroup = sgApi.create(
-               SecurityGroup.createOptions().name("jclouds-test").description("jclouds test security group").build());
-         assertNotNull(securityGroup);
+         try {
+            sgApi = api.getSecurityGroupApi(region).get();
 
-         Rule rule = sgApi.create(
-               Rule.createOptions(RuleDirection.EGRESS, securityGroup.getId())
-                     .ethertype(RuleEthertype.IPV6)
-                     .portRangeMax(90)
-                     .portRangeMin(80)
-                     .protocol(RuleProtocol.TCP)
-                     .build());
+            securityGroup = sgApi.create(
+                  SecurityGroup.createBuilder().name("jclouds-test").description("jclouds test security group")
+                        .build());
+            assertNotNull(securityGroup);
 
-         assertNotNull(rule);
+            rule = sgApi.create(
+                  Rule.createBuilder(RuleDirection.EGRESS, securityGroup.getId())
+                        .ethertype(RuleEthertype.IPV6)
+                        .portRangeMax(90)
+                        .portRangeMin(80)
+                        .protocol(RuleProtocol.TCP)
+                        .build());
 
-         // Refresh
-         securityGroup = sgApi.getSecurityGroup(securityGroup.getId());
+            assertNotNull(rule);
 
-         assertEquals(securityGroup.getName(), "jclouds-test");
-         assertEquals(securityGroup.getDescription(), "jclouds test security group");
+            // Refresh
+            securityGroup = sgApi.getSecurityGroup(securityGroup.getId());
 
-         assertEquals(securityGroup.getRules().size(), 3, "Expected 2 default rules");
+            assertEquals(securityGroup.getName(), "jclouds-test");
+            assertEquals(securityGroup.getDescription(), "jclouds test security group");
 
-         Rule newSecGroupRule = null;
-         for(Rule sgr : securityGroup.getRules()) {
-            if(sgr.getId().equals(rule.getId())) {
-               newSecGroupRule = sgr;
-               break;
-            }
-         }
-         assertNotNull(newSecGroupRule, "Did not find the new rule in the group.");
+            assertEquals(securityGroup.getRules().size(), 3);
+
+            Rule newSecGroupRule = null;
 
-         assertEquals(rule, newSecGroupRule);
+            for (Rule sgr : securityGroup.getRules()) {
+               if (sgr.getId().equals(rule.getId())) {
+                  newSecGroupRule = sgr;
+                  break;
+               }
+            }
+            assertNotNull(newSecGroupRule, "Did not find the new rule in the group.");
 
-         assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
-         assertEquals(rule.getProtocol(), RuleProtocol.TCP);
-         assertEquals(rule.getPortRangeMax().intValue(), 90);
-         assertEquals(rule.getPortRangeMin().intValue(), 80);
-         assertEquals(rule.getDirection(), RuleDirection.EGRESS);
+            assertEquals(rule, newSecGroupRule);
 
-         assertTrue(sgApi.deleteRule(rule.getId()));
-         assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
+            assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
+            assertEquals(rule.getProtocol(), RuleProtocol.TCP);
+            assertEquals(rule.getPortRangeMax().intValue(), 90);
+            assertEquals(rule.getPortRangeMin().intValue(), 80);
+            assertEquals(rule.getDirection(), RuleDirection.EGRESS);
+         } finally {
+            try {
+               assertTrue(sgApi.deleteRule(rule.getId()));
+            } finally {
+               assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
+            }
+         }
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
index c14544d..dfe6a80 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
@@ -59,7 +59,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
 
-         SecurityGroup.CreateOptions createSecurityGroup = SecurityGroup.createOptions().name("new-webservers")
+         SecurityGroup.CreateSecurityGroup createSecurityGroup = SecurityGroup.createBuilder().name("new-webservers")
                .description("security group for webservers")
                .build();
 
@@ -101,7 +101,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
 
-         SecurityGroup.CreateOptions createSecurityGroup = SecurityGroup.createOptions().name("new-webservers")
+         SecurityGroup.CreateSecurityGroup createSecurityGroup = SecurityGroup.createBuilder().name("new-webservers")
                .description("security group for webservers")
                .build();
 
@@ -121,7 +121,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
 
-         Rule.CreateOptions createSecurityGroupRule = Rule.createOptions(
+         Rule.CreateRule createSecurityGroupRule = Rule.createBuilder(
                RuleDirection.INGRESS, "a7734e61-b545-452d-a3cd-0189cbd9747a")
                .portRangeMin(80)
                .portRangeMax(80)
@@ -168,7 +168,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
 
-         Rule.CreateOptions createSecurityGroupRule = Rule.createOptions(
+         Rule.CreateRule createSecurityGroupRule = Rule.createBuilder(
                RuleDirection.INGRESS, "a7734e61-b545-452d-a3cd-0189cbd9747a")
                .portRangeMin(80)
                .portRangeMax(80)
@@ -205,6 +205,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertNotNull(securityGroups);
          assertEquals(securityGroups.size(), 2);
+         // Ensures the full collection is parsed and ordering is preserved.
          assertEquals(securityGroups.first().get().getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
          assertEquals(securityGroups.get(1).getId(), "85cc3048-abc3-43cc-89b3-377341426ac52");
       } finally {
@@ -261,6 +262,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertNotNull(rules);
          assertEquals(rules.size(), 4);
+         // Ensures the full collection is parsed and ordering is preserved.
          assertEquals(rules.first().get().getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
          assertEquals(rules.get(3).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c");
       } finally {
@@ -321,6 +323,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertNotNull(securityGroups);
          assertEquals(securityGroups.size(), 4);
+         // Ensures ordering is preserved and both pages are parsed.
          assertEquals(securityGroups.get(0).getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
          assertEquals(securityGroups.get(3).getId(), "85cc3048-abc3-43cc-89b3-377341426ac524");
 
@@ -385,6 +388,7 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertNotNull(rules);
          assertEquals(rules.size(), 8);
+         // Ensures both pages are tested and ordering is preserved.
          assertEquals(rules.get(0).getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
          assertEquals(rules.get(7).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c2");
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiLiveTest.java
index ba5b9ee..1d4e3a0 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiLiveTest.java
@@ -40,8 +40,8 @@ public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
    public void testCreateUpdateAndDeleteNetwork() {
       for (String region : api.getConfiguredRegions()) {
          NetworkApi networkApi = api.getNetworkApi(region);
-         Network net = networkApi.create(Network.createOptions("jclouds-test").networkType(NetworkType.LOCAL).build());
-         Network test = networkApi.create(Network.createOptions("jclouds-test").build());
+         Network net = networkApi.create(Network.createBuilder("jclouds-test").networkType(NetworkType.LOCAL).build());
+         Network test = networkApi.create(Network.createBuilder("jclouds-test").build());
          assertNotNull(net);
 
          /* List and get tests */
@@ -57,7 +57,7 @@ public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
          assertEquals(network.getName(), "jclouds-test");
          assertEquals(network.getNetworkType(), NetworkType.LOCAL);
          assertTrue(network.getSubnets().isEmpty());
-         assertNotNull(networkApi.update(net.getId(), Network.updateOptions().name("jclouds-live-test").build()));
+         assertNotNull(networkApi.update(net.getId(), Network.updateBuilder().name("jclouds-live-test").build()));
 
          network = networkApi.get(net.getId());
 
@@ -65,7 +65,7 @@ public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
          assertEquals(network.getName(), "jclouds-live-test");
          assertTrue(network.getSubnets().isEmpty());
 
-         Network net2 = networkApi.create(Network.createOptions("jclouds-test2").networkType(NetworkType.LOCAL).build());
+         Network net2 = networkApi.create(Network.createBuilder("jclouds-test2").networkType(NetworkType.LOCAL).build());
          assertNotNull(net2);
 
          assertTrue(networkApi.delete(net.getId()));
@@ -79,9 +79,9 @@ public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
          NetworkApi networkApi = api.getNetworkApi(region);
          Set<Network> nets = networkApi.createBulk(
                ImmutableList.of(
-                  Network.createOptions("jclouds-live-test-1").networkType(NetworkType.LOCAL).adminStateUp(true).build(),
-                  Network.createOptions("jclouds-live-test-2").networkType(NetworkType.LOCAL).adminStateUp(false).build(),
-                  Network.createOptions("jclouds-live-test-3").networkType(NetworkType.LOCAL).adminStateUp(false).build()
+                  Network.createBuilder("jclouds-live-test-1").networkType(NetworkType.LOCAL).adminStateUp(true).build(),
+                  Network.createBuilder("jclouds-live-test-2").networkType(NetworkType.LOCAL).adminStateUp(false).build(),
+                  Network.createBuilder("jclouds-live-test-3").networkType(NetworkType.LOCAL).adminStateUp(false).build()
                )
          ).toSet();
          Set<Network> existingNets = networkApi.list().concat().toSet();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
index 3ef3a85..641e276 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
@@ -56,7 +56,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.CreateOptions createNetwork = Network.createOptions("jclouds-wibble")
+         Network.CreateNetwork createNetwork = Network.createBuilder("jclouds-wibble")
                .networkType(NetworkType.LOCAL)
                .build();
 
@@ -92,7 +92,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.CreateOptions createNetwork = Network.createOptions("jclouds-wibble")
+         Network.CreateNetwork createNetwork = Network.createBuilder("jclouds-wibble")
                .networkType(NetworkType.LOCAL)
                .build();
 
@@ -285,11 +285,11 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.CreateOptions createNetwork1 = Network.createOptions("jclouds-wibble")
+         Network.CreateNetwork createNetwork1 = Network.createBuilder("jclouds-wibble")
                .networkType(NetworkType.LOCAL)
                .build();
 
-         Network.CreateOptions createNetwork2 = Network.createOptions("jclouds-wibble2")
+         Network.CreateNetwork createNetwork2 = Network.createBuilder("jclouds-wibble2")
                .networkType(NetworkType.LOCAL)
                .build();
 
@@ -332,11 +332,11 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.CreateOptions createNetwork1 = Network.createOptions("jclouds-wibble")
+         Network.CreateNetwork createNetwork1 = Network.createBuilder("jclouds-wibble")
                .networkType(NetworkType.LOCAL)
                .build();
 
-         Network.CreateOptions createNetwork2 = Network.createOptions("jclouds-wibble2")
+         Network.CreateNetwork createNetwork2 = Network.createBuilder("jclouds-wibble2")
                .networkType(NetworkType.LOCAL)
                .build();
 
@@ -355,7 +355,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.UpdateOptions updateNetwork = Network.updateOptions()
+         Network.UpdateNetwork updateNetwork = Network.updateBuilder()
                .name("jclouds-wibble-updated")
                .networkType(NetworkType.LOCAL)
                .build();
@@ -388,7 +388,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          NetworkApi api = neutronApi.getNetworkApi("RegionOne");
 
-         Network.UpdateOptions updateNetwork = Network.updateOptions()
+         Network.UpdateNetwork updateNetwork = Network.updateBuilder()
                .name("jclouds-wibble-updated")
                .networkType(NetworkType.LOCAL)
                .build();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0485a564/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiLiveTest.java
index 8ca9f9a..bcde014 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiLiveTest.java
@@ -48,19 +48,19 @@ public class PortApiLiveTest extends BaseNeutronApiLiveTest {
          SubnetApi subnetApi = api.getSubnetApi(region);
          PortApi portApi = api.getPortApi(region);
          String networkId = networkApi.create(
-               Network.createOptions("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
-         String ipv4SubnetId = subnetApi.create(Subnet.createOptions(networkId, "198.51.100.0/24").ipVersion(4)
+               Network.createBuilder("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
+         String ipv4SubnetId = subnetApi.create(Subnet.createBuilder(networkId, "198.51.100.0/24").ipVersion(4)
                .name("JClouds-Live-IPv4-Subnet").build()).getId();
-         String ipv6SubnetId = subnetApi.create(Subnet.createOptions(networkId, "a1ca:1e1:c:107d::/96").ipVersion(6)
+         String ipv6SubnetId = subnetApi.create(Subnet.createBuilder(networkId, "a1ca:1e1:c:107d::/96").ipVersion(6)
                .name("JClouds-Live-IPv6-Subnet").build()).getId();
 
          assertNotNull(networkId);
          assertNotNull(ipv4SubnetId);
          assertNotNull(ipv6SubnetId);
 
-         String ipv4PortId = portApi.create(Port.createOptions(networkId).name("JClouds-Live-IPv4-Port")
+         String ipv4PortId = portApi.create(Port.createBuilder(networkId).name("JClouds-Live-IPv4-Port")
                .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv4SubnetId))).build()).getId();
-         String ipv6PortId = portApi.create(Port.createOptions(networkId).name("JClouds-Live-IPv6-Port")
+         String ipv6PortId = portApi.create(Port.createBuilder(networkId).name("JClouds-Live-IPv6-Port")
                .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv6SubnetId))).build()).getId();
 
          /* List and get test */
@@ -83,7 +83,7 @@ public class PortApiLiveTest extends BaseNeutronApiLiveTest {
          assertEquals(ipv6Port.getId(), ipv6PortId);
          assertEquals(ipv6Port.getName(), "JClouds-Live-IPv6-Port");
 
-         assertNotNull(portApi.update(ipv4PortId, Port.updateOptions().name("Updated").build()));
+         assertNotNull(portApi.update(ipv4PortId, Port.updateBuilder().name("Updated").build()));
          Port updatedIpv4Port = portApi.get(ipv4PortId);
          assertEquals(updatedIpv4Port.getName(), "Updated");
 
@@ -102,10 +102,10 @@ public class PortApiLiveTest extends BaseNeutronApiLiveTest {
          PortApi portApi = api.getPortApi(region);
 
          String networkId = networkApi.create(
-               Network.createOptions("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
-         String ipv4SubnetId = subnetApi.create(Subnet.createOptions(networkId, "198.51.100.0/24").ipVersion(4)
+               Network.createBuilder("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
+         String ipv4SubnetId = subnetApi.create(Subnet.createBuilder(networkId, "198.51.100.0/24").ipVersion(4)
                .name("JClouds-Live-IPv4-Subnet").build()).getId();
-         String ipv6SubnetId = subnetApi.create(Subnet.createOptions(networkId, "a1ca:1e1:c:107d::/96").ipVersion(6)
+         String ipv6SubnetId = subnetApi.create(Subnet.createBuilder(networkId, "a1ca:1e1:c:107d::/96").ipVersion(6)
                .name("JClouds-Live-IPv6-Subnet").build()).getId();
 
          assertNotNull(networkId);
@@ -114,13 +114,13 @@ public class PortApiLiveTest extends BaseNeutronApiLiveTest {
 
          Set<? extends Port> ports = portApi.createBulk(
                ImmutableList.of(
-                     Port.createOptions(networkId).name("JClouds-Live-IPv4-Subnet-1")
+                     Port.createBuilder(networkId).name("JClouds-Live-IPv4-Subnet-1")
                            .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv4SubnetId))).build(),
-                     Port.createOptions(networkId).name("JClouds-Live-IPv4-Subnet-2")
+                     Port.createBuilder(networkId).name("JClouds-Live-IPv4-Subnet-2")
                            .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv4SubnetId))).build(),
-                     Port.createOptions(networkId).name("JClouds-Live-IPv6-Subnet-1")
+                     Port.createBuilder(networkId).name("JClouds-Live-IPv6-Subnet-1")
                            .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv6SubnetId))).build(),
-                     Port.createOptions(networkId).name("JClouds-Live-IPv6-Subnet-2")
+                     Port.createBuilder(networkId).name("JClouds-Live-IPv6-Subnet-2")
                            .fixedIps(ImmutableSet.copyOf(getFixedAddresses(ipv6SubnetId))).build()
                )
          ).toSet();


[15/50] [abbrv] jclouds git commit: Revert "JCLOUDS-653: Address Guava 18 deprecations"

Posted by na...@apache.org.
Revert "JCLOUDS-653: Address Guava 18 deprecations"

This reverts commit 65e1def4bdc1d763f505a8316dd6eb78f26300a8.

Many conflicts due to many changes between above commit and now.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/bec0a921
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/bec0a921
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/bec0a921

Branch: refs/heads/master
Commit: bec0a921dad063934b13b34206bb76d652c10e39
Parents: a164c07
Author: Adrian Cole <ad...@gmail.com>
Authored: Thu Oct 23 20:21:23 2014 -0700
Committer: Adrian Cole <ac...@twitter.com>
Committed: Fri Oct 24 11:27:49 2014 -0700

----------------------------------------------------------------------
 .../openstack/neutron/v2/domain/AddressPair.java     | 15 ++++++++-------
 .../openstack/neutron/v2/domain/AllocationPool.java  | 10 +++++-----
 .../neutron/v2/domain/ExternalGatewayInfo.java       | 11 ++++++-----
 .../openstack/neutron/v2/domain/ExtraDhcpOption.java | 13 +++++++------
 .../openstack/neutron/v2/domain/FloatingIP.java      |  5 +++--
 .../openstack/neutron/v2/domain/HostRoute.java       | 13 +++++++------
 .../org/jclouds/openstack/neutron/v2/domain/IP.java  | 13 +++++++------
 .../jclouds/openstack/neutron/v2/domain/Network.java |  3 +--
 .../openstack/neutron/v2/domain/NetworkSegment.java  | 13 +++++++------
 .../jclouds/openstack/neutron/v2/domain/Port.java    |  3 +--
 .../jclouds/openstack/neutron/v2/domain/Router.java  |  3 +--
 .../openstack/neutron/v2/domain/RouterInterface.java | 13 +++++++------
 .../jclouds/openstack/neutron/v2/domain/Rule.java    |  3 +--
 .../jclouds/openstack/neutron/v2/domain/Rules.java   |  1 +
 .../openstack/neutron/v2/domain/SecurityGroup.java   |  4 ++--
 .../jclouds/openstack/neutron/v2/domain/Subnet.java  |  3 +--
 .../neutron/v2/domain/lbaas/v1/HealthMonitor.java    |  3 +--
 .../v2/domain/lbaas/v1/HealthMonitorStatus.java      |  5 ++---
 .../openstack/neutron/v2/domain/lbaas/v1/Member.java |  3 +--
 .../openstack/neutron/v2/domain/lbaas/v1/Pool.java   |  3 +--
 .../neutron/v2/domain/lbaas/v1/PoolStatus.java       |  5 ++---
 .../v2/domain/lbaas/v1/SessionPersistence.java       |  5 ++---
 .../openstack/neutron/v2/domain/lbaas/v1/VIP.java    |  3 +--
 .../neutron/v2_0/domain/AllocationPool.java          |  5 ++---
 .../openstack/neutron/v2_0/domain/BulkNetwork.java   |  5 ++---
 .../openstack/neutron/v2_0/domain/BulkPort.java      |  5 ++---
 .../openstack/neutron/v2_0/domain/BulkSubnet.java    |  5 ++---
 .../neutron/v2_0/domain/ExternalGatewayInfo.java     |  5 ++---
 .../openstack/neutron/v2_0/domain/HostRoute.java     |  5 ++---
 .../jclouds/openstack/neutron/v2_0/domain/IP.java    |  5 ++---
 .../openstack/neutron/v2_0/domain/Network.java       |  3 +--
 .../jclouds/openstack/neutron/v2_0/domain/Port.java  |  3 +--
 .../openstack/neutron/v2_0/domain/Reference.java     |  5 ++---
 .../neutron/v2_0/domain/ReferenceWithName.java       |  2 +-
 .../openstack/neutron/v2_0/domain/Router.java        |  3 +--
 .../neutron/v2_0/domain/RouterInterface.java         |  5 ++---
 .../openstack/neutron/v2_0/domain/Subnet.java        |  2 +-
 37 files changed, 98 insertions(+), 113 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
index a222908..e2d888c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
@@ -16,14 +16,15 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import static com.google.common.base.Preconditions.checkNotNull;
 
-import javax.inject.Named;
 import java.beans.ConstructorProperties;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * Contains a mapping between a MAC address and an IP address.
@@ -87,8 +88,8 @@ public class AddressPair  {
       return Objects.equal(this.macAddress, that.macAddress) && Objects.equal(this.ipAddress, that.ipAddress);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("macAddress", macAddress).add("ipAddress", ipAddress);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("macAddress", macAddress).add("ipAddress", ipAddress);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
index ef681e7..6d20999 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
@@ -16,11 +16,11 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
+import java.beans.ConstructorProperties;
+
 import org.jclouds.javax.annotation.Nullable;
 
-import java.beans.ConstructorProperties;
+import com.google.common.base.Objects;
 
 /**
  * A Neutron Subnet Allocation Pool
@@ -72,8 +72,8 @@ public class AllocationPool {
       return Objects.equal(this.start, that.start) && Objects.equal(this.end, that.end);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("start", start).add("end", end);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("start", start).add("end", end);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
index 631e8af..9f538a5 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * Information on the external gateway for the router
@@ -89,7 +90,7 @@ public class ExternalGatewayInfo {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("networkId", networkId)
             .add("enableSnat", enableSnat)
             .toString();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
index 91ff9d9..cdc448e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * This is used to provide additional DHCP-related options to Subnet. This is
@@ -88,8 +89,8 @@ public class ExtraDhcpOption {
             && Objects.equal(this.optionValue, that.optionValue);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("optionName", optionName).add("optionValue", optionValue);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("id", id).add("optionName", optionName).add("optionValue", optionValue);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
index ea3fe87..9c1540c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
@@ -17,10 +17,11 @@
 package org.jclouds.openstack.neutron.v2.domain;
 
 import java.beans.ConstructorProperties;
+
 import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
-import com.google.common.base.MoreObjects;
+
 import com.google.common.base.Objects;
 
 /**
@@ -152,7 +153,7 @@ public class FloatingIP {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("routerId", routerId)
             .add("tenantId", tenantId)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
index 476a927..6ff0ddc 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
@@ -16,13 +16,14 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
 
 /**
  * A Neutron Subnet Host Route
@@ -72,7 +73,7 @@ public class HostRoute {
    }
 
    protected ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("destinationCidr", destinationCidr).add("nextHop", nextHop);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
index c8ff037..53c83ca 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * Describes an IP address
@@ -70,8 +71,8 @@ public class IP {
       return Objects.equal(this.ipAddress, that.ipAddress) && Objects.equal(this.subnetId, that.subnetId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("ipAddress", ipAddress).add("subnetId", subnetId);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("ipAddress", ipAddress).add("subnetId", subnetId);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
index c269593..ac40019 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -24,7 +24,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -339,7 +338,7 @@ public class Network {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("subnets", subnets)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
index 28f998b..4096e51 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * A Neutron Network Segment
@@ -88,8 +89,8 @@ public class NetworkSegment {
             && Objects.equal(this.segmentationId, that.segmentationId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("networkType", networkType).add("physicalNetwork", physicalNetwork)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("networkType", networkType).add("physicalNetwork", physicalNetwork)
             .add("segmentationId", segmentationId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
index f22d2fa..a9ab61e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
@@ -24,7 +24,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -428,7 +427,7 @@ public class Port {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("vifType", vifType)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
index 7330c9b..0b06531 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -162,7 +161,7 @@ public class Router {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("name", name)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
index 9d5b93f..ff30dae 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
@@ -16,12 +16,13 @@
  */
 package org.jclouds.openstack.neutron.v2.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Objects;
-import org.jclouds.javax.annotation.Nullable;
+import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
-import java.beans.ConstructorProperties;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
 
 /**
  * A Neutron Router Interface
@@ -74,8 +75,8 @@ public class RouterInterface {
       return Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.portId, that.portId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("subnetId", subnetId).add("portId", portId);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("subnetId", subnetId).add("portId", portId);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
index 21e1eda..89e9d19 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
@@ -25,7 +25,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -196,7 +195,7 @@ public class Rule {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("tenantId", tenantId)
             .add("direction", direction)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rules.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rules.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rules.java
index 4794a18..505ff36 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rules.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rules.java
@@ -20,6 +20,7 @@ import java.beans.ConstructorProperties;
 
 import org.jclouds.openstack.v2_0.domain.Link;
 import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
 import com.google.common.collect.ImmutableSet;
 
 /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
index 1ade76e..5008c02 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
@@ -19,9 +19,9 @@ package org.jclouds.openstack.neutron.v2.domain;
 import java.beans.ConstructorProperties;
 
 import javax.inject.Named;
+
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 
@@ -121,7 +121,7 @@ public class SecurityGroup {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("tenantId", tenantId)
             .add("name", name)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
index 1f05709..6e0cfc0 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
@@ -25,7 +25,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -244,7 +243,7 @@ public class Subnet {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
             .add("id", id)
             .add("name", name)
             .add("networkId", networkId)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
index 29ec991..593690d 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 
@@ -226,7 +225,7 @@ public class HealthMonitor {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("type", type)
+      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("type", type)
             .add("delay", delay).add("timeout", timeout).add("maxRetries", maxRetries).add("httpMethod", httpMethod)
             .add("urlPath", urlPath).add("expectedCodes", expectedCodes).add("pools", pools)
             .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
index ad8d468..64e3aea 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -88,8 +87,8 @@ public class HealthMonitorStatus {
             && Objects.equal(this.statusDescription, that.statusDescription);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("id", id).add("status", status)
             .add("statusDescription", statusDescription);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
index bff6cfe..da53e23 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -179,7 +178,7 @@ public class Member {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("poolId", poolId)
+      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("poolId", poolId)
             .add("address", address).add("protocolPort", protocolPort).add("weight", weight)
             .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
             .toString();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
index 5139141..c1aa88d 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -258,7 +257,7 @@ public class Pool {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("vipId", vipId)
+      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("vipId", vipId)
             .add("name", name).add("description", description).add("subnetId", subnetId).add("protocol", protocol)
             .add("provider", provider).add("lbMethod", lbMethod).add("healthMonitors", healthMonitors)
             .add("healthMonitorsStatus", healthMonitorsStatus).add("members", members)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
index 07989e7..869eb81 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -88,8 +87,8 @@ public class PoolStatus {
             && Objects.equal(this.statusDescription, that.statusDescription);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("id", id).add("status", status)
             .add("statusDescription", statusDescription);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
index c984ac4..b1c49dd 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -74,8 +73,8 @@ public class SessionPersistence {
       return Objects.equal(this.type, that.type) && Objects.equal(this.cookieName, that.cookieName);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("type", type).add("cookieName", cookieName);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("type", type).add("cookieName", cookieName);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
index d3539a9..ae62625 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
@@ -22,7 +22,6 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -251,7 +250,7 @@ public class VIP {
 
    @Override
    public String toString() {
-      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
+      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
             .add("description", description).add("subnetId", subnetId).add("address", address).add("portId", portId)
             .add("protocol", protocol).add("protocolPort", protocolPort).add("poolId", poolId)
             .add("sessionPersistence", sessionPersistence).add("connectionLimit", connectionLimit)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
index b139a50..f81192e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
@@ -17,9 +17,8 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
 
 import java.beans.ConstructorProperties;
 
@@ -69,7 +68,7 @@ public class AllocationPool {
    }
 
    protected ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("start", start).add("end", end);
+      return Objects.toStringHelper(this).add("start", start).add("end", end);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
index d3e6438..f2e4a0e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -107,8 +106,8 @@ public class BulkNetwork {
          && Objects.equal(this.segmentationId, that.segmentationId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("name", name).add("adminStateUp", adminStateUp).add("external", external)
          .add("networkType", networkType).add("physicalNetworkName", physicalNetworkName)
          .add("segmentationId", segmentationId);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
index ab5d733..91c2637 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -120,8 +119,8 @@ public class BulkPort {
          && Objects.equal(this.macAddress, that.macAddress);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("name", name).add("networkId", networkId).add("adminStateUp", adminStateUp)
          .add("deviceId", deviceId).add("deviceOwner", deviceOwner).add("fixedIps", fixedIps).add("macAddress", macAddress);
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
index 56d3b2a..c1eea45 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -142,8 +141,8 @@ public class BulkSubnet {
          && Objects.equal(this.hostRoutes, that.hostRoutes);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("name", name).add("networkId", networkId).add("gatewayIp", gatewayIp).add("ipVersion", ipVersion)
          .add("cidr", cidr).add("enableDhcp", enableDhcp).add("allocationPools", allocationPools)
          .add("dnsNameServers", dnsNameServers).add("hostRoutes", hostRoutes);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
index 1adc653..f5473ed 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -54,8 +53,8 @@ public class ExternalGatewayInfo {
       return Objects.equal(this.networkId, that.networkId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this).add("networkId", networkId);
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this).add("networkId", networkId);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
index adbc802..c5dcb56 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
@@ -17,9 +17,8 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
 
 import java.beans.ConstructorProperties;
 
@@ -69,7 +68,7 @@ public class HostRoute {
    }
 
    protected ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+      return Objects.toStringHelper(this)
          .add("destinationCidr", destinationCidr).add("nextHop", nextHop);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
index 286f1a0..689a53e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -62,8 +61,8 @@ public class IP {
       return Objects.equal(this.ipAddress, that.ipAddress) && Objects.equal(this.subnetId, that.subnetId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("ipAddress", ipAddress).add("subnetId", subnetId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
index 227642c..3aa1804 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -136,7 +135,7 @@ public class Network extends ReferenceWithName {
          && Objects.equal(this.segmentationId, that.segmentationId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
+   protected Objects.ToStringHelper string() {
       return super.string()
          .add("state", state).add("subnets", subnets).add("adminStateUp", adminStateUp).add("shared", shared).add("external", external)
          .add("networkType", networkType).add("physicalNetworkName", physicalNetworkName).add("segmentationId", segmentationId);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
index 38d0097..75f491f 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -124,7 +123,7 @@ public class Port extends ReferenceWithName {
          && Objects.equal(this.macAddress, that.macAddress);
    }
 
-   protected MoreObjects.ToStringHelper string() {
+   protected Objects.ToStringHelper string() {
       return super.string()
          .add("state", state).add("adminStateUp", adminStateUp).add("networkId", networkId).add("deviceId", deviceId)
          .add("deviceOwner", deviceOwner).add("fixedIps", fixedIps).add("macAddress", macAddress);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
index de79ec0..0458118 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -69,8 +68,8 @@ public class Reference {
       return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("id", id).add("tenantId", tenantId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
index 36d729a..28db0be 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
@@ -17,8 +17,8 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.base.Strings;
 
 import java.beans.ConstructorProperties;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
index 7d14dc4..5096ed9 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -80,7 +79,7 @@ public class Router extends ReferenceWithName {
          && Objects.equal(this.externalGatewayInfo, that.externalGatewayInfo);
    }
 
-   protected MoreObjects.ToStringHelper string() {
+   protected Objects.ToStringHelper string() {
       return super.string()
          .add("adminStateUp", adminStateUp).add("state", state).add("externalGatewayInfo", externalGatewayInfo != null ? externalGatewayInfo.toString() : "");
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
index 05c8e5c..f1a9c70 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
@@ -17,7 +17,6 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 import java.beans.ConstructorProperties;
@@ -67,8 +66,8 @@ public class RouterInterface {
       return Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.portId, that.portId);
    }
 
-   protected MoreObjects.ToStringHelper string() {
-      return MoreObjects.toStringHelper(this)
+   protected Objects.ToStringHelper string() {
+      return Objects.toStringHelper(this)
          .add("subnetId", subnetId).add("portId", portId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/bec0a921/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
index a77afde..9faf8bd 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
@@ -17,8 +17,8 @@
 
 package org.jclouds.openstack.neutron.v2_0.domain;
 
-import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
 import com.google.common.collect.ImmutableSet;
 
 import java.beans.ConstructorProperties;


[44/50] [abbrv] jclouds git commit: Next development version 2.1.0-SNAPSHOT

Posted by na...@apache.org.
Next development version 2.1.0-SNAPSHOT


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d03f061a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d03f061a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d03f061a

Branch: refs/heads/master
Commit: d03f061a686639fca238ccfb50dae7f5ecb56a18
Parents: d6a16b8
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Nov 15 01:13:00 2016 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Nov 15 01:13:00 2016 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/d03f061a/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index e972b0c..eff1d88 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -22,14 +22,14 @@
   <parent>
     <groupId>org.apache.jclouds</groupId>
     <artifactId>jclouds-project</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath />
   </parent>
 
   <!-- TODO: when out of labs, switch to org.jclouds.api -->
   <groupId>org.apache.jclouds.labs</groupId>
   <artifactId>openstack-neutron</artifactId>
-  <version>2.0.0</version>
+  <version>2.1.0-SNAPSHOT</version>
   <name>jclouds openstack-neutron api</name>
   <description>jclouds components to access an implementation of OpenStack Neutron</description>
   <packaging>bundle</packaging>


[46/50] [abbrv] jclouds git commit: Make auto service optional

Posted by na...@apache.org.
Make auto service optional

This makes dependencies consistent and eliminates warnings of the
form:

$M2_HOME/repository/org/apache/jclouds/driver/jclouds-slf4j/2.1.0-SNAPSHOT/jclouds-slf4j-2.1.0-SNAPSHOT.jar(org/jclouds/logging/slf4j/config/SLF4JLoggingModule.class): warning: Cannot find annotation method 'value()' in type 'AutoService': class file for com.google.auto.service.AutoService not found

Reference:

https://github.com/google/auto/tree/master/service#download


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/c20afbed
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c20afbed
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c20afbed

Branch: refs/heads/master
Commit: c20afbeda64b2ef88fd82a5534d6c29274ace343
Parents: 6b8a813
Author: Andrew Gaul <ga...@apache.org>
Authored: Wed Aug 30 12:27:08 2017 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Wed Aug 30 12:27:08 2017 -0700

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/c20afbed/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index eff1d88..1446d98 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -110,6 +110,7 @@
       <groupId>com.google.auto.service</groupId>
       <artifactId>auto-service</artifactId>
       <scope>provided</scope>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>com.google.auto.value</groupId>


[39/50] [abbrv] jclouds git commit: JCLOUDS-691: Remove 404 fallbacks of PUT and POST calls from OpenStack APIs

Posted by na...@apache.org.
JCLOUDS-691: Remove 404 fallbacks of PUT and POST calls from OpenStack APIs


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/01ca3425
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/01ca3425
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/01ca3425

Branch: refs/heads/master
Commit: 01ca3425cc9405a23758a07a442f78872a80ecb5
Parents: 19b3a41
Author: Reijhanniel Jearl Campos <de...@gmail.com>
Authored: Fri Feb 5 09:06:55 2016 +0800
Committer: Reijhanniel Jearl Campos <de...@apache.org>
Committed: Sat Feb 6 08:02:16 2016 +0800

----------------------------------------------------------------------
 .../neutron/v2/extensions/FWaaSApi.java         |   7 -
 .../neutron/v2/extensions/FloatingIPApi.java    |   2 -
 .../neutron/v2/extensions/RouterApi.java        |   6 -
 .../v2/extensions/lbaas/v1/LBaaSApi.java        |   8 -
 .../neutron/v2/features/NetworkApi.java         |   2 -
 .../openstack/neutron/v2/features/PortApi.java  |   1 -
 .../neutron/v2/features/SubnetApi.java          |   1 -
 .../neutron/v2/extensions/FWaaSApiMockTest.java | 418 +----------
 .../v2/extensions/FloatingIPApiMockTest.java    | 179 -----
 .../v2/extensions/RouterApiMockTest.java        | 303 --------
 .../v2/extensions/SecurityGroupApiMockTest.java | 298 --------
 .../extensions/lbaas/v1/LBaaSApiMockTest.java   | 742 +------------------
 .../v2/features/ExtensionApiMockTest.java       |  56 --
 .../neutron/v2/features/NetworkApiMockTest.java | 160 +---
 .../neutron/v2/features/PortApiMockTest.java    | 195 -----
 .../neutron/v2/features/SubnetApiMockTest.java  | 189 -----
 16 files changed, 7 insertions(+), 2560 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
index 4d9edcd..68bc807 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
@@ -136,8 +136,6 @@ public interface FWaaSApi {
    @PUT
    @Path("/firewalls/{id}")
    @SelectJson("firewall")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    Firewall update(@PathParam("id") String id, @WrapWith("firewall") UpdateFirewall updateFirewall);
 
    /**
@@ -183,7 +181,6 @@ public interface FWaaSApi {
    @Named("firewall:updatePolicy")
    @PUT
    @SelectJson("firewall_policy")
-   @Fallback(NullOnNotFoundOr404.class)
    @Path("/firewall_policies/{id}")
    FirewallPolicy updateFirewallPolicy(@PathParam("id") String id, @WrapWith("firewall_policy") UpdateFirewallPolicy updateFirewallPolicy);
 
@@ -225,8 +222,6 @@ public interface FWaaSApi {
    @PUT
    @Path("/firewall_rules/{id}")
    @SelectJson("firewall_rule")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    FirewallRule updateFirewallRule(@PathParam("id") String id, @WrapWith("firewall_rule") UpdateFirewallRule updateFirewallRule);
 
    @Named("firewall:deleteFirewallRule")
@@ -238,8 +233,6 @@ public interface FWaaSApi {
    @Named("firewall:insertFirewallRuleToPolicy")
    @PUT
    @Path("/firewall_policies/{id}/insert_rule")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    FirewallPolicy insertFirewallRuleToPolicy(@PathParam("id") String policyId, @WrapWith("firewall_rule_id") String firewallRuleId);
 
    @Named("firewall:removeFirewallRuleFromPolicy")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
index 9f0164a..98da377 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -123,8 +123,6 @@ public interface FloatingIPApi {
    @PUT
    @Path("/{id}")
    @SelectJson("floatingip")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    FloatingIP update(@PathParam("id") String id, @WrapWith("floatingip") FloatingIP.UpdateFloatingIP updateFloatingIP);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index b4668aa..6cddbdc 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -127,8 +127,6 @@ public interface RouterApi {
    @PUT
    @Path("/{id}")
    @SelectJson("router")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    Router update(@PathParam("id") String id, @WrapWith("router") Router.UpdateRouter router);
 
    /**
@@ -154,8 +152,6 @@ public interface RouterApi {
    @PUT
    @Path("/{id}/add_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    RouterInterface addInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
 
    /**
@@ -169,8 +165,6 @@ public interface RouterApi {
    @PUT
    @Path("/{id}/add_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    RouterInterface addInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
index dad80d8..6f6d767 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
@@ -142,8 +142,6 @@ public interface LBaaSApi {
    @PUT
    @Path("/vips/{id}")
    @SelectJson("vip")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    VIP updateVIP(@PathParam("id") String id, @WrapWith("vip") VIP.UpdateVIP vip);
 
    /**
@@ -220,8 +218,6 @@ public interface LBaaSApi {
    @PUT
    @Path("/pools/{id}")
    @SelectJson("pool")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    Pool updatePool(@PathParam("id") String id, @WrapWith("pool") Pool.UpdatePool pool);
 
    /**
@@ -298,8 +294,6 @@ public interface LBaaSApi {
    @PUT
    @Path("/members/{id}")
    @SelectJson("member")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    Member updateMember(@PathParam("id") String id, @WrapWith("member") Member.UpdateMember member);
 
    /**
@@ -376,8 +370,6 @@ public interface LBaaSApi {
    @PUT
    @Path("/health_monitors/{id}")
    @SelectJson("health_monitor")
-   @Fallback(NullOnNotFoundOr404.class)
-   @Nullable
    HealthMonitor updateHealthMonitor(@PathParam("id") String id,
          @WrapWith("health_monitor") HealthMonitor.UpdateHealthMonitor healthMonitor);
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
index 08e5586..2706517 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
@@ -133,8 +133,6 @@ public interface NetworkApi {
    @PUT
    @Path("/{id}")
    @SelectJson("network")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
    Network update(@PathParam("id") String id, @WrapWith("network") Network.UpdateNetwork network);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
index 6466a90..3797810 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
@@ -131,7 +131,6 @@ public interface PortApi {
    @PUT
    @Path("/{id}")
    @SelectJson("port")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
    Port update(@PathParam("id") String id, @WrapWith("port") Port.UpdatePort port);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
index 7b6f54e..ffb7dcd 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
@@ -127,7 +127,6 @@ public interface SubnetApi {
    @PUT
    @Path("/{id}")
    @SelectJson("subnet")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
    Subnet update(@PathParam("id") String id, @WrapWith("subnet") Subnet.UpdateSubnet subnet);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
index fe7a879..ae84c36 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
@@ -19,8 +19,8 @@ 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 java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.List;
@@ -33,14 +33,12 @@ import org.jclouds.openstack.neutron.v2.domain.Firewall;
 import org.jclouds.openstack.neutron.v2.domain.FirewallPolicy;
 import org.jclouds.openstack.neutron.v2.domain.FirewallRule;
 import org.jclouds.openstack.neutron.v2.domain.FloatingIP;
-import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
 import org.jclouds.openstack.neutron.v2.domain.UpdateFirewall;
 import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallPolicy;
 import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallRule;
 import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest;
 import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -97,29 +95,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         CreateFirewall firewallRequest = CreateFirewall.builder()
-                 .firewallPolicyId("c69933c1-b472-44f9-8226-30dc4ffd454c")
-                 .adminStateUp(Boolean.TRUE)
-                 .build();
-
-         Firewall firewall = api.create(firewallRequest);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageFirewall() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -152,36 +127,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         FloatingIPs floatingIPs = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(floatingIPs);
-         assertTrue(floatingIPs.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedFirewall() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -217,37 +162,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<FloatingIP> floatingIPs = api.list().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
-
-         /*
-          * Check response
-          */
-         assertNotNull(floatingIPs);
-         assertTrue(floatingIPs.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetFirewall() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -285,37 +199,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         Firewall firewall = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewalls/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(firewall);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateFirewall() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -352,40 +235,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         UpdateFirewall updateFirewall = UpdateFirewall.builder()
-                 .adminStateUp(false)
-                 .build();
-
-         Firewall firewall = api.update("12345", updateFirewall);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewalls/12345", "/firewall_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(firewall);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteFirewall() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -416,36 +265,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteFirewallFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         boolean result = api.delete("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewalls/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -487,29 +306,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         CreateFirewallPolicy firewallPolicyRequest = CreateFirewallPolicy.builder()
-                 .name("jclouds-fw-policy_group-52-e8b")
-                 .build();
-
-         FirewallPolicy firewallPolicy = api.createFirewallPolicy(firewallPolicyRequest);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -547,37 +343,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         FirewallPolicy firewallPolicy = api.getFirewallPolicy("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_policies/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(firewallPolicy);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -619,41 +384,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         UpdateFirewallPolicy updateFirewallPolicy = UpdateFirewallPolicy.builder()
-                 .shared(true)
-                 .build();
-
-         FirewallPolicy firewallPolicy = api.updateFirewallPolicy("12345", updateFirewallPolicy);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(firewallPolicy);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testInsertFirewallRuleIntoFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -685,36 +415,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testInsertFirewallRuleIntoFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         FirewallPolicy updatedFirewallPolicy = api.insertFirewallRuleToPolicy("12345", "59585143-e819-48c9-944d-f03e0f049dba");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345/insert_rule", "/firewall_policy_insert_rule_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(updatedFirewallPolicy);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateFirewallRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -762,29 +462,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         CreateFirewallRule firewallRuleRequest = CreateFirewallRule.builder()
-                 .name("jclouds-fw-rule_group-52-e8b_port-22")
-                 .build();
-
-         FirewallRule firewallRule = api.createFirewallRule(firewallRuleRequest);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetFirewallRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -824,37 +501,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         FirewallRule firewallRule = api.getFirewallRule("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_rules/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(firewallRule);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateFirewallRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -889,38 +535,6 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         UpdateFirewallRule updateFirewallRule = UpdateFirewallRule.builder()
-                 .build();
-
-         FirewallRule firewallRule = api.updateFirewallRule("12345", updateFirewallRule);
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_rules/12345", "/firewall_rule_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(firewallRule);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteFirewallRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -951,34 +565,4 @@ public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-              new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
-
-         boolean result = api.deleteFirewallRule("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewall_rules/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
index 279dca9..ea368ee 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
@@ -17,7 +17,6 @@
 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;
@@ -31,7 +30,6 @@ import org.jclouds.openstack.neutron.v2.domain.FloatingIP;
 import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
 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;
@@ -86,28 +84,6 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         FloatingIP.CreateFloatingIP createFip = FloatingIP.createBuilder("376da547-b977-4cfe-9cba-275c80debf57")
-               .portId("ce705c24-c1ef-408a-bda3-7bbd946164ab")
-               .build();
-
-         FloatingIP floatingIP = api.create(createFip);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -140,36 +116,6 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         FloatingIPs floatingIPs = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(floatingIPs);
-         assertTrue(floatingIPs.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -205,37 +151,6 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<FloatingIP> floatingIPs = api.list().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
-
-         /*
-          * Check response
-          */
-         assertNotNull(floatingIPs);
-         assertTrue(floatingIPs.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -274,37 +189,6 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         FloatingIP floatingIP = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(floatingIP);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -375,40 +259,6 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         FloatingIP.UpdateFloatingIP updateFloatingIP = FloatingIP.updateBuilder()
-               .portId("fc861431-0e6c-4842-a0ed-e2363f9bc3a8")
-               .build();
-
-         FloatingIP floatingIP = api.update("12345", updateFloatingIP);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/floatingips/12345", "/floatingip_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(floatingIP);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteFloatingIP() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -439,33 +289,4 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteFloatingIPFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
-
-         boolean result = api.delete("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/floatingips/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index 902518e..16859f4 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -17,11 +17,8 @@
 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;
@@ -35,7 +32,6 @@ 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;
@@ -92,30 +88,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @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().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(Boolean.TRUE)
-               .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
-               .build();
-
-         api.create(createRouter);
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageRouter() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -147,36 +119,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageRouterFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         Routers routers = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/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"))));
@@ -212,37 +154,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedRouterFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("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);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/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"))));
@@ -279,36 +190,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetRouterFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         Router router = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/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"))));
@@ -350,41 +231,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateRouterFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         Router.UpdateRouter updateRouter = Router.updateBuilder()
-               .externalGatewayInfo(
-                     ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
-               .build();
-
-         Router router = api.update("12345", updateRouter);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/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"))));
@@ -415,36 +261,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteRouterFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         boolean result = api.delete("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/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"))));
@@ -476,36 +292,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testAddRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/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"))));
@@ -538,36 +324,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testAddRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         RouterInterface routerInterface = api.addInterfaceForPort("12345", "portid");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/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"))));
@@ -598,36 +354,6 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testRemoveRouterInterfaceForSubnetFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         boolean result = api.removeInterfaceForSubnet("12345", "a2f1f29d-571b-4533-907f-5803ab96ead1");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/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"))));
@@ -658,33 +384,4 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testRemoveRouterInterfaceForPortFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         RouterApi api = neutronApi.getRouterApi("RegionOne").get();
-
-         boolean result = api.removeInterfaceForPort("12345", "portid");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/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/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
index 6494a05..682232e 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
@@ -17,9 +17,7 @@
 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 java.io.IOException;
@@ -36,7 +34,6 @@ import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
 import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
 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;
@@ -93,28 +90,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroup.CreateSecurityGroup createSecurityGroup = SecurityGroup.createBuilder().name("new-webservers")
-               .description("security group for webservers")
-               .build();
-
-         SecurityGroup securityGroup = api.create(createSecurityGroup);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -164,33 +139,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rule.CreateRule createSecurityGroupRule = Rule.createBuilder(
-               RuleDirection.INGRESS, "a7734e61-b545-452d-a3cd-0189cbd9747a")
-               .portRangeMin(80)
-               .portRangeMax(80)
-               .ethertype(RuleEthertype.IPV4)
-               .protocol(RuleProtocol.TCP)
-               .remoteGroupId("85cc3048-abc3-43cc-89b3-377341426ac5")
-               .build();
-
-         Rule rule = api.create(createSecurityGroupRule);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -224,36 +172,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroups securityGroups = api.listSecurityGroups(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroups);
-         assertTrue(securityGroups.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -287,36 +205,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rules rules = api.listRules(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rules);
-         assertTrue(rules.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedSecurityGroups() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -354,38 +242,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedSecurityGroupsFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<SecurityGroup> securityGroups = api.listSecurityGroups().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroups);
-         assertTrue(securityGroups.isEmpty());
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedSecurityGroupRules() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -423,38 +279,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedSecurityGroupRulesFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Rule> rules = api.listRules().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rules);
-         assertTrue(rules.isEmpty());
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -491,37 +315,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroup securityGroup = api.getSecurityGroup("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(securityGroup);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -558,37 +351,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rule rule = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(rule);
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -619,36 +381,6 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteSecurityGroupFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         boolean result = api.deleteSecurityGroup("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-groups/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -678,34 +410,4 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
          server.shutdown();
       }
    }
-
-   public void testDeleteSecurityGroupRuleFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         boolean result = api.deleteRule("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-group-rules/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
 }


[32/50] [abbrv] jclouds git commit: Remove deprecated neutron code

Posted by na...@apache.org.
Remove deprecated neutron code


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/83b104d9
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/83b104d9
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/83b104d9

Branch: refs/heads/master
Commit: 83b104d9a01c14877061dda803f58e41ff60b618
Parents: 0128e91
Author: Zack Shoylev <za...@rackspace.com>
Authored: Tue May 5 06:57:32 2015 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue May 12 15:51:20 2015 -0500

----------------------------------------------------------------------
 .../openstack/neutron/v2_0/NeutronApi.java      | 133 ---------
 .../neutron/v2_0/NeutronApiMetadata.java        | 104 -------
 .../v2_0/config/NeutronHttpApiModule.java       |  78 -----
 .../neutron/v2_0/domain/AllocationPool.java     | 125 --------
 .../neutron/v2_0/domain/BulkNetwork.java        | 208 -------------
 .../openstack/neutron/v2_0/domain/BulkPort.java | 230 ---------------
 .../neutron/v2_0/domain/BulkSubnet.java         | 273 -----------------
 .../v2_0/domain/ExternalGatewayInfo.java        | 102 -------
 .../neutron/v2_0/domain/HostRoute.java          | 126 --------
 .../openstack/neutron/v2_0/domain/IP.java       | 120 --------
 .../openstack/neutron/v2_0/domain/Network.java  | 255 ----------------
 .../neutron/v2_0/domain/NetworkType.java        |  39 ---
 .../openstack/neutron/v2_0/domain/Port.java     | 234 ---------------
 .../neutron/v2_0/domain/Reference.java          | 127 --------
 .../neutron/v2_0/domain/ReferenceWithName.java  | 109 -------
 .../openstack/neutron/v2_0/domain/Router.java   | 149 ----------
 .../neutron/v2_0/domain/RouterInterface.java    | 125 --------
 .../openstack/neutron/v2_0/domain/State.java    |  27 --
 .../openstack/neutron/v2_0/domain/Subnet.java   | 264 -----------------
 .../neutron/v2_0/extensions/RouterApi.java      | 215 --------------
 .../neutron/v2_0/features/NetworkApi.java       | 179 -----------
 .../neutron/v2_0/features/PortApi.java          | 183 ------------
 .../neutron/v2_0/features/SubnetApi.java        | 182 ------------
 .../v2_0/functions/ParseNetworkDetails.java     |  93 ------
 .../neutron/v2_0/functions/ParseNetworks.java   |  93 ------
 .../v2_0/functions/ParsePortDetails.java        |  94 ------
 .../neutron/v2_0/functions/ParsePorts.java      |  93 ------
 .../v2_0/functions/ParseRouterDetails.java      |  93 ------
 .../neutron/v2_0/functions/ParseRouters.java    |  93 ------
 .../v2_0/functions/ParseSubnetDetails.java      |  93 ------
 .../neutron/v2_0/functions/ParseSubnets.java    |  93 ------
 .../v2_0/handlers/NeutronErrorHandler.java      |  59 ----
 .../v2_0/options/CreateNetworkBulkOptions.java  | 138 ---------
 .../v2_0/options/CreateNetworkOptions.java      | 240 ---------------
 .../v2_0/options/CreatePortBulkOptions.java     | 133 ---------
 .../neutron/v2_0/options/CreatePortOptions.java | 241 ---------------
 .../v2_0/options/CreateRouterOptions.java       | 164 -----------
 .../v2_0/options/CreateSubnetBulkOptions.java   | 139 ---------
 .../v2_0/options/CreateSubnetOptions.java       | 256 ----------------
 .../neutron/v2_0/options/EmptyOptions.java      |  45 ---
 .../v2_0/options/UpdateNetworkOptions.java      | 128 --------
 .../neutron/v2_0/options/UpdatePortOptions.java | 215 --------------
 .../v2_0/options/UpdateRouterOptions.java       | 164 -----------
 .../v2_0/options/UpdateSubnetOptions.java       | 215 --------------
 .../neutron/v2_0/NeutronApiMetadataTest.java    |  31 --
 .../v2_0/extensions/RouterApiExpectTest.java    | 295 -------------------
 .../v2_0/extensions/RouterApiLiveTest.java      | 190 ------------
 .../v2_0/features/NetworkApiExpectTest.java     | 245 ---------------
 .../v2_0/features/NetworkApiLiveTest.java       | 121 --------
 .../v2_0/features/PortApiExpectTest.java        | 245 ---------------
 .../neutron/v2_0/features/PortApiLiveTest.java  | 157 ----------
 .../v2_0/features/SubnetApiExpectTest.java      | 253 ----------------
 .../v2_0/features/SubnetApiLiveTest.java        | 139 ---------
 .../v2_0/internal/BaseNeutronApiExpectTest.java |  66 -----
 .../v2_0/internal/BaseNeutronApiLiveTest.java   |  44 ---
 .../v2_0/internal/BaseNeutronExpectTest.java    |  64 ----
 .../neutron/v2_0/parse/ParseNetworkTest.java    |  50 ----
 .../neutron/v2_0/parse/ParsePortTest.java       |  49 ---
 .../neutron/v2_0/parse/ParseRouterTest.java     |  51 ----
 .../neutron/v2_0/parse/ParseSubnetTest.java     |  49 ---
 .../openstack/neutron/v2_0/util/ClassUtil.java  |  39 ---
 .../neutron/v2_0/util/PredicateUtil.java        |  47 ---
 62 files changed, 8604 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
deleted file mode 100644
index d39bc3c..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
+++ /dev/null
@@ -1,133 +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_0;
-
-import java.io.Closeable;
-import java.util.Set;
-
-import org.jclouds.location.Region;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.RegionToEndpoint;
-import org.jclouds.location.functions.ZoneToEndpoint;
-import org.jclouds.openstack.neutron.v2_0.extensions.RouterApi;
-import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
-import org.jclouds.openstack.neutron.v2_0.features.PortApi;
-import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
-import org.jclouds.openstack.v2_0.features.ExtensionApi;
-import org.jclouds.rest.annotations.Delegate;
-import org.jclouds.rest.annotations.EndpointParam;
-
-import com.google.common.base.Optional;
-import com.google.inject.Provides;
-
-/**
- * Provides access to the OpenStack Networking (Neutron) v2 API.
- * <p/>
- *
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.NeutronApi} instead. To be removed in jclouds 2.0.
- */
-@Deprecated
-public interface NeutronApi extends Closeable {
-
-   /**
-    * @return the Region codes configured
-    */
-   @Provides
-   @Region
-   Set<String> getConfiguredRegions();
-
-   /**
-    * Provides access to Extension features.
-    */
-   @Delegate
-   ExtensionApi getExtensionApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   /**
-    * Provides access to Network features.
-    */
-   @Delegate
-   NetworkApi getNetworkApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   /**
-    * Provides access to Subnet features.
-    */
-   @Delegate
-   SubnetApi getSubnetApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   /**
-    * Provides access to Port features.
-    */
-   @Delegate
-   PortApi getPortApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   /**
-    * Provides access to Router features.
-    */
-   @Delegate
-   Optional<? extends RouterApi> getRouterApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
-
-   /**
-    * @return the Zone codes configured
-    * @deprecated Please use {@link #getConfiguredRegions()} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Provides
-   @Zone
-   Set<String> getConfiguredZones();
-
-   /**
-    * Provides access to Extension features.
-    * @deprecated Please use {@link #getExtensionApi(String)} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Delegate
-   ExtensionApi getExtensionApiForZone(
-           @EndpointParam(parser = ZoneToEndpoint.class) String zone);
-
-   /**
-    * Provides access to Network features.
-    * @deprecated Please use {@link #getNetworkApi(String)} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Delegate
-   NetworkApi getNetworkApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) String zone);
-
-   /**
-    * Provides access to Subnet features.
-    * @deprecated Please use {@link #getSubnetApi(String)} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Delegate
-   SubnetApi getSubnetApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) String zone);
-
-   /**
-    * Provides access to Port features.
-    * @deprecated Please use {@link #getPortApi(String)} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Delegate
-   PortApi getPortApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) String zone);
-
-   /**
-    * Provides access to Router features.
-    * @deprecated Please use {@link #getRouterApi(String)} instead. To be removed in jclouds 2.0.
-    */
-   @Deprecated
-   @Delegate
-   Optional<? extends RouterApi> getRouterExtensionForZone(@EndpointParam(parser = ZoneToEndpoint.class) String zone);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
deleted file mode 100644
index f333647..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
+++ /dev/null
@@ -1,104 +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_0;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.apis.ApiMetadata;
-import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
-import org.jclouds.openstack.neutron.v2_0.config.NeutronHttpApiModule;
-import org.jclouds.openstack.v2_0.ServiceType;
-import org.jclouds.rest.internal.BaseHttpApiMetadata;
-
-import com.google.auto.service.AutoService;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
- * @deprecated To be removed in jclouds 2.0.
- */
-@Deprecated
-@AutoService(ApiMetadata.class)
-public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
-
-   @Override
-   public Builder toBuilder() {
-      return new Builder().fromApiMetadata(this);
-   }
-
-   public NeutronApiMetadata() {
-      this(new Builder());
-   }
-
-   protected NeutronApiMetadata(Builder builder) {
-      super(builder);
-   }
-
-   public static Properties defaultProperties() {
-      Properties properties = BaseHttpApiMetadata.defaultProperties();
-      properties.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
-      properties.setProperty(SERVICE_TYPE, ServiceType.NETWORK);
-      return properties;
-   }
-
-   public static class Builder extends BaseHttpApiMetadata.Builder<NeutronApi, Builder> {
-
-      protected Builder() {
-         super(NeutronApi.class);
-         id("openstack-neutron-legacy")
-            .name("OpenStack Neutron API")
-            .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
-            .credentialName("${password}")
-            .endpointName("KeyStone base url ending in /v2.0/")
-            .documentation(URI.create("http://docs.openstack.org/api/openstack-network/2.0/content/"))
-            .version("2.0")
-            .defaultEndpoint("http://localhost:5000/v2.0/")
-            .defaultProperties(NeutronApiMetadata.defaultProperties())
-            .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
-               .add(AuthenticationApiModule.class)
-               .add(KeystoneAuthenticationModule.class)
-               .add(ZoneModule.class)
-               .add(NeutronHttpApiModule.class).build());
-      }
-
-      @Override
-      public NeutronApiMetadata build() {
-         return new NeutronApiMetadata(this);
-      }
-
-      @Override
-      public Builder fromApiMetadata(ApiMetadata in) {
-         super.fromApiMetadata(in);
-         return this;
-      }
-
-      @Override
-      protected Builder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
deleted file mode 100644
index b46262e..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
+++ /dev/null
@@ -1,78 +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_0.config;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneHttpApiModule.aliasBinder;
-
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Provider;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.annotation.ClientError;
-import org.jclouds.http.annotation.Redirection;
-import org.jclouds.http.annotation.ServerError;
-import org.jclouds.json.config.GsonModule.DateAdapter;
-import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.handlers.NeutronErrorHandler;
-import org.jclouds.openstack.v2_0.domain.Extension;
-import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet;
-import org.jclouds.rest.ConfiguresHttpApi;
-import org.jclouds.rest.config.HttpApiModule;
-import org.jclouds.rest.functions.ImplicitOptionalConverter;
-
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.inject.Provides;
-
-/**
- * Configures the Neutron connection.
- */
-@ConfiguresHttpApi
-public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
-   
-   @Override
-   protected void configure() {
-      bind(DateAdapter.class).to(Iso8601DateAdapter.class);
-      bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
-      super.configure();
-      aliasBinder(binder());
-   }
-   
-   @Provides
-   @Singleton
-   public LoadingCache<String, Set<? extends Extension>> provideExtensionsByZone(final Provider<NeutronApi> quantumApi) {
-      return CacheBuilder.newBuilder().expireAfterWrite(23, TimeUnit.HOURS)
-            .build(new CacheLoader<String, Set<? extends Extension>>() {
-               @Override
-               public Set<? extends Extension> load(String key) throws Exception {
-                  return quantumApi.get().getExtensionApiForZone(key).list();
-               }
-            });
-   }
-   
-   @Override
-   protected void bindErrorHandlers() {
-      bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(NeutronErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(NeutronErrorHandler.class);
-      bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(NeutronErrorHandler.class);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
deleted file mode 100644
index f81192e..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/AllocationPool.java
+++ /dev/null
@@ -1,125 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-
-import java.beans.ConstructorProperties;
-
-/**
- * A Neutron Subnet Allocation Pool
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
- */
-public class AllocationPool {
-
-   private final String start;
-   private final String end;
-
-   @ConstructorProperties({
-      "start", "end"
-   })
-   protected AllocationPool(String start, String end) {
-      this.start = start;
-      this.end = end;
-   }
-
-   /**
-    * @return the start ip
-    */
-   public String getStart() {
-      return start;
-   }
-
-   /**
-    * @return the end ip
-    */
-   public String getEnd() {
-      return end;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(start, end);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      AllocationPool that = AllocationPool.class.cast(obj);
-      return Objects.equal(this.start, that.start) && Objects.equal(this.end, that.end);
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper(this).add("start", start).add("end", end);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromAllocationPool(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String start;
-      protected String end;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.AllocationPool#getStart()
-       */
-      public Builder start(String start) {
-         this.start = start;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.AllocationPool#getEnd()
-       */
-      public Builder end(String end) {
-         this.end = end;
-         return self();
-      }
-
-      public AllocationPool build() {
-         return new AllocationPool(start, end);
-      }
-
-      public Builder fromAllocationPool(AllocationPool in) {
-         return this.start(in.getStart()).end(in.getEnd());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
deleted file mode 100644
index f2e4a0e..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkNetwork.java
+++ /dev/null
@@ -1,208 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-/**
- * A Neutron network used for creating networks in bulk
- * The only difference between this and the actual network are the missing fields id, tenantId, state & shared
- */
-public class BulkNetwork {
-
-   private final String name;
-   private final Boolean adminStateUp;
-   private final Boolean external;
-   private final NetworkType networkType;
-   private final String physicalNetworkName;
-   private final Integer segmentationId;
-
-   @ConstructorProperties({
-      "name", "admin_state_up", "router:external", "provider:network_type", "provider:physical_network", "provider:segmentation_id"
-   })
-   protected BulkNetwork(String name, Boolean adminStateUp, Boolean external, String networkType, String physicalNetworkName, Integer segmentationId) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-      this.external = external;
-      this.networkType = NetworkType.fromValue(networkType);
-      this.physicalNetworkName = physicalNetworkName;
-      this.segmentationId = segmentationId;
-   }
-
-   /**
-    * @return the name of the network
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the administrative state of network. If false, the network does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return true if network is external, false if not
-    */
-   public Boolean getExternal() {
-      return external;
-   }
-
-   /**
-    * @return the type of network
-    */
-   public NetworkType getNetworkType() {
-      return networkType;
-   }
-
-   /**
-    * @return the physical network name
-    */
-   public String getPhysicalNetworkName() {
-      return physicalNetworkName;
-   }
-
-   /**
-    * @return the segmentation id of the network
-    */
-   public Integer getSegmentationId() {
-      return segmentationId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name, adminStateUp, external, networkType, physicalNetworkName, segmentationId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      BulkNetwork that = BulkNetwork.class.cast(obj);
-      return Objects.equal(this.name, that.name)
-         && Objects.equal(this.adminStateUp, that.adminStateUp)
-         && Objects.equal(this.external, that.external)
-         && Objects.equal(this.networkType, that.networkType)
-         && Objects.equal(this.physicalNetworkName, that.physicalNetworkName)
-         && Objects.equal(this.segmentationId, that.segmentationId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("name", name).add("adminStateUp", adminStateUp).add("external", external)
-         .add("networkType", networkType).add("physicalNetworkName", physicalNetworkName)
-         .add("segmentationId", segmentationId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromBulkNetwork(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-      protected Boolean external;
-      protected NetworkType networkType;
-      protected String physcialNetworkName;
-      protected Integer segmentationId;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getAdminStateUp()
-       */
-      public Builder adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getExternal()
-       */
-      public Builder external(Boolean external) {
-         this.external = external;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getNetworkType()
-       */
-      public Builder networkType(NetworkType networkType) {
-         this.networkType = networkType;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getPhysicalNetworkName()
-       */
-      public Builder physicalNetworkName(String physicalNetworkName) {
-         this.physcialNetworkName = physicalNetworkName;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork#getSegmentationId()
-       */
-      public Builder segmentationId(Integer segmentationId) {
-         this.segmentationId = segmentationId;
-         return self();
-      }
-
-      public BulkNetwork build() {
-         return new BulkNetwork(name, adminStateUp, external, networkType == null ? null : networkType.getValue(), physcialNetworkName, segmentationId);
-      }
-
-      public Builder fromBulkNetwork(BulkNetwork in) {
-         return this.name(in.getName())
-               .adminStateUp(in.getAdminStateUp())
-               .external(in.getExternal())
-               .networkType(in.getNetworkType())
-               .physicalNetworkName(in.getPhysicalNetworkName())
-               .segmentationId(in.getSegmentationId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
deleted file mode 100644
index 91c2637..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkPort.java
+++ /dev/null
@@ -1,230 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-
-import java.beans.ConstructorProperties;
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * A Neutron port used for creating ports in bulk
- * The only difference between this and the actual port are the missing fields id, tenantId & state
- */
-public class BulkPort {
-
-   private final String name;
-   private final String networkId;
-   private final Boolean adminStateUp;
-   private final String deviceId;
-   private final String deviceOwner;
-   private final Set<IP> fixedIps;
-   private final String macAddress;
-
-   @ConstructorProperties({
-      "name", "network_id", "admin_state_up", "device_id", "device_owner", "fixed_ips", "mac_address"
-   })
-   protected BulkPort(String name, String networkId, Boolean adminStateUp, String deviceId, String deviceOwner, Set<IP> fixedIps, String macAddress) {
-      this.name = name;
-      this.networkId = networkId;
-      this.adminStateUp = adminStateUp;
-      this.deviceId = deviceId;
-      this.deviceOwner = deviceOwner;
-      this.fixedIps = fixedIps != null ? ImmutableSet.copyOf(fixedIps) : ImmutableSet.<IP>of();
-      this.macAddress = macAddress;
-   }
-
-   /**
-    * @return the name of the port
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the id of the network where this port is associated with
-    */
-   public String getNetworkId() {
-      return networkId;
-   }
-
-   /**
-    * @return the administrative state of port. If false, port does not forward packets
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the id of the device (e.g. server) using this port.
-    */
-   public String getDeviceId() {
-      return deviceId;
-   }
-
-   /**
-    * @return the entity (e.g.: dhcp agent) using this port.
-    */
-   public String getDeviceOwner() {
-      return deviceOwner;
-   }
-
-   /**
-    * @return the set of fixed ips this port has been assigned
-    */
-   public Set<IP> getFixedIps() {
-      return fixedIps;
-   }
-
-   /**
-    * @return the mac address of this port
-    */
-   public String getMacAddress() {
-      return macAddress;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name, networkId, adminStateUp, deviceId, deviceOwner, fixedIps, macAddress);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      BulkPort that = BulkPort.class.cast(obj);
-      return Objects.equal(this.name, that.name)
-         && Objects.equal(this.networkId, that.networkId)
-         && Objects.equal(this.adminStateUp, that.adminStateUp)
-         && Objects.equal(this.deviceId, that.deviceId)
-         && Objects.equal(this.deviceOwner, that.deviceOwner)
-         && Objects.equal(this.fixedIps, that.fixedIps)
-         && Objects.equal(this.macAddress, that.macAddress);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("name", name).add("networkId", networkId).add("adminStateUp", adminStateUp)
-         .add("deviceId", deviceId).add("deviceOwner", deviceOwner).add("fixedIps", fixedIps).add("macAddress", macAddress);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromBulkPort(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String name;
-      protected String networkId;
-      protected String deviceId;
-      protected String deviceOwner;
-      protected String macAddress;
-      protected Set<IP> fixedIps;
-      protected Boolean adminStateUp;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getNetworkId()
-       */
-      public Builder networkId(String networkId) {
-         this.networkId = networkId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getDeviceId()
-       */
-      public Builder deviceId(String deviceId) {
-         this.deviceId = deviceId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getDeviceOwner()
-       */
-      public Builder deviceOwner(String deviceOwner) {
-         this.deviceOwner = deviceOwner;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getMacAddress()
-       */
-      public Builder macAddress(String macAddress) {
-         this.macAddress = macAddress;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getFixedIps()
-       */
-      public Builder fixedIps(Collection<IP> fixedIps) {
-         this.fixedIps = ImmutableSet.copyOf(fixedIps);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkPort#getAdminStateUp()
-       */
-      public Builder adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      public BulkPort build() {
-         return new BulkPort(name, networkId, adminStateUp, deviceId, deviceOwner, fixedIps, macAddress);
-      }
-
-      public Builder fromBulkPort(BulkPort in) {
-         return this.name(in.getName())
-               .networkId(in.getNetworkId())
-               .adminStateUp(in.getAdminStateUp())
-               .deviceId(in.getDeviceId())
-               .deviceOwner(in.getDeviceOwner())
-               .fixedIps(in.getFixedIps())
-               .macAddress(in.getMacAddress());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
deleted file mode 100644
index c1eea45..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/BulkSubnet.java
+++ /dev/null
@@ -1,273 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-
-import java.beans.ConstructorProperties;
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * A Neutron subnet used for creating subnets in bulk
- * The only difference between this and the actual subnet are the missing fields id & tenantId
- */
-public class BulkSubnet {
-
-   protected String name;
-   protected String networkId;
-   protected String gatewayIp;
-   protected Integer ipVersion;
-   protected String cidr;
-   protected Set<AllocationPool> allocationPools;
-   protected Boolean enableDhcp;
-   protected Set<String> dnsNameServers;
-   protected Set<HostRoute> hostRoutes;
-
-   @ConstructorProperties({
-      "name", "network_id", "gateway_ip", "ip_version", "cidr", "allocation_pools", "enable_dhcp", "dns_nameservers", "host_routes"
-   })
-   protected BulkSubnet(String name, String networkId, String gatewayIp, Integer ipVersion, String cidr,
-                     Set<AllocationPool> allocationPools, Boolean enableDhcp, Set<String> dnsNameServers, Set<HostRoute> hostRoutes) {
-      this.name = name;
-      this.networkId = networkId;
-      this.gatewayIp = gatewayIp;
-      this.ipVersion = ipVersion;
-      this.cidr = cidr;
-      this.allocationPools = allocationPools != null ? ImmutableSet.copyOf(allocationPools) : ImmutableSet.<AllocationPool>of();
-      this.enableDhcp = enableDhcp;
-      this.dnsNameServers = dnsNameServers != null ? ImmutableSet.copyOf(dnsNameServers) : ImmutableSet.<String>of();
-      this.hostRoutes = hostRoutes != null ? ImmutableSet.copyOf(hostRoutes) : ImmutableSet.<HostRoute>of();
-   }
-
-   /**
-    * @return the name of the subnet
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the id of the network this subnet is associated with
-    */
-   public String getNetworkId() {
-      return networkId;
-   }
-
-   /**
-    * @return the default gateway used by devices in this subnet
-    */
-   public String getGatewayIp() {
-      return gatewayIp;
-   }
-
-   /**
-    * @return the ip version used by this subnet
-    */
-   public Integer getIpVersion() {
-      return ipVersion;
-   }
-
-   /**
-    * @return the cidr representing the IP range for this subnet, based on IP version
-    */
-   public String getCidr() {
-      return cidr;
-   }
-
-   /**
-    * @return the sub-ranges of cidr available for dynamic allocation to ports
-    */
-   public Set<AllocationPool> getAllocationPools() {
-      return allocationPools;
-   }
-
-   /**
-    * @return true if DHCP is enabled for this subnet, false if not.
-    */
-   public Boolean getEnableDhcp() {
-      return enableDhcp;
-   }
-
-   /**
-    * @return the set of DNS name servers used by hosts in this subnet.
-    */
-   public Set<String> getDnsNameServers() {
-      return dnsNameServers;
-   }
-
-   /**
-    * @return the set of routes that should be used by devices with IPs from this subnet
-    */
-   public Set<HostRoute> getHostRoutes() {
-      return hostRoutes;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(name, networkId, gatewayIp, ipVersion, cidr,
-         allocationPools, enableDhcp, dnsNameServers, hostRoutes);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      BulkSubnet that = BulkSubnet.class.cast(obj);
-      return Objects.equal(this.name, that.name)
-         && Objects.equal(this.networkId, that.networkId)
-         && Objects.equal(this.gatewayIp, that.gatewayIp)
-         && Objects.equal(this.ipVersion, that.ipVersion)
-         && Objects.equal(this.cidr, that.cidr)
-         && Objects.equal(this.allocationPools, that.allocationPools)
-         && Objects.equal(this.enableDhcp, that.enableDhcp)
-         && Objects.equal(this.dnsNameServers, that.dnsNameServers)
-         && Objects.equal(this.hostRoutes, that.hostRoutes);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("name", name).add("networkId", networkId).add("gatewayIp", gatewayIp).add("ipVersion", ipVersion)
-         .add("cidr", cidr).add("enableDhcp", enableDhcp).add("allocationPools", allocationPools)
-         .add("dnsNameServers", dnsNameServers).add("hostRoutes", hostRoutes);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromBulkSubnet(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String name;
-      protected String networkId;
-      protected String gatewayIp;
-      protected Integer ipVersion;
-      protected String cidr;
-      protected Set<AllocationPool> allocationPools;
-      protected Boolean enableDhcp;
-      protected Set<String> dnsNameServers;
-      protected Set<HostRoute> hostRoutes;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getName()
-       */
-      public Builder name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getNetworkId()
-       */
-      public Builder networkId(String networkId) {
-         this.networkId = networkId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getGatewayIp()
-       */
-      public Builder gatewayIp(String gatewayIp) {
-         this.gatewayIp = gatewayIp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getIpVersion()
-       */
-      public Builder ipVersion(Integer ipVersion) {
-         this.ipVersion = ipVersion;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getCidr()
-       */
-      public Builder cidr(String cidr) {
-         this.cidr = cidr;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getAllocationPools()
-       */
-      public Builder allocationPools(Collection<AllocationPool> allocationPools) {
-         this.allocationPools = ImmutableSet.copyOf(allocationPools);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getEnableDhcp()
-       */
-      public Builder enableDhcp(Boolean enableDhcp) {
-         this.enableDhcp = enableDhcp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getDnsNameServers()
-       */
-      public Builder dnsNameServers(Collection<String> dnsNameServers) {
-         this.dnsNameServers = ImmutableSet.copyOf(dnsNameServers);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet#getHostRoutes()
-       */
-      public Builder hostRoutes(Collection<HostRoute> hostRoutes) {
-         this.hostRoutes = ImmutableSet.copyOf(hostRoutes);
-         return self();
-      }
-
-      public BulkSubnet build() {
-         return new BulkSubnet(name, networkId, gatewayIp, ipVersion, cidr, allocationPools, enableDhcp, dnsNameServers, hostRoutes);
-      }
-
-      public Builder fromBulkSubnet(BulkSubnet in) {
-         return this.name(in.getName())
-               .networkId(in.getNetworkId())
-               .gatewayIp(in.getGatewayIp())
-               .ipVersion(in.getIpVersion())
-               .cidr(in.getCidr())
-               .allocationPools(in.getAllocationPools())
-               .enableDhcp(in.getEnableDhcp())
-               .dnsNameServers(in.getDnsNameServers())
-               .hostRoutes(in.getHostRoutes());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
deleted file mode 100644
index f5473ed..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ExternalGatewayInfo.java
+++ /dev/null
@@ -1,102 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-/**
- * Information on external gateway for the router
- */
-public class ExternalGatewayInfo {
-
-   private final String networkId;
-
-   @ConstructorProperties({"network_id"})
-   protected ExternalGatewayInfo(String networkId) {
-      this.networkId = networkId;
-   }
-
-   /**
-    * @return the id of the network which is used as external gateway for the router
-    */
-   public String getNetworkId() {
-      return networkId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(networkId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      ExternalGatewayInfo that = ExternalGatewayInfo.class.cast(obj);
-      return Objects.equal(this.networkId, that.networkId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("networkId", networkId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromExternalGatewayInfo(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String networkId;
-
-      /**
-       * @see ExternalGatewayInfo#getNetworkId()
-       */
-      public Builder networkId(String networkId) {
-         this.networkId = networkId;
-         return self();
-      }
-
-      public ExternalGatewayInfo build() {
-         return new ExternalGatewayInfo(networkId);
-      }
-
-      public Builder fromExternalGatewayInfo(ExternalGatewayInfo in) {
-         return this.networkId(in.getNetworkId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
deleted file mode 100644
index c5dcb56..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/HostRoute.java
+++ /dev/null
@@ -1,126 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-
-import java.beans.ConstructorProperties;
-
-/**
- * A Neutron Subnet Host Route
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
- */
-public class HostRoute {
-
-   private final String destinationCidr;
-   private final String nextHop;
-
-   @ConstructorProperties({
-      "destination", "nexthop"
-   })
-   protected HostRoute(String destinationCidr, String nextHop) {
-      this.destinationCidr = destinationCidr;
-      this.nextHop = nextHop;
-   }
-
-   /**
-    * @return the destination cidr for this route
-    */
-   public String getDestinationCidr() {
-      return destinationCidr;
-   }
-
-   /**
-    * @return the ip of the next hop to forward traffic to
-    */
-   public String getNextHop() {
-      return nextHop;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(destinationCidr, nextHop);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      HostRoute that = HostRoute.class.cast(obj);
-      return Objects.equal(this.destinationCidr, that.destinationCidr) && Objects.equal(this.nextHop, that.nextHop);
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("destinationCidr", destinationCidr).add("nextHop", nextHop);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromHostRoute(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String destinationCidr;
-      protected String nextHop;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.HostRoute#getDestinationCidr()
-       */
-      public Builder destinationCidr(String destinationCidr) {
-         this.destinationCidr = destinationCidr;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.HostRoute#getNextHop()
-       */
-      public Builder nextHop(String nextHop) {
-         this.nextHop = nextHop;
-         return self();
-      }
-
-      public HostRoute build() {
-         return new HostRoute(destinationCidr, nextHop);
-      }
-
-      public Builder fromHostRoute(HostRoute in) {
-         return this.destinationCidr(in.getDestinationCidr()).nextHop(in.getNextHop());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
deleted file mode 100644
index 689a53e..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/IP.java
+++ /dev/null
@@ -1,120 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-public class IP {
-
-   private String ipAddress;
-   private String subnetId;
-
-   @ConstructorProperties({
-      "ip_address", "subnet_id"
-   })
-   protected IP(String ipAddress, String subnetId) {
-      this.ipAddress = ipAddress;
-      this.subnetId = subnetId;
-   }
-
-   /**
-    * @return the fixed ip address
-    */
-   public String getIpAddress() {
-      return ipAddress;
-   }
-
-   /**
-    * @return the id of the subnet of this ip
-    */
-   public String getSubnetId() {
-      return subnetId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(ipAddress, subnetId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      IP that = IP.class.cast(obj);
-      return Objects.equal(this.ipAddress, that.ipAddress) && Objects.equal(this.subnetId, that.subnetId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("ipAddress", ipAddress).add("subnetId", subnetId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromIP(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String ipAddress;
-      protected String subnetId;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.IP#getIpAddress
-       */
-      public Builder ipAddress(String ipAddress) {
-         this.ipAddress = ipAddress;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.IP#getSubnetId
-       */
-      public Builder subnetId(String subnetId) {
-         this.subnetId = subnetId;
-         return self();
-      }
-
-      public IP build() {
-         return new IP(ipAddress, subnetId);
-      }
-
-      public Builder fromIP(IP in) {
-         return this.ipAddress(in.getIpAddress()).subnetId(in.getSubnetId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
deleted file mode 100644
index 3aa1804..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Network.java
+++ /dev/null
@@ -1,255 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-
-import java.beans.ConstructorProperties;
-import java.util.Set;
-
-/**
- * A Neutron network
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a>
- */
-public class Network extends ReferenceWithName {
-
-   private final State state;
-   private final Set<String> subnets;
-   private final Boolean adminStateUp;
-   private final Boolean shared;
-   private final Boolean external;
-   private final NetworkType networkType;
-   private final String physicalNetworkName;
-   private final Integer segmentationId;
-
-   @ConstructorProperties({
-      "id", "tenant_id", "name", "status", "subnets", "admin_state_up", "shared", "router:external",
-      "provider:network_type", "provider:physical_network", "provider:segmentation_id"
-   })
-   protected Network(String id, String tenantId, String name, State state,
-                     Set<String> subnets, Boolean adminStateUp, Boolean shared, Boolean external,
-                     String networkType, String physicalNetworkName, Integer segmentationId) {
-      super(id, tenantId, name);
-      this.state = state;
-      this.subnets = subnets != null ? ImmutableSet.copyOf(subnets) : ImmutableSet.<String>of();
-      this.adminStateUp = adminStateUp;
-      this.shared = shared;
-      this.external = external;
-      this.networkType = networkType != null ? NetworkType.fromValue(networkType) : null;
-      this.physicalNetworkName = physicalNetworkName;
-      this.segmentationId = segmentationId;
-   }
-
-   /**
-    * @return the current state of the network
-    */
-   public State getState() {
-      return state;
-   }
-
-   /**
-    * @return set of subnet ids that are associated with this network
-    */
-   public Set<String> getSubnets() {
-      return subnets;
-   }
-
-   /**
-    * @return the administrative state of network. If false, the network does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return true if the network resource can be accessed by any tenant or not, false if not
-    */
-   public Boolean getShared() {
-      return shared;
-   }
-
-   /**
-    * @return true if network is external, false if not
-    */
-   public Boolean getExternal() {
-      return external;
-   }
-
-   /**
-    * @return the type of network
-    */
-   public NetworkType getNetworkType() {
-      return networkType;
-   }
-
-   /**
-    * @return the physical network name
-    */
-   public String getPhysicalNetworkName() {
-      return physicalNetworkName;
-   }
-
-   /**
-    * @return the segmentation id of the network
-    */
-   public Integer getSegmentationId() {
-      return segmentationId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(super.hashCode(), state, subnets, adminStateUp, shared, external,
-         networkType, physicalNetworkName, segmentationId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Network that = Network.class.cast(obj);
-      return super.equals(obj)
-         && Objects.equal(this.state, that.state)
-         && Objects.equal(this.subnets, that.subnets)
-         && Objects.equal(this.adminStateUp, that.adminStateUp)
-         && Objects.equal(this.shared, that.shared)
-         && Objects.equal(this.external, that.external)
-         && Objects.equal(this.networkType, that.networkType)
-         && Objects.equal(this.physicalNetworkName, that.physicalNetworkName)
-         && Objects.equal(this.segmentationId, that.segmentationId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return super.string()
-         .add("state", state).add("subnets", subnets).add("adminStateUp", adminStateUp).add("shared", shared).add("external", external)
-         .add("networkType", networkType).add("physicalNetworkName", physicalNetworkName).add("segmentationId", segmentationId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromNetwork(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> extends ReferenceWithName.Builder<T> {
-      protected State state;
-      protected Set<String> subnets;
-      protected Boolean adminStateUp;
-      protected Boolean shared;
-      protected Boolean external;
-      protected NetworkType networkType;
-      protected String physicalNetworkName;
-      protected Integer segmentationId;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getState()
-       */
-      public T state(State state) {
-         this.state = state;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getSubnets()
-       */
-      public T subnets(Set<String> subnets) {
-         this.subnets = subnets;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getShared()
-       */
-      public T shared(Boolean shared) {
-         this.shared = shared;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getExternal()
-       */
-      public T external(Boolean external) {
-         this.external = external;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getNetworkType()
-       */
-      public T networkType(NetworkType networkType) {
-         this.networkType = networkType;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getPhysicalNetworkName()
-       */
-      public T physicalNetworkName(String physicalNetworkName) {
-         this.physicalNetworkName = physicalNetworkName;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Network#getSegmentationId()
-       */
-      public T segmentationId(Integer segmentationId) {
-         this.segmentationId = segmentationId;
-         return self();
-      }
-
-      public Network build() {
-         return new Network(id, tenantId, name, state, subnets, adminStateUp, shared, external, networkType == null ? null : networkType.getValue(), physicalNetworkName, segmentationId);
-      }
-
-      public T fromNetwork(Network in) {
-         return super.fromReference(in)
-               .state(in.getState())
-               .subnets(in.getSubnets())
-               .adminStateUp(in.getAdminStateUp())
-               .shared(in.getShared())
-               .external(in.getExternal())
-               .networkType(in.getNetworkType())
-               .physicalNetworkName(in.getPhysicalNetworkName())
-               .segmentationId(in.getSegmentationId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/NetworkType.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/NetworkType.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/NetworkType.java
deleted file mode 100644
index b0f1d20..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/NetworkType.java
+++ /dev/null
@@ -1,39 +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_0.domain;
-
-/**
- * The type of Network
- */
-public enum NetworkType {
-   LOCAL("local"), FLAT("flat"), VLAN("vlan"), GRE("gre");
-
-   private String value;
-
-   private NetworkType(String value) {
-      this.value = value;
-   }
-
-   public String getValue() {
-      return value;
-   }
-
-   public static NetworkType fromValue(String value) {
-      return NetworkType.valueOf(value.toUpperCase());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
deleted file mode 100644
index 75f491f..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Port.java
+++ /dev/null
@@ -1,234 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * A Neutron port
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/1.0/content/Ports.html">api doc</a>
- */
-public class Port extends ReferenceWithName {
-
-   private final State state;
-   private final Boolean adminStateUp;
-   private final String networkId;
-   private final String deviceId;
-   private final String deviceOwner;
-   private final String macAddress;
-   private final Set<IP> fixedIps;
-
-   @ConstructorProperties({
-      "id", "tenant_id", "name", "status", "network_id", "admin_state_up", "device_id", "device_owner", "fixed_ips", "mac_address"
-   })
-   protected Port(String id, String tenantId, String name, State state, String networkId, Boolean adminStateUp,
-                  String deviceId, String deviceOwner, Set<IP> fixedIps, String macAddress) {
-      super(id, tenantId, name);
-      this.adminStateUp = adminStateUp;
-      this.state = state;
-      this.networkId = checkNotNull(networkId, "networkId");
-      this.deviceId = deviceId;
-      this.deviceOwner = deviceOwner;
-      this.fixedIps = fixedIps;
-      this.macAddress = macAddress;
-   }
-
-   /**
-    * @return the current state of the port
-    */
-   public State getState() {
-      return this.state;
-   }
-
-   /**
-    * @return the administrative state of port. If false, port does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the id of the network where this port is associated with
-    */
-   public String getNetworkId() {
-      return networkId;
-   }
-
-   /**
-    * @return the id of the device (e.g. server) using this port.
-    */
-   public String getDeviceId() {
-      return deviceId;
-   }
-
-   /**
-    * @return the entity (e.g.: dhcp agent) using this port.
-    */
-   public String getDeviceOwner() {
-      return deviceOwner;
-   }
-
-   /**
-    * @return the set of fixed ips this port has been assigned
-    */
-   public Set<IP> getFixedIps() {
-      return fixedIps;
-   }
-
-   /**
-    * @return the mac address of this port
-    */
-   public String getMacAddress() {
-      return macAddress;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(super.hashCode(), state, adminStateUp, networkId, deviceId, deviceOwner, fixedIps, macAddress);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Port that = Port.class.cast(obj);
-      return super.equals(obj)
-         && Objects.equal(this.state, that.state)
-         && Objects.equal(this.adminStateUp, that.adminStateUp)
-         && Objects.equal(this.networkId, that.networkId)
-         && Objects.equal(this.deviceId, that.deviceId)
-         && Objects.equal(this.deviceOwner, that.deviceOwner)
-         && Objects.equal(this.fixedIps, that.fixedIps)
-         && Objects.equal(this.macAddress, that.macAddress);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return super.string()
-         .add("state", state).add("adminStateUp", adminStateUp).add("networkId", networkId).add("deviceId", deviceId)
-         .add("deviceOwner", deviceOwner).add("fixedIps", fixedIps).add("macAddress", macAddress);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromPort(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> extends ReferenceWithName.Builder<T> {
-      protected String networkId;
-      protected String deviceId;
-      protected String deviceOwner;
-      protected String macAddress;
-      protected Set<IP> fixedIps;
-      protected State state;
-      protected Boolean adminStateUp;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getState()
-       */
-      public T state(State state) {
-         this.state = state;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getNetworkId()
-       */
-      public T networkId(String networkId) {
-         this.networkId = networkId;
-         return self();
-      }
-
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getDeviceId()
-       */
-      public T deviceId(String deviceId) {
-         this.deviceId = deviceId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getDeviceOwner()
-       */
-      public T deviceOwner(String deviceOwner) {
-         this.deviceOwner = deviceOwner;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getDeviceId()
-       */
-      public T fixedIps(Set<IP> fixedIps) {
-         this.fixedIps = fixedIps;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Port#getMacAddress()
-       */
-      public T macAddress(String macAddress) {
-         this.macAddress = macAddress;
-         return self();
-      }
-
-      public Port build() {
-         return new Port(id, tenantId, name, state, networkId, adminStateUp, deviceId, deviceOwner, fixedIps, macAddress);
-      }
-
-      public T fromPort(Port in) {
-         return super.fromReference(in)
-               .state(in.getState())
-               .networkId(in.getNetworkId())
-               .adminStateUp(in.getAdminStateUp())
-               .deviceId(in.getDeviceId())
-               .deviceOwner(in.getDeviceOwner())
-               .fixedIps(in.getFixedIps())
-               .macAddress(in.getMacAddress());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
deleted file mode 100644
index 0458118..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Reference.java
+++ /dev/null
@@ -1,127 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Base class for beans in the Neutron v2.0 api
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a>
- */
-public class Reference {
-
-   private final String id;
-   private final String tenantId;
-
-   @ConstructorProperties({
-      "id", "tenant_id"
-   })
-   protected Reference(String id, String tenantId) {
-      this.id = checkNotNull(id, "id");
-      this.tenantId = checkNotNull(tenantId, "tenantId");
-   }
-
-   /**
-    * @return the id of the entity
-    */
-   public String getId() {
-      return this.id;
-   }
-
-   /**
-    * @return the id of the tenant where this entity is associated with
-    */
-   public String getTenantId() {
-      return tenantId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(id, tenantId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Reference that = Reference.class.cast(obj);
-      return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("id", id).add("tenantId", tenantId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromReference(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String id;
-      protected String tenantId;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Reference#getId()
-       */
-      public T id(String id) {
-         this.id = id;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Reference#getTenantId()
-       */
-      public T tenantId(String tenantId) {
-         this.tenantId = tenantId;
-         return self();
-      }
-
-      public Reference build() {
-         return new Reference(id, tenantId);
-      }
-
-      public T fromReference(Reference in) {
-         return this.id(in.getId()).tenantId(in.getTenantId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
deleted file mode 100644
index 28db0be..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/ReferenceWithName.java
+++ /dev/null
@@ -1,109 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.base.Strings;
-
-import java.beans.ConstructorProperties;
-
-/**
- * Base class for beans in the Neutron v2.0 api
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a>
- */
-public class ReferenceWithName extends Reference {
-
-   private final String name;
-
-   @ConstructorProperties({
-      "id", "tenant_id", "name"
-   })
-   protected ReferenceWithName(String id, String tenantId, String name) {
-      super(id, tenantId);
-      this.name = Strings.nullToEmpty(name);
-   }
-
-   /**
-    * @return the name of the entity
-    */
-   public String getName() {
-      return name;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(super.hashCode(), name);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      ReferenceWithName that = ReferenceWithName.class.cast(obj);
-      return super.equals(obj) && Objects.equal(this.name, that.name);
-   }
-
-   protected ToStringHelper string() {
-      return super.string().add("name", name);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromReferenceWithName(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> extends Reference.Builder<T> {
-      protected abstract T self();
-
-      protected String name;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      public ReferenceWithName build() {
-         return new ReferenceWithName(id, tenantId, name);
-      }
-
-      public T fromReferenceWithName(ReferenceWithName in) {
-         return super.fromReference(in).name(in.getName());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}


[08/50] [abbrv] jclouds git commit: Support LBaaS v1

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
new file mode 100644
index 0000000..31a7ecf
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
@@ -0,0 +1,1787 @@
+/*
+ * 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.lbaas.v1;
+
+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.util.List;
+
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HttpMethod;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.LBaaSStatus;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pool;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.ProbeType;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Protocol;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.SessionPersistence;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+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.google.common.base.Optional;
+import com.google.common.collect.ImmutableSet;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+
+@Test
+public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
+
+   public void testWhenNamespaceInExtensionsLBaaSPresent() throws IOException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         Optional<LBaaSApi> lbaasApiExtension = neutronApi.getLBaaSApi("RegionOne");
+
+         assertAuthentication(server);
+
+         /*
+          * Check response
+          */
+         assertNotNull(lbaasApiExtension);
+         assertEquals(lbaasApiExtension.isPresent(), true, "LBaaS API Version 1 is expected to be available");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testWhenNamespaceNotInExtensionsListLBaaSNotPresent() throws IOException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_without_lbaas_v1_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         Optional<LBaaSApi> lbaasApiExtension = neutronApi.getLBaaSApi("RegionOne");
+
+         assertAuthentication(server);
+
+         /*
+          * Check response
+          */
+         assertNotNull(lbaasApiExtension);
+         assertEquals(lbaasApiExtension.isPresent(), false, "LBaaS API Version 1 is expected to be unavailable");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreatePool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/pool_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool.CreatePool createPool = Pool.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.TCP, Pool.ROUND_ROBIN)
+               .name("NewPool").description(null).healthMonitors(null).provider(null).adminStateUp(null).build();
+
+         Pool pool = lbaasApi.createPool(createPool);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/pools", "/lbaas/v1/pool_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pool);
+         assertNotNull(pool.getId());
+         assertEquals(pool.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertNull(pool.getVIPId());
+         assertEquals(pool.getName(), "NewPool");
+         assertEquals(pool.getDescription(), "");
+         assertEquals(pool.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(pool.getProtocol(), Protocol.TCP);
+         assertEquals(pool.getProvider(), "HAPROXY");
+         assertEquals(pool.getLBMethod(), Pool.ROUND_ROBIN);
+         assertNotNull(pool.getMembers());
+         assertTrue(pool.getMembers().isEmpty());
+         assertNotNull(pool.getHealthMonitors());
+         assertTrue(pool.getHealthMonitors().isEmpty());
+         assertNotNull(pool.getHealthMonitorsStatus());
+         assertTrue(pool.getHealthMonitorsStatus().isEmpty());
+         assertEquals(pool.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(pool.getStatus(), LBaaSStatus.PENDING_CREATE);
+         assertNull(pool.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreatePoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool.CreatePool createPool = Pool.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.TCP, Pool.ROUND_ROBIN)
+               .name("NewPool").description(null).healthMonitors(null).provider(null).adminStateUp(null).build();
+
+         lbaasApi.createPool(createPool);
+
+         fail("Should have failed with not found exception");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPagePool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/pool_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pools pools = lbaasApi.listPools(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pools);
+         assertEquals(pools.size(), 1);
+         assertEquals(pools.first().get().getId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPagePoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pools pools = lbaasApi.listPools(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pools);
+         assertTrue(pools.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedPool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/pool_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/pool_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<Pool> pools = lbaasApi.listPools().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 4);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools");
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pools);
+         assertEquals(pools.size(), 2);
+         assertEquals(pools.get(0).getId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         assertEquals(pools.get(1).getId(), "72741b06-df4d-4715-b142-276b6bce75ab_2");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedPoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<Pool> pools = lbaasApi.listPools().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pools);
+         assertTrue(pools.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetPool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/pool_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool pool = lbaasApi.getPool("72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pool);
+         assertEquals(pool.getId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         assertEquals(pool.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertNotNull(pool.getVIPId());
+         assertEquals(pool.getName(), "app_pool");
+         assertEquals(pool.getDescription(), "");
+         assertEquals(pool.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(pool.getProtocol(), Protocol.HTTP);
+         assertEquals(pool.getProvider(), "HAPROXY");
+         assertEquals(pool.getLBMethod(), Pool.ROUND_ROBIN);
+         assertNotNull(pool.getMembers());
+         assertEquals(pool.getMembers().size(), 2);
+         assertNotNull(pool.getHealthMonitors());
+         assertEquals(pool.getHealthMonitors().size(), 2);
+         assertNotNull(pool.getHealthMonitorsStatus());
+         assertEquals(pool.getHealthMonitorsStatus().size(), 2);
+         assertEquals(pool.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(pool.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(pool.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetPoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool pool = lbaasApi.getPool("72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check response
+          */
+         assertNull(pool);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdatePool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/pool_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool.UpdatePool updatePool = Pool.updateBuilder().name("new_name").description("new description").lbMethod("NEW_LB_METHOD")
+               .healthMonitors(ImmutableSet.of("5d4b5228-33b0-4e60-b225-9b727c1a20e7")).adminStateUp(Boolean.FALSE).build();
+
+         Pool pool = lbaasApi.updatePool("72741b06-df4d-4715-b142-276b6bce75ab", updatePool);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(pool);
+         assertEquals(pool.getId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         assertEquals(pool.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertNotNull(pool.getVIPId());
+         assertEquals(pool.getName(), "new_name");
+         assertEquals(pool.getDescription(), "new description");
+         assertEquals(pool.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(pool.getProtocol(), Protocol.HTTP);
+         assertEquals(pool.getProvider(), "HAPROXY");
+         assertEquals(pool.getLBMethod(), "NEW_LB_METHOD");
+         assertNotNull(pool.getMembers());
+         assertEquals(pool.getMembers().size(), 2);
+         assertNotNull(pool.getHealthMonitors());
+         assertEquals(pool.getHealthMonitors().size(), 1);
+         assertEquals(pool.getHealthMonitors().iterator().next(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertNotNull(pool.getHealthMonitorsStatus());
+         assertEquals(pool.getHealthMonitorsStatus().size(), 1);
+         assertEquals(pool.getHealthMonitorsStatus().iterator().next().getId(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertEquals(pool.getAdminStateUp(), Boolean.FALSE);
+         assertEquals(pool.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(pool.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdatePoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Pool.UpdatePool updatePool = Pool.updateBuilder().name("new_name").description("new description").lbMethod("NEW_LB_METHOD")
+               .healthMonitors(ImmutableSet.of("5d4b5228-33b0-4e60-b225-9b727c1a20e7")).adminStateUp(Boolean.FALSE).build();
+
+         Pool pool = lbaasApi.updatePool("72741b06-df4d-4715-b142-276b6bce75ab", updatePool);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(pool);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeletePool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deletePool("72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeletePoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deletePool("72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/member_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member.CreateMember createMember = Member.createBuilder("72741b06-df4d-4715-b142-276b6bce75ab", null, 80)
+               .weight(null).adminStateUp(null).build();
+
+         Member member = lbaasApi.createMember(createMember);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/members", "/lbaas/v1/member_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(member);
+         assertNotNull(member.getId());
+         assertEquals(member.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(member.getPoolId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         assertNotNull(member.getAddress());
+         assertEquals(member.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(member.getWeight(), Integer.valueOf(1));
+         assertEquals(member.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(member.getStatus(), LBaaSStatus.PENDING_CREATE);
+         assertNull(member.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member.CreateMember createMember = Member.createBuilder("72741b06-df4d-4715-b142-276b6bce75ab", null, 80)
+               .weight(null).adminStateUp(null).build();
+
+         lbaasApi.createMember(createMember);
+
+         fail("Should have failed with not found exception");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/member_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Members members = lbaasApi.listMembers(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(members);
+         assertEquals(members.size(), 1);
+         assertEquals(members.first().get().getId(), "48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Members members = lbaasApi.listMembers(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(members);
+         assertTrue(members.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/member_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/member_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<Member> members = lbaasApi.listMembers().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 4);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members");
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+
+         /*
+          * Check response
+          */
+         assertNotNull(members);
+         assertEquals(members.size(), 2);
+         assertEquals(members.get(0).getId(), "48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertEquals(members.get(1).getId(), "701b531b-111a-4f21-ad85-4795b7b12af6");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<Member> members = lbaasApi.listMembers().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members");
+
+         /*
+          * Check response
+          */
+         assertNotNull(members);
+         assertTrue(members.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/member_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member member = lbaasApi.getMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check response
+          */
+         assertNotNull(member);
+         assertEquals(member.getId(), "48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertEquals(member.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(member.getPoolId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         assertEquals(member.getAddress(), "10.0.0.5");
+         assertEquals(member.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(member.getWeight(), Integer.valueOf(1));
+         assertEquals(member.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(member.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(member.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member member = lbaasApi.getMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check response
+          */
+         assertNull(member);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/member_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member.UpdateMember updateMember = Member.updateBuilder().poolId("new_pool_id").weight(2)
+               .adminStateUp(Boolean.FALSE).build();
+
+         Member member = lbaasApi.updateMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", updateMember);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(member);
+         assertEquals(member.getId(), "48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertEquals(member.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(member.getPoolId(), "new_pool_id");
+         assertEquals(member.getAddress(), "10.0.0.5");
+         assertEquals(member.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(member.getWeight(), Integer.valueOf(2));
+         assertEquals(member.getAdminStateUp(), Boolean.FALSE);
+         assertEquals(member.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(member.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         Member.UpdateMember updateMember = Member.updateBuilder().poolId("new_pool_id").weight(2)
+               .adminStateUp(Boolean.FALSE).build();
+
+         Member member = lbaasApi.updateMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", updateMember);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(member);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteMember() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteMemberFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/vip_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIP.CreateVIP createVIP = VIP.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.HTTP, 80, "61b1f87a-7a21-4ad3-9dda-7f81d249944f")
+               .name("NewVip").description(null).address(null).sessionPersistence(null).connectionLimit(null).build();
+
+         VIP vip = lbaasApi.createVIP(createVIP);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/vips", "/lbaas/v1/vip_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vip);
+         assertNotNull(vip.getId());
+         assertEquals(vip.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(vip.getName(), "NewVip");
+         assertEquals(vip.getDescription(), "");
+         assertEquals(vip.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(vip.getAddress(), "10.0.0.11");
+         assertEquals(vip.getPortId(), "f7e6fe6a-b8b5-43a8-8215-73456b32e0f5");
+         assertEquals(vip.getProtocol(), Protocol.HTTP);
+         assertEquals(vip.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(vip.getPoolId(), "61b1f87a-7a21-4ad3-9dda-7f81d249944f");
+         assertNull(vip.getSessionPersistence());
+         assertEquals(vip.getConnectionLimit(), Integer.valueOf(-1));
+         assertEquals(vip.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(vip.getStatus(), LBaaSStatus.PENDING_CREATE);
+         assertNull(vip.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIP.CreateVIP createVIP = VIP.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.HTTP, 80, "61b1f87a-7a21-4ad3-9dda-7f81d249944f")
+               .name("NewVip").description(null).address(null).sessionPersistence(null).connectionLimit(null).build();
+
+         lbaasApi.createVIP(createVIP);
+
+         fail("Should have failed with not found exception");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/vip_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIPs vips = lbaasApi.listVIPs(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vips);
+         assertEquals(vips.size(), 1);
+         assertEquals(vips.first().get().getId(), "4ec89087-d057-4e2c-911f-60a3b47ee304");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIPs vips = lbaasApi.listVIPs(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vips);
+         assertTrue(vips.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/vip_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/vip_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<VIP> vips = lbaasApi.listVIPs().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 4);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips");
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vips);
+         assertEquals(vips.size(), 2);
+         assertEquals(vips.get(0).getId(), "4ec89087-d057-4e2c-911f-60a3b47ee304");
+         assertEquals(vips.get(1).getId(), "c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<VIP> vips = lbaasApi.listVIPs().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vips);
+         assertTrue(vips.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/vip_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIP vip = lbaasApi.getVIP("4ec89087-d057-4e2c-911f-60a3b47ee304");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vip);
+         assertNotNull(vip.getId());
+         assertEquals(vip.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(vip.getName(), "my-vip");
+         assertEquals(vip.getDescription(), "");
+         assertEquals(vip.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(vip.getAddress(), "10.0.0.10");
+         assertEquals(vip.getPortId(), "b5a743d6-056b-468b-862d-fb13a9aa694e");
+         assertEquals(vip.getProtocol(), Protocol.HTTP);
+         assertEquals(vip.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(vip.getPoolId(), "72741b06-df4d-4715-b142-276b6bce75ab");
+         SessionPersistence sessionPersistence = SessionPersistence.builder().type(SessionPersistence.Type.APP_COOKIE).cookieName("MyAppCookie").build();
+         assertEquals(vip.getSessionPersistence(), sessionPersistence);
+         assertEquals(vip.getConnectionLimit(), Integer.valueOf(1000));
+         assertEquals(vip.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(vip.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(vip.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         VIP vip = lbaasApi.getVIP("4ec89087-d057-4e2c-911f-60a3b47ee304");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
+
+         /*
+          * Check response
+          */
+         assertNull(vip);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/vip_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         SessionPersistence sessionPersistence = SessionPersistence.builder().type(SessionPersistence.Type.APP_COOKIE).cookieName("MyNewAppCookie").build();
+         VIP.UpdateVIP updateVIP = VIP.updateBuilder().name("new-name").description("new description").poolId("61b1f87a-7a21-4ad3-9dda-7f81d249944f")
+               .sessionPersistence(sessionPersistence).connectionLimit(50).adminStateUp(Boolean.FALSE).build();
+
+         VIP vip = lbaasApi.updateVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2", updateVIP);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(vip);
+         assertNotNull(vip.getId());
+         assertEquals(vip.getTenantId(), "83657cfcdfe44cd5920adaf26c48ceea");
+         assertEquals(vip.getName(), "new-name");
+         assertEquals(vip.getDescription(), "new description");
+         assertEquals(vip.getSubnetId(), "8032909d-47a1-4715-90af-5153ffe39861");
+         assertEquals(vip.getAddress(), "10.0.0.11");
+         assertEquals(vip.getPortId(), "f7e6fe6a-b8b5-43a8-8215-73456b32e0f5");
+         assertEquals(vip.getProtocol(), Protocol.HTTP);
+         assertEquals(vip.getProtocolPort(), Integer.valueOf(80));
+         assertEquals(vip.getPoolId(), "61b1f87a-7a21-4ad3-9dda-7f81d249944f");
+         assertEquals(vip.getSessionPersistence(), sessionPersistence);
+         assertEquals(vip.getConnectionLimit(), Integer.valueOf(50));
+         assertEquals(vip.getAdminStateUp(), Boolean.FALSE);
+         assertEquals(vip.getStatus(), LBaaSStatus.PENDING_UPDATE);
+         assertNull(vip.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         SessionPersistence sessionPersistence = SessionPersistence.builder().type(SessionPersistence.Type.APP_COOKIE).cookieName("MyNewAppCookie").build();
+         VIP.UpdateVIP updateVIP = VIP.updateBuilder().name("new-name").description("new description").poolId("61b1f87a-7a21-4ad3-9dda-7f81d249944f")
+               .sessionPersistence(sessionPersistence).connectionLimit(50).adminStateUp(Boolean.FALSE).build();
+
+         VIP vip = lbaasApi.updateVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2", updateVIP);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(vip);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteVIP() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteVIPFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/health_monitor_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor.CreateHealthMonitor createHealthMonitor = HealthMonitor.createBuilder(ProbeType.HTTP, Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1))
+               .httpMethod(null).urlPath(null).expectedCodes(null).adminStateUp(null).build();
+
+         HealthMonitor healthMonitor = lbaasApi.createHealthMonitor(createHealthMonitor);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/health_monitors", "/lbaas/v1/health_monitor_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitor);
+         assertNotNull(healthMonitor.getId());
+         assertEquals(healthMonitor.getTenantId(), "4fd44f30292945e481c7b8a0c8908869");
+         assertEquals(healthMonitor.getType(), ProbeType.HTTP);
+         assertEquals(healthMonitor.getDelay(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getTimeout(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getMaxRetries(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getHttpMethod(), HttpMethod.GET);
+         assertEquals(healthMonitor.getUrlPath(), "/");
+         assertEquals(healthMonitor.getExpectedCodes(), "200");
+         assertNotNull(healthMonitor.getPools());
+         assertTrue(healthMonitor.getPools().isEmpty());
+         assertEquals(healthMonitor.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(healthMonitor.getStatus(), LBaaSStatus.PENDING_CREATE);
+         assertNull(healthMonitor.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor.CreateHealthMonitor createHealthMonitor = HealthMonitor.createBuilder(ProbeType.HTTP, Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1))
+               .httpMethod(null).urlPath(null).expectedCodes(null).adminStateUp(null).build();
+
+         lbaasApi.createHealthMonitor(createHealthMonitor);
+
+         fail("Should have failed with not found exception");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/health_monitor_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitors healthMonitors = lbaasApi.listHealthMonitors(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitors);
+         assertEquals(healthMonitors.size(), 1);
+         assertEquals(healthMonitors.first().get().getId(), "466c8345-28d8-4f84-a246-e04380b0461d");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitors healthMonitors = lbaasApi.listHealthMonitors(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitors);
+         assertTrue(healthMonitors.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/health_monitor_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/lbaas/v1/health_monitor_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<HealthMonitor> healthMonitors = lbaasApi.listHealthMonitors().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 4);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors");
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitors);
+         assertEquals(healthMonitors.size(), 2);
+         assertEquals(healthMonitors.get(0).getId(), "466c8345-28d8-4f84-a246-e04380b0461d");
+         assertEquals(healthMonitors.get(1).getId(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<HealthMonitor> healthMonitors = lbaasApi.listHealthMonitors().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitors);
+         assertTrue(healthMonitors.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/health_monitor_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor healthMonitor = lbaasApi.getHealthMonitor("5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitor);
+         assertEquals(healthMonitor.getId(), "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertEquals(healthMonitor.getTenantId(), "4fd44f30292945e481c7b8a0c8908869");
+         assertEquals(healthMonitor.getType(), ProbeType.HTTP);
+         assertEquals(healthMonitor.getDelay(), Integer.valueOf(5));
+         assertEquals(healthMonitor.getTimeout(), Integer.valueOf(2));
+         assertEquals(healthMonitor.getMaxRetries(), Integer.valueOf(2));
+         assertEquals(healthMonitor.getHttpMethod(), HttpMethod.GET);
+         assertEquals(healthMonitor.getUrlPath(), "/");
+         assertEquals(healthMonitor.getExpectedCodes(), "200");
+         assertNotNull(healthMonitor.getPools());
+         assertTrue(healthMonitor.getPools().isEmpty());
+         assertEquals(healthMonitor.getAdminStateUp(), Boolean.TRUE);
+         assertEquals(healthMonitor.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(healthMonitor.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor healthMonitor = lbaasApi.getHealthMonitor("5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check response
+          */
+         assertNull(healthMonitor);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/health_monitor_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor.UpdateHealthMonitor updateHealthMonitor = HealthMonitor.updateBuilder().delay(Integer.valueOf(1)).timeout(Integer.valueOf(1)).maxRetries(Integer.valueOf(1))
+               .httpMethod(HttpMethod.HEAD).urlPath("/index.html").expectedCodes("201").adminStateUp(Boolean.FALSE).build();
+
+         HealthMonitor healthMonitor = lbaasApi.updateHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d", updateHealthMonitor);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitor);
+         assertEquals(healthMonitor.getId(), "466c8345-28d8-4f84-a246-e04380b0461d");
+         assertEquals(healthMonitor.getTenantId(), "4fd44f30292945e481c7b8a0c8908869");
+         assertEquals(healthMonitor.getType(), ProbeType.HTTP);
+         assertEquals(healthMonitor.getDelay(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getTimeout(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getMaxRetries(), Integer.valueOf(1));
+         assertEquals(healthMonitor.getHttpMethod(), HttpMethod.HEAD);
+         assertEquals(healthMonitor.getUrlPath(), "/index.html");
+         assertEquals(healthMonitor.getExpectedCodes(), "201");
+         assertNotNull(healthMonitor.getPools());
+         assertTrue(healthMonitor.getPools().isEmpty());
+         assertEquals(healthMonitor.getAdminStateUp(), Boolean.FALSE);
+         assertEquals(healthMonitor.getStatus(), LBaaSStatus.ACTIVE);
+         assertNull(healthMonitor.getStatusDescription());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor.UpdateHealthMonitor updateHealthMonitor = HealthMonitor.updateBuilder().delay(Integer.valueOf(1)).timeout(Integer.valueOf(1)).maxRetries(Integer.valueOf(1))
+               .httpMethod(HttpMethod.HEAD).urlPath("/index.html").expectedCodes("201").adminStateUp(Boolean.FALSE).build();
+
+         HealthMonitor healthMonitor = lbaasApi.updateHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d", updateHealthMonitor);
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(healthMonitor);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteHealthMonitor() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteHealthMonitorFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.deleteHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testAssociateHealthMonitorWithPool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(201).setBody(stringFromResource("/lbaas/v1/pool_associate_health_monitor_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         HealthMonitor healthMonitor = lbaasApi.associateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors", "/lbaas/v1/pool_associate_health_monitor_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(healthMonitor);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testAssociateHealthMonitorWithPoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         lbaasApi.associateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         fail("Should have failed with not found exception");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDisassociateHealthMonitorFromPool() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.disassociateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDisassociateHealthMonitorFromPoolFail() throws IOException, InterruptedException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
+
+         boolean result = lbaasApi.disassociateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check request
+          */
+         assertAuthentication(server);
+         server.takeRequest();
+         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+}


[38/50] [abbrv] jclouds git commit: JCLOUDS-691: Remove 404 fallbacks of PUT and POST calls from OpenStack APIs

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
index f83dcf9..ce5dc66 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
@@ -17,11 +17,9 @@
 package org.jclouds.openstack.neutron.v2.extensions.lbaas.v1;
 
 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.util.List;
@@ -42,7 +40,6 @@ import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
 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.google.common.base.Optional;
@@ -144,29 +141,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreatePoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Pool.CreatePool createPool = Pool.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.TCP, Pool.ROUND_ROBIN)
-               .name("NewPool").description(null).healthMonitors(null).provider(null).adminStateUp(null).build();
-
-         lbaasApi.createPool(createPool);
-
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPagePool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -197,35 +171,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPagePoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Pools pools = lbaasApi.listPools(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(pools);
-         assertTrue(pools.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedPool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -261,37 +206,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedPoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Pool> pools = lbaasApi.listPools().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools");
-
-         /*
-          * Check response
-          */
-         assertNotNull(pools);
-         assertTrue(pools.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetPool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -338,34 +252,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetPoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Pool pool = lbaasApi.getPool("72741b06-df4d-4715-b142-276b6bce75ab");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
-
-         /*
-          * Check response
-          */
-         assertNull(pool);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdatePool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -417,37 +303,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdatePoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Pool.UpdatePool updatePool = Pool.updateBuilder().name("new_name").description("new description").lbMethod("NEW_LB_METHOD")
-               .healthMonitors(ImmutableSet.of("5d4b5228-33b0-4e60-b225-9b727c1a20e7")).adminStateUp(Boolean.FALSE).build();
-
-         Pool pool = lbaasApi.updatePool("72741b06-df4d-4715-b142-276b6bce75ab", updatePool);
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(pool);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeletePool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -476,34 +331,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeletePoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.deletePool("72741b06-df4d-4715-b142-276b6bce75ab");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -544,29 +371,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateMemberFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Member.CreateMember createMember = Member.createBuilder("72741b06-df4d-4715-b142-276b6bce75ab", null, 80)
-               .weight(null).adminStateUp(null).build();
-
-         lbaasApi.createMember(createMember);
-
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -597,35 +401,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageMemberFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Members members = lbaasApi.listMembers(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(members);
-         assertTrue(members.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -661,37 +436,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedMemberFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Member> members = lbaasApi.listMembers().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members");
-
-         /*
-          * Check response
-          */
-         assertNotNull(members);
-         assertTrue(members.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -729,34 +473,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetMemberFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         Member member = lbaasApi.getMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check response
-          */
-         assertNull(member);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -797,88 +513,29 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateMemberFail() throws IOException, InterruptedException {
+   public void testDeleteMember() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
       server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
 
       try {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
 
-         Member.UpdateMember updateMember = Member.updateBuilder().poolId("new_pool_id").weight(2)
-               .adminStateUp(Boolean.FALSE).build();
-
-         Member member = lbaasApi.updateMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", updateMember);
+         boolean result = lbaasApi.deleteMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check request
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check response
           */
-         assertNull(member);
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteMember() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(204)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.deleteMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check response
-          */
-         assertTrue(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteMemberFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.deleteMember("48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
+         assertTrue(result);
       } finally {
          server.shutdown();
       }
@@ -930,29 +587,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         VIP.CreateVIP createVIP = VIP.createBuilder("8032909d-47a1-4715-90af-5153ffe39861", Protocol.HTTP, 80, "61b1f87a-7a21-4ad3-9dda-7f81d249944f")
-               .name("NewVip").description(null).address(null).sessionPersistence(null).connectionLimit(null).build();
-
-         lbaasApi.createVIP(createVIP);
-
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageVIP() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -983,35 +617,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         VIPs vips = lbaasApi.listVIPs(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(vips);
-         assertTrue(vips.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedVIP() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1047,37 +652,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<VIP> vips = lbaasApi.listVIPs().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips");
-
-         /*
-          * Check response
-          */
-         assertNotNull(vips);
-         assertTrue(vips.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetVIP() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1122,34 +696,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         VIP vip = lbaasApi.getVIP("4ec89087-d057-4e2c-911f-60a3b47ee304");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
-
-         /*
-          * Check response
-          */
-         assertNull(vip);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateVIP() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1197,38 +743,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         SessionPersistence sessionPersistence = SessionPersistence.builder().type(SessionPersistence.Type.APP_COOKIE).cookieName("MyNewAppCookie").build();
-         VIP.UpdateVIP updateVIP = VIP.updateBuilder().name("new-name").description("new description").poolId("61b1f87a-7a21-4ad3-9dda-7f81d249944f")
-               .sessionPersistence(sessionPersistence).connectionLimit(50).adminStateUp(Boolean.FALSE).build();
-
-         VIP vip = lbaasApi.updateVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2", updateVIP);
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(vip);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteVIP() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1257,34 +771,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteVIPFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.deleteVIP("c987d2be-9a3c-4ac9-a046-e8716b1350e2");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1330,29 +816,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         HealthMonitor.CreateHealthMonitor createHealthMonitor = HealthMonitor.createBuilder(ProbeType.HTTP, Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1))
-               .httpMethod(null).urlPath(null).expectedCodes(null).adminStateUp(null).build();
-
-         lbaasApi.createHealthMonitor(createHealthMonitor);
-
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1383,35 +846,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         HealthMonitors healthMonitors = lbaasApi.listHealthMonitors(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(healthMonitors);
-         assertTrue(healthMonitors.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1447,37 +881,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<HealthMonitor> healthMonitors = lbaasApi.listHealthMonitors().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors");
-
-         /*
-          * Check response
-          */
-         assertNotNull(healthMonitors);
-         assertTrue(healthMonitors.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1520,34 +923,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         HealthMonitor healthMonitor = lbaasApi.getHealthMonitor("5d4b5228-33b0-4e60-b225-9b727c1a20e7");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
-
-         /*
-          * Check response
-          */
-         assertNull(healthMonitor);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1593,37 +968,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         HealthMonitor.UpdateHealthMonitor updateHealthMonitor = HealthMonitor.updateBuilder().delay(Integer.valueOf(1)).timeout(Integer.valueOf(1)).maxRetries(Integer.valueOf(1))
-               .httpMethod(HttpMethod.HEAD).urlPath("/index.html").expectedCodes("201").adminStateUp(Boolean.FALSE).build();
-
-         HealthMonitor healthMonitor = lbaasApi.updateHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d", updateHealthMonitor);
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(healthMonitor);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteHealthMonitor() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1652,34 +996,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteHealthMonitorFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.deleteHealthMonitor("466c8345-28d8-4f84-a246-e04380b0461d");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testAssociateHealthMonitorWithPool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1708,26 +1024,6 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testAssociateHealthMonitorWithPoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         lbaasApi.associateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
-
-         fail("Should have failed with not found exception");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDisassociateHealthMonitorFromPool() throws IOException, InterruptedException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -1756,32 +1052,4 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDisassociateHealthMonitorFromPoolFail() throws IOException, InterruptedException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/extension_list_with_lbaas_v1_response.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         LBaaSApi lbaasApi = neutronApi.getLBaaSApi("RegionOne").get();
-
-         boolean result = lbaasApi.disassociateHealthMonitor("72741b06-df4d-4715-b142-276b6bce75ab", "5d4b5228-33b0-4e60-b225-9b727c1a20e7");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
index e0b6e1c..a929881 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
@@ -18,8 +18,6 @@ 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;
 
@@ -67,33 +65,6 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   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", uriApiVersion + "/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"))));
@@ -122,31 +93,4 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   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", uriApiVersion + "/extensions/router");
-
-         /*
-          * Check response
-          */
-         assertNull(routerExtension);
-      } finally {
-         server.shutdown();
-      }
-
-   }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
index 5de307e..95e3f4c 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
@@ -20,6 +20,7 @@ import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 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.Network;
 import org.jclouds.openstack.neutron.v2.domain.NetworkStatus;
@@ -27,7 +28,6 @@ import org.jclouds.openstack.neutron.v2.domain.NetworkType;
 import org.jclouds.openstack.neutron.v2.domain.Networks;
 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;
@@ -35,9 +35,7 @@ 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;
 
 /**
@@ -82,26 +80,6 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateNetworkFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404).setBody(stringFromResource("/network_create_response.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         Network.CreateNetwork createNetwork = Network.createBuilder("jclouds-wibble")
-               .networkType(NetworkType.LOCAL)
-               .build();
-
-         Network network = api.create(createNetwork);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageNetwork() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -191,35 +169,6 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedNetworkFail() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404).setBody(stringFromResource("/network_list_response_paged1.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Network> networks = api.list().concat().toList();
-
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks");
-
-         /*
-          * Check response
-          */
-         assertTrue(networks.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetNetwork() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -249,33 +198,6 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetNetworkFail() 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);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         Network network = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(network);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateNetworkBulk() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -322,30 +244,6 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateNetworkBulkFail() 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);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         Network.CreateNetwork createNetwork1 = Network.createBuilder("jclouds-wibble")
-               .networkType(NetworkType.LOCAL)
-               .build();
-
-         Network.CreateNetwork createNetwork2 = Network.createBuilder("jclouds-wibble2")
-               .networkType(NetworkType.LOCAL)
-               .build();
-
-         FluentIterable<Network> networks = api.createBulk(ImmutableList.of(createNetwork1, createNetwork2));
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateNetwork() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -379,37 +277,6 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateNetworkFail() 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);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         Network.UpdateNetwork updateNetwork = Network.updateBuilder()
-               .name("jclouds-wibble-updated")
-               .networkType(NetworkType.LOCAL)
-               .build();
-
-         Network network = api.update("123456", updateNetwork);
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/networks/123456");
-
-         /*
-          * Check response
-          */
-         assertNull(network);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteNetwork() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -436,29 +303,4 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteNetworkFail() 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);
-         NetworkApi api = neutronApi.getNetworkApi("RegionOne");
-
-         boolean result = api.delete("123456");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/networks/123456");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
index 8b4797d..a8932c7 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
@@ -17,9 +17,7 @@
 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 static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
@@ -36,7 +34,6 @@ import org.jclouds.openstack.neutron.v2.domain.VIFType;
 import org.jclouds.openstack.neutron.v2.domain.VNICType;
 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.google.common.collect.FluentIterable;
@@ -98,30 +95,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreatePortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         Port.CreatePort createPort = Port.createBuilder("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
-               .name("port1")
-               .adminStateUp(Boolean.TRUE)
-               .deviceId("d6b4d3a5-c700-476f-b609-1493dd9dadc0")
-               .allowedAddressPairs(ImmutableSet.of(AddressPair.builder("12", "111.222.333.444").build()))
-               .build();
-
-         Port port = api.create(createPort);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPagePort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -150,32 +123,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         Ports ports = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertTrue(ports.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedPort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -209,34 +156,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedPortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Port> ports = api.list().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports");
-
-         /*
-          * Check response
-          */
-         assertTrue(ports.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateBulkPort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -281,37 +200,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateBulkPortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         Port.CreatePort createPort1 = Port.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa")
-               .name("port1")
-               .adminStateUp(Boolean.TRUE)
-               .deviceId("24df1d04-d5cb-41e1-8de5-61ed77c558df")
-               .securityGroups(ImmutableSet.of("dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
-               .build();
-
-         Port.CreatePort createPort2 = Port.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406")
-               .name("port2")
-               .adminStateUp(Boolean.FALSE)
-               .securityGroups(
-                     ImmutableSet.of("8bf3f7cc-8471-40b1-815f-9da47e79775b", "dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
-               .build();
-
-         FluentIterable<Port> ports = api.createBulk(ImmutableList.of(createPort1, createPort2));
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetPort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -348,33 +236,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetPortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         Port port = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(port);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdatePort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -408,37 +269,6 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdatePortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         Port.UpdatePort updatePort = Port.updateBuilder()
-               .securityGroups(ImmutableSet.of("85cc3048-abc3-43cc-89b3-377341426ac5", "c5ab5c29-2c99-44cb-a4b8-e70a88b77799"))
-               .build();
-
-         Port port = api.update("12345", updatePort);
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/ports/12345", "/port_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(port);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeletePort() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -465,29 +295,4 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeletePortFail() 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);
-         PortApi api = neutronApi.getPortApi("RegionOne");
-
-         boolean result = api.delete("12345");
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/ports/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/01ca3425/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
index bfe3d12..036bad7 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
@@ -17,9 +17,7 @@
 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 static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
@@ -32,7 +30,6 @@ import org.jclouds.openstack.neutron.v2.domain.Subnet;
 import org.jclouds.openstack.neutron.v2.domain.Subnets;
 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.google.common.collect.FluentIterable;
@@ -83,27 +80,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         Subnet.CreateSubnet createSubnet = Subnet.createBuilder("1234567890", "cidr")
-               .name("jclouds-wibble")
-               .ipVersion(4)
-               .build();
-
-         Subnet subnet = api.create(createSubnet);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListSpecificPageSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -131,32 +107,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListSpecificPageSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         Subnets subnets = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertTrue(subnets.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testListPagedSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -190,34 +140,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testListPagedSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Subnet> subnets = api.list().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets");
-
-         /*
-          * Check response
-          */
-         assertTrue(subnets.isEmpty());
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testGetSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -249,33 +171,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testGetSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         Subnet subnet = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets/12345");
-
-         /*
-          * Check response
-          */
-         assertNull(subnet);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testCreateBulkSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -324,32 +219,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateBulkSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         Subnet.CreateSubnet createSubnet1 = Subnet.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406",
-               "192.168.199.0/24")
-               .ipVersion(4)
-               .build();
-
-         Subnet.CreateSubnet createSubnet2 = Subnet.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa",
-               "10.56.4.0/22")
-               .ipVersion(4)
-               .build();
-
-         FluentIterable<Subnet> subnets = api.createBulk(ImmutableList.of(createSubnet1, createSubnet2));
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testUpdateSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -385,38 +254,6 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testUpdateSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         Subnet.UpdateSubnet updateSubnet = Subnet.updateBuilder()
-               .name("new_name")
-               .gatewayIp("10.0.3.254")
-               .build();
-
-         Subnet subnet = api.update("12345", updateSubnet);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/subnets/12345", "/subnet_update_request.json");
-
-         /*
-          * Check response
-          */
-         assertNull(subnet);
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void testDeleteSubnet() throws IOException, InterruptedException, URISyntaxException {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
@@ -444,30 +281,4 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
       }
    }
 
-   public void testDeleteSubnetFail() 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);
-         SubnetApi api = neutronApi.getSubnetApi("RegionOne");
-
-         boolean result = api.delete("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 2);
-         assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/subnets/12345");
-
-         /*
-          * Check response
-          */
-         assertFalse(result);
-      } finally {
-         server.shutdown();
-      }
-   }
 }


[26/50] [abbrv] jclouds git commit: Neutron port ranges only compared when present.

Posted by na...@apache.org.
Neutron port ranges only compared when present.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/44c5053e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/44c5053e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/44c5053e

Branch: refs/heads/master
Commit: 44c5053e09ca1dc2601ee12c36e41ccdf06fc44c
Parents: 70a409f
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Mar 27 07:04:20 2015 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Thu Apr 2 17:33:56 2015 -0500

----------------------------------------------------------------------
 .../java/org/jclouds/openstack/neutron/v2/domain/Rule.java     | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/44c5053e/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
index 89e9d19..e72a3e9 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
@@ -367,8 +367,10 @@ public class Rule {
          super(rule);
          checkNotNull(this.getDirection(), "direction should not be null");
          checkNotNull(this.getSecurityGroupId(), "security group id should not be null");
-         checkArgument(this.getPortRangeMax() >= this.getPortRangeMin(),
-               "port range max should be greater than or equal to port range min");
+         if (this.getPortRangeMax() != null && this.getPortRangeMin() != null) {
+            checkArgument(this.getPortRangeMax() >= this.getPortRangeMin(),
+                  "port range max should be greater than or equal to port range min");
+         }
          checkArgument(this.getRemoteGroupId() == null || this.getRemoteIpPrefix() == null,
                "You can specify either remote_group_id or remote_ip_prefix in the request body.");
       }


[34/50] [abbrv] jclouds git commit: add FWaaS extension to openstack-neutron

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiLiveTest.java
new file mode 100644
index 0000000..62f09fb
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiLiveTest.java
@@ -0,0 +1,199 @@
+/*
+ * 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.assertTrue;
+
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.Firewall;
+import org.jclouds.openstack.neutron.v2.domain.FirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.FirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallRule;
+import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+
+/**
+ * Tests parsing and Guice wiring of FWaaSApi
+ */
+@Test(groups = "live", testName = "FWaaSApiLiveTest")
+public class FWaaSApiLiveTest extends BaseNeutronApiLiveTest {
+
+   private FWaaSApi fWaaSApi;
+
+   @BeforeMethod
+   void setUp() {
+      Optional<String> optionalRegion = Iterables.tryFind(api.getConfiguredRegions(), Predicates.notNull());
+      if (!optionalRegion.isPresent()) Assert.fail();
+      fWaaSApi = api.getFWaaSApi(optionalRegion.get()).get();
+   }
+   /**
+    * Smoke test for the Firewall extension for Neutron
+    */
+   public void testCreateUpdateAndDeleteFirewallRule() {
+
+      String inboundPort = "22";
+      FirewallRule firewallRule = null;
+
+      try {
+         // methods under test
+         firewallRule = fWaaSApi.createFirewallRule(CreateFirewallRule.builder()
+                 .name(String.format("jclouds-test-%s-fw-rule-%s", this.getClass().getCanonicalName().toLowerCase(), inboundPort))
+                 .description("jclouds test fw rule")
+                 .destinationIpAddress("192.168.0.1")
+                 .destinationPort(inboundPort)
+                 .enabled(true)
+                 .action("allow")
+                 .protocol("tcp")
+                 .build());
+
+         assertFalse(fWaaSApi.listFirewallRules().concat().toList().isEmpty());
+         assertNotNull(fWaaSApi.listFirewallRules(PaginationOptions.Builder.limit(1)));
+
+         // get
+         firewallRule = fWaaSApi.getFirewallRule(firewallRule.getId());
+         assertEquals(firewallRule.getName(), String.format("jclouds-test-%s-fw-rule-%s", this.getClass().getCanonicalName().toLowerCase(), inboundPort));
+         assertEquals(firewallRule.getDescription(), "jclouds test fw rule");
+
+         // update
+         FirewallRule updatedFirewallRule = fWaaSApi.updateFirewallRule(firewallRule.getId(), UpdateFirewallRule.builder().name(firewallRule.getName() + "-updated").build());
+         firewallRule = fWaaSApi.getFirewallRule(firewallRule.getId());
+         assertEquals(updatedFirewallRule, firewallRule);
+      } finally {
+         // delete
+         if (fWaaSApi != null) {
+            assertTrue(fWaaSApi.deleteFirewallRule(firewallRule.getId()));
+         }
+      }
+   }
+
+   public void testCreateUpdateAndDeleteFirewallPolicy() {
+
+      String inboundPort = "80";
+      FirewallRule firewallRule = fWaaSApi.createFirewallRule(CreateFirewallRule.builder()
+              .name(String.format("jclouds-test-%s-fw-rule-%s", this.getClass().getCanonicalName().toLowerCase(), inboundPort))
+              .description("jclouds test fw rule")
+              .destinationIpAddress("192.168.0.1")
+              .destinationPort(inboundPort)
+              .enabled(true)
+              .action("allow")
+              .protocol("tcp")
+              .build());
+      FirewallPolicy firewallPolicy = null;
+
+      try {
+         // methods under test
+         firewallPolicy = fWaaSApi.createFirewallPolicy(CreateFirewallPolicy.builder()
+                 .name(String.format("jclouds-test-%s-fw-policy", this.getClass().getCanonicalName().toLowerCase()))
+                 .description("jclouds test fw policy")
+                 .build());
+
+         assertFalse(fWaaSApi.listFirewallPolicies().concat().toList().isEmpty());
+         assertNotNull(fWaaSApi.listFirewallPolicies(PaginationOptions.Builder.limit(1)));
+
+         // get
+         firewallPolicy = fWaaSApi.getFirewallPolicy(firewallPolicy.getId());
+         assertEquals(firewallPolicy.getName(), String.format("jclouds-test-%s-fw-policy", this.getClass().getCanonicalName().toLowerCase()));
+         assertEquals(firewallPolicy.getDescription(), "jclouds test fw policy");
+
+         // update
+         FirewallPolicy updatedFirewallPolicy = fWaaSApi.updateFirewallPolicy(firewallPolicy.getId(), UpdateFirewallPolicy.builder()
+                 .name(String.format("jclouds-test-%s-fw-policy-update", this.getClass().getCanonicalName().toLowerCase())).build());
+         firewallPolicy = fWaaSApi.getFirewallPolicy(firewallPolicy.getId());
+         assertEquals(updatedFirewallPolicy, firewallPolicy);
+
+         firewallPolicy = fWaaSApi.insertFirewallRuleToPolicy(firewallPolicy.getId(), firewallRule.getId());
+         assertNotNull(firewallPolicy);
+         assertFalse(firewallPolicy.getFirewallRules().isEmpty());
+
+         firewallPolicy = fWaaSApi.removeFirewallRuleFromPolicy(firewallPolicy.getId(), firewallRule.getId());
+         assertNotNull(firewallPolicy);
+         assertTrue(firewallPolicy.getFirewallRules().isEmpty());
+      } finally {
+         // delete
+         if (fWaaSApi != null) {
+            try {
+               if (firewallPolicy != null) {
+                  assertTrue(fWaaSApi.deleteFirewallPolicy(firewallPolicy.getId()));
+               }
+            } finally {
+               assertTrue(fWaaSApi.deleteFirewallRule(firewallRule.getId()));
+            }
+         }
+      }
+   }
+
+   public void testCreateUpdateAndDeleteFirewall() {
+
+      FirewallPolicy firewallPolicy = fWaaSApi.createFirewallPolicy(CreateFirewallPolicy.builder()
+              .name(String.format("jclouds-test-%s-fw-policy", this.getClass().getCanonicalName().toLowerCase()))
+              .description("jclouds test fw policy")
+              .build());
+
+      Firewall firewall = null;
+
+      try {
+         // methods under test
+         firewall = fWaaSApi.create(CreateFirewall.builder().name(String.format("jclouds-test-%s-fw", this.getClass().getCanonicalName().toLowerCase()))
+                 .description("jclouds test firewall")
+                 .firewallPolicyId(firewallPolicy.getId())
+                 .build());
+
+         assertFalse(fWaaSApi.list().concat().toList().isEmpty());
+         assertNotNull(fWaaSApi.list(PaginationOptions.Builder.limit(1)));
+
+         // get
+         firewall = fWaaSApi.get(firewall.getId());
+         assertEquals(firewall.getName(), String.format("jclouds-test-%s-fw", this.getClass().getCanonicalName().toLowerCase()));
+         assertEquals(firewall.getDescription(), "jclouds test firewall");
+
+         // update
+         Firewall updatedFirewall = fWaaSApi.update(firewall.getId(), UpdateFirewall.builder().name(String.format("jclouds-test-%s-fw_updated", this.getClass()
+                 .getCanonicalName().toLowerCase())).build());
+         firewall = fWaaSApi.get(firewall.getId());
+         assertEquals(updatedFirewall, firewall);
+
+      } finally {
+         // delete
+         if (fWaaSApi != null) {
+            try {
+               if (firewallPolicy != null) {
+                  assertTrue(fWaaSApi.deleteFirewallPolicy(firewallPolicy.getId()));
+               }
+         } finally {
+            if (firewall != null) {
+               assertTrue(fWaaSApi.delete(firewall.getId()));
+            }         }
+         }
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
new file mode 100644
index 0000000..fe7a879
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApiMockTest.java
@@ -0,0 +1,984 @@
+/*
+ * 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 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.CreateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.Firewall;
+import org.jclouds.openstack.neutron.v2.domain.FirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.FirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIP;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallRule;
+import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.rest.ResourceNotFoundException;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+
+/**
+ * Tests Floating Api Guice wiring and parsing
+ *
+ */
+@Test
+public class FWaaSApiMockTest extends BaseNeutronApiMockTest {
+
+   public void testCreateFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewall firewallRequest = CreateFirewall.builder()
+                 .firewallPolicyId("c69933c1-b472-44f9-8226-30dc4ffd454c")
+                 .adminStateUp(Boolean.TRUE)
+                 .build();
+
+         Firewall firewall = api.create(firewallRequest);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/fw/firewalls", "/firewall_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewall);
+         assertEquals(firewall.getName(), "");
+         assertEquals(firewall.getTenantId(), "45977fa2dbd7482098dd68d0d8970117");
+         assertEquals(firewall.getDescription(), "");
+         assertEquals(firewall.getId(), "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977");
+         assertEquals(firewall.getStatus(), "PENDING_CREATE");
+         assertTrue(firewall.isAdminStateUp());
+         assertEquals(firewall.getFirewallPolicyId(), "c69933c1-b472-44f9-8226-30dc4ffd454c");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewall firewallRequest = CreateFirewall.builder()
+                 .firewallPolicyId("c69933c1-b472-44f9-8226-30dc4ffd454c")
+                 .adminStateUp(Boolean.TRUE)
+                 .build();
+
+         Firewall firewall = api.create(firewallRequest);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/firewall_list_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         PaginatedCollection<Firewall> firewalls = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewalls?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewalls);
+         assertEquals(firewalls.size(), 1);
+         assertEquals(Iterables.getFirst(firewalls, null).getId(), "5eb708e7-3856-449a-99ac-fec27cd745f9");
+         assertEquals(firewalls.get(0).getId(), "5eb708e7-3856-449a-99ac-fec27cd745f9");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
+
+         FloatingIPs floatingIPs = api.list(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(floatingIPs);
+         assertTrue(floatingIPs.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/floatingip_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/floatingip_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<FloatingIP> floatingIPs = api.list().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 4);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+
+         /*
+          * Check response
+          */
+         assertNotNull(floatingIPs);
+         assertEquals(floatingIPs.size(), 4);
+         assertEquals(floatingIPs.get(0).getId(), "2f245a7b-796b-4f26-9cf9-9e82d248fda7");
+         assertEquals(floatingIPs.get(3).getId(), "61cea855-49cb-4846-997d-801b70c71bdd2");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FloatingIPApi api = neutronApi.getFloatingIPApi("RegionOne").get();
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<FloatingIP> floatingIPs = api.list().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
+
+         /*
+          * Check response
+          */
+         assertNotNull(floatingIPs);
+         assertTrue(floatingIPs.isEmpty());
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         Firewall firewall = api.get("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewalls/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewall);
+         assertEquals(firewall.getId(), "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977");
+         assertEquals(firewall.getTenantId(), "45977fa2dbd7482098dd68d0d8970117");
+         assertEquals(firewall.getDescription(), "");
+         assertEquals(firewall.getName(), "");
+         assertEquals(firewall.getStatus(), "ACTIVE");
+         assertEquals(firewall.getFirewallPolicyId(), "c69933c1-b472-44f9-8226-30dc4ffd454c");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         Firewall firewall = api.get("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewalls/12345");
+
+         /*
+          * Check response
+          */
+         assertNull(firewall);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewall updateFirewall = UpdateFirewall.builder()
+               .adminStateUp(false)
+               .build();
+
+         Firewall firewall = api.update("12345", updateFirewall);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewalls/12345", "/firewall_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewall);
+         assertFalse(firewall.isAdminStateUp());
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewall updateFirewall = UpdateFirewall.builder()
+                 .adminStateUp(false)
+                 .build();
+
+         Firewall firewall = api.update("12345", updateFirewall);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewalls/12345", "/firewall_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(firewall);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteFirewall() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(201)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         boolean result = api.delete("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewalls/12345");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteFirewallFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+            new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         boolean result = api.delete("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewalls/12345");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_policy_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewallPolicy firewallPolicyRequest = CreateFirewallPolicy.builder()
+                 .name("jclouds-fw-policy_group-52-e8b")
+                 .build();
+
+         FirewallPolicy firewallPolicy = api.createFirewallPolicy(firewallPolicyRequest);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/fw/firewall_policies", "/firewall_policy_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallPolicy);
+         assertEquals(firewallPolicy.getName(), "jclouds-fw-policy_group-52-e8b");
+         assertEquals(firewallPolicy.getTenantId(), "3e00d5716204446c8d3c47a466eec25a");
+         assertEquals(firewallPolicy.getDescription(), "");
+         assertEquals(firewallPolicy.getId(), "12971159-95cf-4ca1-9baa-c82298ae0918");
+         assertEquals(firewallPolicy.isShared(), false);
+         assertEquals(firewallPolicy.getFirewallRules(), ImmutableList.of());
+         assertEquals(firewallPolicy.isAudited(), false);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewallPolicy firewallPolicyRequest = CreateFirewallPolicy.builder()
+                 .name("jclouds-fw-policy_group-52-e8b")
+                 .build();
+
+         FirewallPolicy firewallPolicy = api.createFirewallPolicy(firewallPolicyRequest);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_policy_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallPolicy firewallPolicy = api.getFirewallPolicy("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_policies/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallPolicy);
+         assertEquals(firewallPolicy.getId(), "18d2f4e5-afdd-4c10-87ea-d35f38faf98c");
+         assertEquals(firewallPolicy.getTenantId(), "e1defcdd823741c89afd5824040deed2");
+         assertEquals(firewallPolicy.getDescription(), "");
+         assertEquals(firewallPolicy.getName(), "myfirewallrule");
+         assertEquals(firewallPolicy.isAudited(), false);
+         assertEquals(firewallPolicy.isShared(), true);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallPolicy firewallPolicy = api.getFirewallPolicy("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_policies/12345");
+
+         /*
+          * Check response
+          */
+         assertNull(firewallPolicy);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_policy_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewallPolicy updateFirewallPolicy = UpdateFirewallPolicy.builder()
+                 .shared(true)
+                 .build();
+
+         FirewallPolicy firewallPolicy = api.updateFirewallPolicy("12345", updateFirewallPolicy);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallPolicy);
+         assertEquals(firewallPolicy.getId(), "18d2f4e5-afdd-4c10-87ea-d35f38faf98c");
+         assertEquals(firewallPolicy.getTenantId(), "e1defcdd823741c89afd5824040deed2");
+         assertEquals(firewallPolicy.getDescription(), "");
+         assertEquals(firewallPolicy.getName(), "myfirewallrule");
+         assertEquals(firewallPolicy.isAudited(), false);
+         assertEquals(firewallPolicy.isShared(), true);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewallPolicy updateFirewallPolicy = UpdateFirewallPolicy.builder()
+                 .shared(true)
+                 .build();
+
+         FirewallPolicy firewallPolicy = api.updateFirewallPolicy("12345", updateFirewallPolicy);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345");
+
+         /*
+          * Check response
+          */
+         assertNull(firewallPolicy);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testInsertFirewallRuleIntoFirewallPolicy() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_policy_insert_rule_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallPolicy updatedFirewallPolicy = api.insertFirewallRuleToPolicy("12345", "59585143-e819-48c9-944d-f03e0f049dba");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345/insert_rule", "/firewall_policy_insert_rule_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(updatedFirewallPolicy);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testInsertFirewallRuleIntoFirewallPolicyFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallPolicy updatedFirewallPolicy = api.insertFirewallRuleToPolicy("12345", "59585143-e819-48c9-944d-f03e0f049dba");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_policies/12345/insert_rule", "/firewall_policy_insert_rule_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(updatedFirewallPolicy);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateFirewallRule() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_rule_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewallRule firewallRuleRequest = CreateFirewallRule.builder()
+                 .name("jclouds-fw-rule_group-52-e8b_port-22")
+                 .tenantId("3e00d5716204446c8d3c47a466eec25a")
+                 .protocol("tcp")
+                 .destinationIpAddress("192.168.0.117")
+                 .destinationPort("22")
+                 .action("allow")
+                 .shared(false)
+                 .enabled(true)
+                 .build();
+
+         FirewallRule firewallRule = api.createFirewallRule(firewallRuleRequest);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/fw/firewall_rules", "/firewall_rule_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallRule);
+         assertEquals(firewallRule.getName(), "jclouds-fw-rule_group-52-e8b_port-22");
+         assertEquals(firewallRule.getTenantId(), "3e00d5716204446c8d3c47a466eec25a");
+         assertEquals(firewallRule.getDescription(), "");
+         assertEquals(firewallRule.getId(), "59585143-e819-48c9-944d-f03e0f049dba");
+         assertEquals(firewallRule.isShared(), false);
+         assertEquals(firewallRule.isEnabled(), true);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   @Test(expectedExceptions = ResourceNotFoundException.class)
+   public void testCreateFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         CreateFirewallRule firewallRuleRequest = CreateFirewallRule.builder()
+                 .name("jclouds-fw-rule_group-52-e8b_port-22")
+                 .build();
+
+         FirewallRule firewallRule = api.createFirewallRule(firewallRuleRequest);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewallRule() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_rule_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallRule firewallRule = api.getFirewallRule("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_rules/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallRule);
+         assertEquals(firewallRule.getId(), "736b1686-3301-4a3d-9eaf-15e3c2682edc");
+         assertEquals(firewallRule.getTenantId(), "3e00d5716204446c8d3c47a466eec25a");
+         assertEquals(firewallRule.getDescription(), "jclouds test fw rule");
+         assertEquals(firewallRule.getName(), "jclouds-test-org.jclouds.openstack.neutron.v2.extensions.fwaasapilivetest-fw-rule-22");
+         assertEquals(firewallRule.getAction(), "allow");
+         assertEquals(firewallRule.isEnabled(), true);
+         assertEquals(firewallRule.getIpVersion().version(), 4);
+         assertEquals(firewallRule.isShared(), false);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         FirewallRule firewallRule = api.getFirewallRule("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/fw/firewall_rules/12345");
+
+         /*
+          * Check response
+          */
+         assertNull(firewallRule);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewallRule() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201).setBody(stringFromResource("/firewall_rule_update_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewallRule updateFirewallRule = UpdateFirewallRule.builder()
+                 .build();
+
+         FirewallRule firewallRule = api.updateFirewallRule("12345", updateFirewallRule);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_rules/12345", "/firewall_rule_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(firewallRule);
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testUpdateFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         UpdateFirewallRule updateFirewallRule = UpdateFirewallRule.builder()
+                 .build();
+
+         FirewallRule firewallRule = api.updateFirewallRule("12345", updateFirewallRule);
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/fw/firewall_rules/12345", "/firewall_rule_update_request.json");
+
+         /*
+          * Check response
+          */
+         assertNull(firewallRule);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteFirewallRule() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(201)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         boolean result = api.deleteFirewallRule("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewall_rules/12345");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteFirewallRuleFail() throws IOException, InterruptedException, URISyntaxException {
+      MockWebServer server = mockOpenStackServer();
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
+      server.enqueue(addCommonHeaders(
+              new MockResponse().setResponseCode(404)));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         FWaaSApi api = neutronApi.getFWaaSApi("RegionOne").get();
+
+         boolean result = api.deleteFirewallRule("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/fw/firewall_rules/12345");
+
+         /*
+          * Check response
+          */
+         assertFalse(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
index 38d36fb..e0b6e1c 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
@@ -61,7 +61,7 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
           * Check response
           */
          assertNotNull(extensions);
-         assertEquals(extensions.size(), 17);
+         assertEquals(extensions.size(), 15);
       } finally {
          server.shutdown();
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/extension_list.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/extension_list.json b/apis/openstack-neutron/src/test/resources/extension_list.json
index 9f85e1e..acdd36a 100644
--- a/apis/openstack-neutron/src/test/resources/extension_list.json
+++ b/apis/openstack-neutron/src/test/resources/extension_list.json
@@ -1,140 +1,124 @@
 {
-    "extensions": [
-        {
-            "updated": "2013-01-20T00:00:00-00:00",
-            "name": "Neutron Service Type Management",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
-            "alias": "service-type",
-            "description": "API for retrieving service providers for Neutron advanced services"
-        },
-        {
-            "updated": "2012-10-05T10:00:00-00:00",
-            "name": "security-group",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/securitygroups/api/v2.0",
-            "alias": "security-group",
-            "description": "The security groups extension."
-        },
-        {
-            "updated": "2013-02-07T10:00:00-00:00",
-            "name": "L3 Agent Scheduler",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/l3_agent_scheduler/api/v1.0",
-            "alias": "l3_agent_scheduler",
-            "description": "Schedule routers among l3 agents"
-        },
-        {
-            "updated": "2013-02-07T10:00:00-00:00",
-            "name": "Loadbalancer Agent Scheduler",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/lbaas_agent_scheduler/api/v1.0",
-            "alias": "lbaas_agent_scheduler",
-            "description": "Schedule pools among lbaas agents"
-        },
-        {
-            "updated": "2013-03-28T10:00:00-00:00",
-            "name": "Neutron L3 Configurable external gateway mode",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/ext-gw-mode/api/v1.0",
-            "alias": "ext-gw-mode",
-            "description": "Extension of the router abstraction for specifying whether SNAT should occur on the external gateway"
-        },
-        {
-            "updated": "2014-02-03T10:00:00-00:00",
-            "name": "Port Binding",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/binding/api/v1.0",
-            "alias": "binding",
-            "description": "Expose port bindings of a virtual port to external application"
-        },
-        {
-            "updated": "2012-09-07T10:00:00-00:00",
-            "name": "Provider Network",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/provider/api/v1.0",
-            "alias": "provider",
-            "description": "Expose mapping of virtual networks to physical networks"
-        },
-        {
-            "updated": "2013-02-03T10:00:00-00:00",
-            "name": "agent",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
-            "alias": "agent",
-            "description": "The agent management extension."
-        },
-        {
-            "updated": "2012-07-29T10:00:00-00:00",
-            "name": "Quota management support",
-            "links": [],
-            "namespace": "http://docs.openstack.org/network/ext/quotas-sets/api/v2.0",
-            "alias": "quotas",
-            "description": "Expose functions for quotas management per tenant"
-        },
-        {
-            "updated": "2013-02-07T10:00:00-00:00",
-            "name": "DHCP Agent Scheduler",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/dhcp_agent_scheduler/api/v1.0",
-            "alias": "dhcp_agent_scheduler",
-            "description": "Schedule networks among dhcp agents"
-        },
-        {
-            "updated": "2013-06-27T10:00:00-00:00",
-            "name": "Multi Provider Network",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/multi-provider/api/v1.0",
-            "alias": "multi-provider",
-            "description": "Expose mapping of virtual networks to multiple physical networks"
-        },
-        {
-            "updated": "2013-01-14T10:00:00-00:00",
-            "name": "Neutron external network",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/external_net/api/v1.0",
-            "alias": "external-net",
-            "description": "Adds external network attribute to network resource."
-        },
-        {
-            "updated": "2012-07-20T10:00:00-00:00",
-            "name": "Neutron L3 Router",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/router/api/v1.0",
-            "alias": "router",
-            "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway."
-        },
-        {
-            "updated": "2013-07-23T10:00:00-00:00",
-            "name": "Allowed Address Pairs",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/allowedaddresspairs/api/v2.0",
-            "alias": "allowed-address-pairs",
-            "description": "Provides allowed address pairs"
-        },
-        {
-            "updated": "2013-03-17T12:00:00-00:00",
-            "name": "Neutron Extra DHCP opts",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/extra_dhcp_opt/api/v1.0",
-            "alias": "extra_dhcp_opt",
-            "description": "Extra options configuration for DHCP. For example PXE boot options to DHCP clients can be specified (e.g. tftp-server, server-ip-address, bootfile-name)"
-        },
-        {
-            "updated": "2012-10-07T10:00:00-00:00",
-            "name": "LoadBalancing service",
-            "links": [],
-            "namespace": "http://wiki.openstack.org/neutron/LBaaS/API_1.0",
-            "alias": "lbaas",
-            "description": "Extension for LoadBalancing service"
-        },
-        {
-            "updated": "2013-02-01T10:00:00-00:00",
-            "name": "Neutron Extra Route",
-            "links": [],
-            "namespace": "http://docs.openstack.org/ext/neutron/extraroutes/api/v1.0",
-            "alias": "extraroute",
-            "description": "Extra routes configuration for L3 router"
-        }
-    ]
-}
+  "extensions": [
+    {
+      "updated": "2013-01-20T00:00:00-00:00",
+      "name": "Neutron Service Type Management",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
+      "alias": "service-type",
+      "description": "API for retrieving service providers for Neutron advanced services"
+    },
+    {
+      "updated": "2012-10-05T10:00:00-00:00",
+      "name": "security-group",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/securitygroups/api/v2.0",
+      "alias": "security-group",
+      "description": "The security groups extension."
+    },
+    {
+      "updated": "2013-02-07T10:00:00-00:00",
+      "name": "Loadbalancer Agent Scheduler",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/lbaas_agent_scheduler/api/v1.0",
+      "alias": "lbaas_agent_scheduler",
+      "description": "Schedule pools among lbaas agents"
+    },
+    {
+      "updated": "2013-02-25T10:00:00-00:00",
+      "name": "Firewall service",
+      "links": [],
+      "namespace": "http://wiki.openstack.org/Neutron/FWaaS/API_1.0",
+      "alias": "fwaas",
+      "description": "Extension for Firewall service"
+    },
+    {
+      "updated": "2014-02-03T10:00:00-00:00",
+      "name": "Port Binding",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/binding/api/v1.0",
+      "alias": "binding",
+      "description": "Expose port bindings of a virtual port to external application"
+    },
+    {
+      "updated": "2012-07-29T10:00:00-00:00",
+      "name": "Quota management support",
+      "links": [],
+      "namespace": "http://docs.openstack.org/network/ext/quotas-sets/api/v2.0",
+      "alias": "quotas",
+      "description": "Expose functions for quotas management per tenant"
+    },
+    {
+      "updated": "2014-01-01T10:00:00-00:00",
+      "name": "Nuage security-group",
+      "links": [],
+      "namespace": "http://nuagenetworks.net/ext/secgroup/api/v1.0",
+      "alias": "nuage-security-group",
+      "description": "Nuage security-group"
+    },
+    {
+      "updated": "2014-01-01T10:00:00-00:00",
+      "name": "Nuage router",
+      "links": [],
+      "namespace": "http://nuagenetworks.net/ext/routers/api/v1.0",
+      "alias": "nuage-router",
+      "description": "Nuage Router"
+    },
+    {
+      "updated": "2013-01-14T10:00:00-00:00",
+      "name": "Neutron external network",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/neutron/external_net/api/v1.0",
+      "alias": "external-net",
+      "description": "Adds external network attribute to network resource."
+    },
+    {
+      "updated": "2012-07-20T10:00:00-00:00",
+      "name": "Neutron L3 Router",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/neutron/router/api/v1.0",
+      "alias": "router",
+      "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway."
+    },
+    {
+      "updated": "2014-01-01T10:00:00-00:00",
+      "name": "Nuage subnet",
+      "links": [],
+      "namespace": "http://nuagenetworks.net/ext/subnets/api/v1.0",
+      "alias": "nuage-subnet",
+      "description": "Nuage subnet"
+    },
+    {
+      "updated": "2013-05-29T10:00:00-00:00",
+      "name": "VPN service",
+      "links": [],
+      "namespace": "https://wiki.openstack.org/Neutron/VPNaaS",
+      "alias": "vpnaas",
+      "description": "Extension for VPN service"
+    },
+    {
+      "updated": "2014-01-01T10:00:00-00:00",
+      "name": "NetPartition",
+      "links": [],
+      "namespace": "http://nuagenetworks.net/ext/net_partition/api/v1.0",
+      "alias": "net-partition",
+      "description": "NetPartition"
+    },
+    {
+      "updated": "2012-10-07T10:00:00-00:00",
+      "name": "LoadBalancing service",
+      "links": [],
+      "namespace": "http://wiki.openstack.org/neutron/LBaaS/API_1.0",
+      "alias": "lbaas",
+      "description": "Extension for LoadBalancing service"
+    },
+    {
+      "updated": "2013-02-01T10:00:00-00:00",
+      "name": "Neutron Extra Route",
+      "links": [],
+      "namespace": "http://docs.openstack.org/ext/neutron/extraroutes/api/v1.0",
+      "alias": "extraroute",
+      "description": "Extra routes configuration for L3 router"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_create_request.json b/apis/openstack-neutron/src/test/resources/firewall_create_request.json
new file mode 100644
index 0000000..7a7a5e7
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_create_request.json
@@ -0,0 +1,6 @@
+{
+  "firewall": {
+    "admin_state_up": true,
+    "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_create_response.json b/apis/openstack-neutron/src/test/resources/firewall_create_response.json
new file mode 100644
index 0000000..0433a76
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_create_response.json
@@ -0,0 +1,11 @@
+{
+  "firewall": {
+    "admin_state_up": true,
+    "description": "",
+    "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c",
+    "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977",
+    "name": "",
+    "status": "PENDING_CREATE",
+    "tenant_id": "45977fa2dbd7482098dd68d0d8970117"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_get_response.json b/apis/openstack-neutron/src/test/resources/firewall_get_response.json
new file mode 100644
index 0000000..14425e1
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_get_response.json
@@ -0,0 +1,11 @@
+{
+  "firewall": {
+    "admin_state_up": true,
+    "description": "",
+    "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c",
+    "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977",
+    "name": "",
+    "status": "ACTIVE",
+    "tenant_id": "45977fa2dbd7482098dd68d0d8970117"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_list_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_list_response.json b/apis/openstack-neutron/src/test/resources/firewall_list_response.json
new file mode 100644
index 0000000..9881360
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_list_response.json
@@ -0,0 +1,13 @@
+{
+  "firewalls": [
+    {
+      "status": "ACTIVE",
+      "name": "fw",
+      "admin_state_up": true,
+      "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+      "firewall_policy_id": "5083ef0d-7ad2-4305-acd8-bd036c332e1e",
+      "id": "5eb708e7-3856-449a-99ac-fec27cd745f9",
+      "description": ""
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_create_request.json b/apis/openstack-neutron/src/test/resources/firewall_policy_create_request.json
new file mode 100644
index 0000000..d5d417d
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_create_request.json
@@ -0,0 +1,8 @@
+{
+  "firewall_policy": {
+    "name": "jclouds-fw-policy_group-52-e8b",
+    "shared": false,
+    "firewall_rules": [],
+    "audited": false
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_create_response.json b/apis/openstack-neutron/src/test/resources/firewall_policy_create_response.json
new file mode 100644
index 0000000..8e3dd37
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_create_response.json
@@ -0,0 +1,11 @@
+{
+  "firewall_policy": {
+    "name": "jclouds-fw-policy_group-52-e8b",
+    "firewall_rules": [],
+    "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+    "audited": false,
+    "shared": false,
+    "id": "12971159-95cf-4ca1-9baa-c82298ae0918",
+    "description": ""
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_get_response.json b/apis/openstack-neutron/src/test/resources/firewall_policy_get_response.json
new file mode 100644
index 0000000..9ee2a17
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_get_response.json
@@ -0,0 +1,14 @@
+{
+  "firewall_policy": {
+    "name": "myfirewallrule",
+    "firewall_rules": [
+      "3e5a4e53-4390-4b22-baea-75529dbeafb8",
+      "4e58f636-1ef1-4e8e-b3ad-5f7f9d1f9f23"
+    ],
+    "tenant_id": "e1defcdd823741c89afd5824040deed2",
+    "audited": false,
+    "shared": true,
+    "id": "18d2f4e5-afdd-4c10-87ea-d35f38faf98c",
+    "description": ""
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_request.json b/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_request.json
new file mode 100644
index 0000000..eba7d52
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_request.json
@@ -0,0 +1 @@
+{"firewall_rule_id": "59585143-e819-48c9-944d-f03e0f049dba"}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_response.json b/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_response.json
new file mode 100644
index 0000000..9f58f20
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_insert_rule_response.json
@@ -0,0 +1,10 @@
+{
+  "name": "jclouds-fw-policy_group-52-e8b",
+  "firewall_rules": ["59585143-e819-48c9-944d-f03e0f049dba"],
+  "shared": false,
+  "audited": false,
+  "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+  "id": "12971159-95cf-4ca1-9baa-c82298ae0918",
+  "firewall_list": [],
+  "description": ""
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_policy_list_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_policy_list_response.json b/apis/openstack-neutron/src/test/resources/firewall_policy_list_response.json
new file mode 100644
index 0000000..ecf2e3d
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_policy_list_response.json
@@ -0,0 +1,255 @@
+{
+  "firewall_policies": [
+    {
+      "name": "myfirewallrule",
+      "firewall_rules": [
+        "3e5a4e53-4390-4b22-baea-75529dbeafb8",
+        "4e58f636-1ef1-4e8e-b3ad-5f7f9d1f9f23"
+      ],
+      "tenant_id": "e1defcdd823741c89afd5824040deed2",
+      "audited": false,
+      "shared": true,
+      "id": "18d2f4e5-afdd-4c10-87ea-d35f38faf98c",
+      "description": ""
+    },
+    {
+      "name": "Policy SBT",
+      "firewall_rules": [],
+      "tenant_id": "ba6ba03f266e4ccfb07d2372bc8d68a2",
+      "audited": false,
+      "shared": true,
+      "id": "31d6368b-3d8b-49a1-af5d-901283223801",
+      "description": ""
+    },
+    {
+      "name": "FW-POLICY-DEMO",
+      "firewall_rules": [
+        "e434b562-c33f-4d64-84da-adfaaa94630e",
+        "03a3d9d7-eb92-49c4-83c1-a479ec37d87b",
+        "1086d52d-2323-434d-a1e8-ade5791fb5ac",
+        "7240cdf3-a8da-4006-90e2-9191d998fee0",
+        "eec4cdbe-859f-45c5-9acb-1935056af1e4",
+        "a18ee08e-9d5d-4c9e-9372-c4b8f71c6c75",
+        "7aefe7f9-01f6-4387-900e-177684e3c59d",
+        "b6017900-7811-4428-9940-a02033042c88",
+        "94129848-4eb8-4c8e-9164-cd8ee60faa49",
+        "e0649a2b-a327-45ed-a3a0-f068cb3fcf37",
+        "53f5bf0a-05e3-4a30-800b-611151a9685d",
+        "e07558b1-5e18-4d2d-a79b-0a95f36d1715",
+        "43931a28-513d-4cbb-80fa-464bf49df65f",
+        "79572a32-fda4-4f2c-bdad-bb11a08af9ed"
+      ],
+      "tenant_id": "cfb5b69938dc49f19f192eabf62a32e6",
+      "audited": false,
+      "shared": true,
+      "id": "4c0743e4-0361-4ed0-a6ce-2a8959d978a9",
+      "description": ""
+    },
+    {
+      "name": "fw-policy",
+      "firewall_rules": [
+        "3c51d308-1c5c-4776-b4ac-6d3c9ebd5685",
+        "e614f597-4eb2-457a-a102-5b9ad2beba42",
+        "e908239c-2b40-4afa-8ec3-9c4b437367da",
+        "1ae9b906-9250-4f8c-a262-b0fe6e7b1680",
+        "daa2ee3c-760c-4c67-81a8-e61a310366f1",
+        "1bd356b4-d0b0-4a86-a5a3-3245ac838960",
+        "e72605a4-f866-4cfe-9962-6577c4a87a4d"
+      ],
+      "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+      "audited": false,
+      "shared": false,
+      "id": "5083ef0d-7ad2-4305-acd8-bd036c332e1e",
+      "description": ""
+    },
+    {
+      "name": "PolicyOfTheVoid",
+      "firewall_rules": [],
+      "tenant_id": "85c79b517ef6431881c9477d2227be5f",
+      "audited": true,
+      "shared": true,
+      "id": "60779a72-21bd-4b97-a587-cd5fb8b8e7c0",
+      "description": ""
+    },
+    {
+      "name": "Policy",
+      "firewall_rules": [
+        "2b6646ea-a0d8-4982-b3e2-e14ad2743428",
+        "21a42289-b05c-4271-9f06-1172b88c8465",
+        "7b998345-1660-428f-969d-bfcdb4c0dbaf",
+        "8996fcfd-b88d-4b68-bff7-5fb07fc0088a",
+        "55b96a08-f868-45fd-9386-1fd831b7b63b",
+        "df5aaeb6-50d7-4344-9f00-f973d5e28185",
+        "bc23bcb1-1a81-4658-b72d-485da3af8a8a"
+      ],
+      "tenant_id": "ccef3550ec724607a8024977b3b4e410",
+      "audited": false,
+      "shared": true,
+      "id": "63337440-d0ad-4a3c-9e26-777a6e360119",
+      "description": "Ping + SSH"
+    },
+    {
+      "name": "allow_all",
+      "firewall_rules": ["d52ea23a-9911-44ef-815b-f3b4b6b0df64"],
+      "tenant_id": "53b1ed26b8874556bc7141f9482fd789",
+      "audited": false,
+      "shared": true,
+      "id": "6e3d5d6d-1356-43eb-91ef-d6f70888632d",
+      "description": "Allow All"
+    },
+    {
+      "name": "Politique Production",
+      "firewall_rules": [
+        "a6f58b76-5c90-4530-908c-cc7dbd945a4b",
+        "3521380b-624c-42a1-8415-992b52a9dfec",
+        "fbcf3060-bd0c-4cd9-b4b1-cf3c76b7fe7d",
+        "45aecaba-a659-490a-8f12-92adfda79c15",
+        "5cfc4e09-a765-4f4e-93d5-8a9650f051f8",
+        "304ff502-eb6f-46b5-8110-c75a483c23e0",
+        "1662f0bb-a9a6-415a-b1a7-19ba113d7a52",
+        "8bbd0490-452c-4bee-a70f-213558e0bc65",
+        "e39fcf85-bea2-49fa-8a8e-c69c5f2e29ae",
+        "1bbdd6ba-9ae8-4cd3-8815-ef992c56cb63",
+        "100e638c-77cf-4f1e-8194-5a26171f645a",
+        "91b8316c-96ae-41da-9c14-42e1f778c0a8"
+      ],
+      "tenant_id": "13a12b25d3cf4275905e2a6b9878a619",
+      "audited": false,
+      "shared": true,
+      "id": "89d7ef67-4cb8-485f-83ac-14085e616137",
+      "description": ""
+    },
+    {
+      "name": "any-shared",
+      "firewall_rules": ["b35ab1c6-309d-4690-b16c-0343a535651c"],
+      "tenant_id": "3fdcdc95fc88431597700dbb20be37c6",
+      "audited": false,
+      "shared": true,
+      "id": "a0a3a1b1-d985-4507-b785-311f8e981fa6",
+      "description": ""
+    },
+    {
+      "name": "production",
+      "firewall_rules": ["5dbe3498-b230-4b34-9915-7bcc22bed99c"],
+      "tenant_id": "94eb5f2fd9ed471992e2c5c2313b0703",
+      "audited": false,
+      "shared": true,
+      "id": "a23d0af2-3124-49cf-ae04-02c175eda549",
+      "description": "production"
+    },
+    {
+      "name": "PolProdStdDmz1",
+      "firewall_rules": [
+        "3178c9f6-f017-462b-b93f-715e11247c30",
+        "2b775a98-9813-48e0-8f32-a04dfc176872",
+        "a5a7e990-fbe4-429b-a55c-35df087b6f80",
+        "6ca67373-b89e-492d-94c6-1c40765800ce",
+        "bf93dda9-6f42-42cf-852f-689b6facf5b4",
+        "e3bd91ee-1337-4d73-9484-836a0fb5869b"
+      ],
+      "tenant_id": "3345a933109049779647ff02ca498f3a",
+      "audited": false,
+      "shared": true,
+      "id": "afc19c5c-d136-4dbf-b614-c0b784a4f68d",
+      "description": ""
+    },
+    {
+      "name": "ALL",
+      "firewall_rules": [
+        "43bfdc83-5f76-407d-b851-5803d4e23f0b",
+        "316965f2-4242-4c56-8e34-22f4ff1992a3",
+        "1fb6cbde-4446-4bef-9eac-cc6b76afc565",
+        "a3da3767-608d-493d-b15a-1793d66891c8",
+        "6f58413b-3667-41f6-93b4-eef813632aee",
+        "a28bdf75-894f-4af5-9063-e2fcee4cb01d",
+        "0ed005c7-2d89-43a1-8aaf-714d44858173",
+        "710e513c-df2b-4c78-8572-bd9701f5b108",
+        "016922c5-7810-41cb-ae2c-04bbd87b3b24",
+        "22d6ade0-0f0d-473a-9cec-4b5ba22db8e4",
+        "7ed0e62c-848d-4e4e-baa7-eea7e9c3c3ec",
+        "05a34244-0922-4a6d-b551-c95c500f2194",
+        "9d40ac55-0802-4590-aa89-8199dab7038f",
+        "3d1f3c70-44e1-4c6e-9253-53421976d707",
+        "4d22985f-ad50-459d-af00-eea902900e41",
+        "dd16596d-065d-4a3a-bb75-054ab7acf54f",
+        "33228008-6dba-4270-9c55-3d8752472795",
+        "46ea5a1c-8b4b-4eaf-b9c2-767efa8bc2ae",
+        "3b3c3136-d914-46ae-ace3-726f638ed1d5",
+        "2c3f8fce-3d05-405a-8249-1d3843b8a62d",
+        "23106a5d-556e-4e78-af13-1d0c9280b2e2",
+        "40e342d6-86fc-4205-b306-e9dcd816b958",
+        "bf290614-8ab0-487f-811f-4474a51a40d3",
+        "08b91c69-310d-4d55-bea1-ffe0d95e150b",
+        "8e9509ff-93cb-442d-92c6-1cfb79b9243c",
+        "019bd1b9-2f2b-4cfa-b645-6eb779d4622e",
+        "4f7fd6e2-7ac5-4a46-8e3d-c4dcdde8a3f0",
+        "4fd8fc8b-c449-457d-8526-6ba23f6f299d",
+        "e2a96758-70ba-499c-bd97-6d8ee55610ed",
+        "ade798f5-862a-442b-8168-f39a06030535"
+      ],
+      "tenant_id": "b6e174b62a964db7bf897a38b92fc217",
+      "audited": false,
+      "shared": true,
+      "id": "e0f918c2-7a10-45d1-a5f9-9b2a2026bf3e",
+      "description": ""
+    },
+    {
+      "name": "Pre-Prod",
+      "firewall_rules": [
+        "fd124f42-f064-4259-b840-1ca05203c6b7",
+        "f03bd950-6c56-4f5e-a307-45967078f507"
+      ],
+      "tenant_id": "80cf934d6ffb4ef5b244f1c512ad1e61",
+      "audited": false,
+      "shared": true,
+      "id": "e2a5fb51-698c-4898-87e8-f1eee6b50919",
+      "description": ""
+    },
+    {
+      "name": "ports VM ouverts",
+      "firewall_rules": ["c5535724-8ed8-4e50-933a-17e37b06994d"],
+      "tenant_id": "66165eac36f846099ab3f667f0c05229",
+      "audited": false,
+      "shared": true,
+      "id": "e5b8e392-1e70-4948-a6a4-b3726b528059",
+      "description": "ouverture de tous les ports du projet stagiaires"
+    },
+    {
+      "name": "www",
+      "firewall_rules": [
+        "75452b36-268e-4e75-aaf4-f0e7ed50bc97",
+        "c9e77ca0-1bc8-497d-904d-948107873dc6",
+        "67004fb6-9111-441f-a3c1-b94b08bbd496",
+        "80965cc0-2d60-48e8-8fe9-78be016f10b6",
+        "41c72886-f39d-450e-b4b5-818ebddf17d5",
+        "c854fab5-bdaf-4a86-9359-78de93e5df01",
+        "350288f9-4aea-4e13-b434-91141e5e5960",
+        "03d2a6ad-633f-431a-8463-4370d06a22c8"
+      ],
+      "tenant_id": "9145d91459d248b1b02fdaca97c6a75d",
+      "audited": false,
+      "shared": true,
+      "id": "f2b08c1e-aa81-4668-8ae1-1401bcb0576c",
+      "description": ""
+    },
+    {
+      "name": "fw-policy",
+      "firewall_rules": [
+        "32ea5280-b601-4531-903f-ddef6dd1b733",
+        "f6f39ac3-0bda-47ff-b8b9-f089a5440e19",
+        "dad47cfb-893f-4d7c-8e40-c7a86bcda175",
+        "1d089edc-ae35-4c60-b6af-79b69e2f3247",
+        "eac689d5-ce70-4d4a-bf43-5d1416ebb770",
+        "3c1318de-e095-4870-a2ec-3091fee81683",
+        "beb6249b-5e98-4c25-a356-d45f5b0cae29",
+        "b4b2362e-0d16-42ef-b8e4-9de56ca00c84",
+        "72c159d0-4777-4468-9136-543ba42d18f0"
+      ],
+      "tenant_id": "94eb5f2fd9ed471992e2c5c2313b0703",
+      "audited": false,
+      "shared": true,
+      "id": "f66e862e-9982-465e-a5af-79d61ca9c6eb",
+      "description": ""
+    }
+  ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_rule_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_rule_create_request.json b/apis/openstack-neutron/src/test/resources/firewall_rule_create_request.json
new file mode 100644
index 0000000..5dcacfe
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_rule_create_request.json
@@ -0,0 +1,12 @@
+{
+  "firewall_rule": {
+    "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+    "name": "jclouds-fw-rule_group-52-e8b_port-22",
+    "shared": false,
+    "protocol": "tcp",
+    "destination_ip_address": "192.168.0.117",
+    "destination_port": "22",
+    "action": "allow",
+    "enabled": true
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_rule_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_rule_create_response.json b/apis/openstack-neutron/src/test/resources/firewall_rule_create_response.json
new file mode 100644
index 0000000..eb835f2
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_rule_create_response.json
@@ -0,0 +1,19 @@
+{
+  "firewall_rule": {
+    "protocol": "tcp",
+    "description": "",
+    "source_port": null,
+    "source_ip_address": null,
+    "destination_ip_address": "192.168.0.117",
+    "firewall_policy_id": null,
+    "position": null,
+    "destination_port": "22",
+    "id": "59585143-e819-48c9-944d-f03e0f049dba",
+    "name": "jclouds-fw-rule_group-52-e8b_port-22",
+    "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+    "enabled": true,
+    "action": "allow",
+    "ip_version": 4,
+    "shared": false
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_rule_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_rule_get_response.json b/apis/openstack-neutron/src/test/resources/firewall_rule_get_response.json
new file mode 100644
index 0000000..860d6b1
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_rule_get_response.json
@@ -0,0 +1,19 @@
+{
+  "firewall_rule": {
+    "protocol": "tcp",
+    "description": "jclouds test fw rule",
+    "source_port": null,
+    "source_ip_address": null,
+    "destination_ip_address": "192.168.0.1",
+    "firewall_policy_id": null,
+    "position": null,
+    "destination_port": "22",
+    "id": "736b1686-3301-4a3d-9eaf-15e3c2682edc",
+    "name": "jclouds-test-org.jclouds.openstack.neutron.v2.extensions.fwaasapilivetest-fw-rule-22",
+    "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+    "enabled": true,
+    "action": "allow",
+    "ip_version": 4,
+    "shared": false
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_rule_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_rule_update_request.json b/apis/openstack-neutron/src/test/resources/firewall_rule_update_request.json
new file mode 100644
index 0000000..9850b8b
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_rule_update_request.json
@@ -0,0 +1,6 @@
+{
+  "firewall_rule": {
+    "shared": false,
+    "enabled": false
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_rule_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_rule_update_response.json b/apis/openstack-neutron/src/test/resources/firewall_rule_update_response.json
new file mode 100644
index 0000000..0ba9c1f
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_rule_update_response.json
@@ -0,0 +1,19 @@
+{
+  "firewall_rule": {
+    "protocol": "tcp",
+    "description": "jclouds test fw rule",
+    "source_port": null,
+    "source_ip_address": null,
+    "destination_ip_address": "192.168.0.1",
+    "firewall_policy_id": null,
+    "position": null,
+    "destination_port": "22",
+    "id": "736b1686-3301-4a3d-9eaf-15e3c2682edc",
+    "name": "jclouds-test-org.jclouds.openstack.neutron.v2.extensions.fwaasapilivetest-fw-rule-22-updated",
+    "tenant_id": "3e00d5716204446c8d3c47a466eec25a",
+    "enabled": false,
+    "action": "allow",
+    "ip_version": 4,
+    "shared": false
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_update_request.json b/apis/openstack-neutron/src/test/resources/firewall_update_request.json
new file mode 100644
index 0000000..58021f7
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_update_request.json
@@ -0,0 +1,5 @@
+{
+  "firewall": {
+    "admin_state_up": false
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/firewall_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/firewall_update_response.json b/apis/openstack-neutron/src/test/resources/firewall_update_response.json
new file mode 100644
index 0000000..cc9635f
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/firewall_update_response.json
@@ -0,0 +1,11 @@
+{
+  "firewall": {
+    "admin_state_up": false,
+    "description": "",
+    "firewall_policy_id": "c69933c1-b472-44f9-8226-30dc4ffd454c",
+    "id": "3b0ef8f4-82c7-44d4-a4fb-6177f9a21977",
+    "name": "",
+    "status": "PENDING_UPDATE",
+    "tenant_id": "45977fa2dbd7482098dd68d0d8970117"
+  }
+}
\ No newline at end of file


[22/50] [abbrv] jclouds git commit: Normalize deprecation messages to make them easier to find

Posted by na...@apache.org.
Normalize deprecation messages to make them easier to find


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b02114bd
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b02114bd
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b02114bd

Branch: refs/heads/master
Commit: b02114bdaf5cb96d16f95c85a573489027ff0aa0
Parents: cc6ff3b
Author: Everett Toews <ev...@apache.org>
Authored: Wed Jan 21 10:34:48 2015 -0600
Committer: Everett Toews <ev...@apache.org>
Committed: Wed Jan 21 11:02:14 2015 -0600

----------------------------------------------------------------------
 .../jclouds/openstack/neutron/v2_0/NeutronApi.java   | 15 +++++++--------
 .../openstack/neutron/v2_0/NeutronApiMetadata.java   |  1 +
 .../openstack/neutron/v2_0/extensions/RouterApi.java |  4 ++--
 .../openstack/neutron/v2_0/features/NetworkApi.java  |  3 ++-
 .../openstack/neutron/v2_0/features/PortApi.java     |  3 ++-
 .../openstack/neutron/v2_0/features/SubnetApi.java   |  3 ++-
 6 files changed, 16 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
index a5ff027..d39bc3c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
@@ -39,8 +39,7 @@ import com.google.inject.Provides;
  * Provides access to the OpenStack Networking (Neutron) v2 API.
  * <p/>
  *
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.NeutronApi} as this
- *             interface will be removed in jclouds 3.0.
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.NeutronApi} instead. To be removed in jclouds 2.0.
  */
 @Deprecated
 public interface NeutronApi extends Closeable {
@@ -84,7 +83,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * @return the Zone codes configured
-    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getConfiguredRegions()} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Provides
@@ -93,7 +92,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * Provides access to Extension features.
-    * @deprecated Please use {@link #getExtensionApi(String)} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getExtensionApi(String)} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Delegate
@@ -102,7 +101,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * Provides access to Network features.
-    * @deprecated Please use {@link #getNetworkApi(String)} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getNetworkApi(String)} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Delegate
@@ -110,7 +109,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * Provides access to Subnet features.
-    * @deprecated Please use {@link #getSubnetApi(String)} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getSubnetApi(String)} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Delegate
@@ -118,7 +117,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * Provides access to Port features.
-    * @deprecated Please use {@link #getPortApi(String)} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getPortApi(String)} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Delegate
@@ -126,7 +125,7 @@ public interface NeutronApi extends Closeable {
 
    /**
     * Provides access to Router features.
-    * @deprecated Please use {@link #getRouterApi(String)} as this method will be removed in jclouds 3.0.
+    * @deprecated Please use {@link #getRouterApi(String)} instead. To be removed in jclouds 2.0.
     */
    @Deprecated
    @Delegate

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
index 8d5e51c..f333647 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
@@ -38,6 +38,7 @@ import com.google.inject.Module;
 
 /**
  * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
+ * @deprecated To be removed in jclouds 2.0.
  */
 @Deprecated
 @AutoService(ApiMetadata.class)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
index dca4427..3da0e34 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
@@ -56,8 +56,8 @@ import org.jclouds.rest.annotations.Transform;
  * A logical entity for forwarding packets across internal subnets and NATting them on external
  * networks through an appropriate external gateway.
  *
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.extensions.RouterApi} as this
- *             interface will be removed in jclouds 3.0.
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.extensions.RouterApi} instead.
+ *             To be removed in jclouds 2.0.
  */
 @Deprecated
 @Path("/v2.0/routers")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
index c2b4aa5..dc7b005 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
@@ -59,7 +59,8 @@ import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginat
  *
  * @see <a href=
  *      "http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a>
- * @deprecated Use v2 instead of v2_0
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.NetworkApi} instead.
+ *             To be removed in jclouds 2.0.
  */
 @Deprecated
 @Path("/v2.0/networks")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
index 7390131..4aef5cd 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
@@ -62,7 +62,8 @@ import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginat
 
  * @see <a href=
  *      "http://docs.openstack.org/api/openstack-network/2.0/content/Ports.html">api doc</a>
- * @deprecated Use v2 instead of v2_0
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.PortApi} instead.
+ *             To be removed in jclouds 2.0.
  */
 @Deprecated
 @Path("/v2.0/ports")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/b02114bd/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
index 5c2acc5..24ce4b3 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
@@ -58,7 +58,8 @@ import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginat
 
  * @see <a href=
  *      "http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
- * @deprecated Use v2 instead of v2_0
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.SubnetApi} instead.
+ *             To be removed in jclouds 2.0.
  */
 @Deprecated
 @Path("/v2.0/subnets")


[31/50] [abbrv] jclouds git commit: Remove deprecated neutron code

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
deleted file mode 100644
index 5096ed9..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Router.java
+++ /dev/null
@@ -1,149 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-/**
- * A Neutron Router
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/router_ext_concepts.html">api doc</a>
- */
-public class Router extends ReferenceWithName {
-
-   private final Boolean adminStateUp;
-   private final State state;
-   private final ExternalGatewayInfo externalGatewayInfo;
-
-   @ConstructorProperties({
-      "id", "tenant_id", "name", "admin_state_up", "status", "external_gateway_info"
-   })
-   protected Router(String id, String tenantId, String name, Boolean adminStateUp, State state, ExternalGatewayInfo externalGatewayInfo) {
-      super(id, tenantId, name);
-      this.adminStateUp = adminStateUp;
-      this.state = state;
-      this.externalGatewayInfo = externalGatewayInfo;
-   }
-
-   /**
-    * @return the administrative state of the router
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the current state of the router
-    */
-   public State getState() {
-      return state;
-   }
-
-   /**
-    * @return the information on external gateway for the router
-    */
-   public ExternalGatewayInfo getExternalGatewayInfo() {
-      return externalGatewayInfo;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(super.hashCode(), adminStateUp, state, externalGatewayInfo);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Router that = Router.class.cast(obj);
-      return super.equals(obj)
-         && Objects.equal(this.adminStateUp, that.adminStateUp)
-         && Objects.equal(this.state, that.state)
-         && Objects.equal(this.externalGatewayInfo, that.externalGatewayInfo);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return super.string()
-         .add("adminStateUp", adminStateUp).add("state", state).add("externalGatewayInfo", externalGatewayInfo != null ? externalGatewayInfo.toString() : "");
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromRouter(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> extends ReferenceWithName.Builder<T> {
-
-      protected Boolean adminStateUp;
-      protected State state;
-      protected ExternalGatewayInfo externalGatewayInfo;
-
-      /**
-       * @see Router#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see Router#getState()
-       */
-      public T state(State state) {
-         this.state = state;
-         return self();
-      }
-
-      /**
-       * @see Router#getExternalGatewayInfo()
-       */
-      public T externalGatewayInfo(ExternalGatewayInfo externalGatewayInfo) {
-         this.externalGatewayInfo = externalGatewayInfo;
-         return self();
-      }
-
-      public Router build() {
-         return new Router(id, tenantId, name, adminStateUp, state, externalGatewayInfo);
-      }
-
-      public T fromRouter(Router in) {
-         return super.fromReference(in)
-            .adminStateUp(in.getAdminStateUp())
-            .state(in.getState())
-            .externalGatewayInfo(in.getExternalGatewayInfo());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
deleted file mode 100644
index f1a9c70..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/RouterInterface.java
+++ /dev/null
@@ -1,125 +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_0.domain;
-
-import com.google.common.base.Objects;
-
-import java.beans.ConstructorProperties;
-
-/**
- * A Neutron Router Interface
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/router_add_interface.html">api doc</a>
- */
-public class RouterInterface {
-
-   private final String subnetId;
-   private final String portId;
-
-   @ConstructorProperties({
-      "subnet_id", "port_id"
-   })
-   protected RouterInterface(String subnetId, String portId) {
-      this.subnetId = subnetId;
-      this.portId = portId;
-   }
-
-   /**
-    * @return the id of the subnet this router interface is associated with
-    */
-   public String getSubnetId() {
-      return subnetId;
-   }
-
-   /**
-    * @return the id of the port this router interface is associated with
-    */
-   public String getPortId() {
-      return portId;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(subnetId, portId);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      RouterInterface that = RouterInterface.class.cast(obj);
-      return Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.portId, that.portId);
-   }
-
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this)
-         .add("subnetId", subnetId).add("portId", portId);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder toBuilder() {
-      return new ConcreteBuilder().fromRouterInterface(this);
-   }
-
-   public abstract static class Builder {
-      protected abstract Builder self();
-
-      protected String subnetId;
-      protected String portId;
-
-      /**
-       * @see RouterInterface#getSubnetId()
-       */
-      public Builder subnetId(String subnetId) {
-         this.subnetId = subnetId;
-         return self();
-      }
-
-      /**
-       * @see RouterInterface#getPortId()
-       */
-      public Builder portId(String portId) {
-         this.portId = portId;
-         return self();
-      }
-
-      public RouterInterface build() {
-         return new RouterInterface(subnetId, portId);
-      }
-
-      public Builder fromRouterInterface(RouterInterface in) {
-         return this.subnetId(in.getSubnetId()).portId(in.getPortId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/State.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/State.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/State.java
deleted file mode 100644
index e276df8..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/State.java
+++ /dev/null
@@ -1,27 +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_0.domain;
-
-/**
- * The possible state of an entity
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Concepts-d1e369.html">api doc</a>
- */
-public enum State {
-   ACTIVE, DOWN, BUILD, ERROR
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
deleted file mode 100644
index 9faf8bd..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/domain/Subnet.java
+++ /dev/null
@@ -1,264 +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_0.domain;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.collect.ImmutableSet;
-
-import java.beans.ConstructorProperties;
-import java.util.Collection;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * A Neutron subnet
- *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
- */
-public class Subnet extends ReferenceWithName {
-
-   private final String networkId;
-   private final String gatewayIp;
-   private final Integer ipVersion;
-   private final String cidr;
-   private final Set<AllocationPool> allocationPools;
-   private final Boolean enableDhcp;
-   private final Set<String> dnsNameServers;
-   private final Set<HostRoute> hostRoutes;
-
-   @ConstructorProperties({
-      "id", "tenant_id", "name", "network_id", "gateway_ip", "ip_version", "cidr", "allocation_pools", "enable_dhcp", "dns_nameservers", "host_routes"
-   })
-   protected Subnet(String id, String tenantId, String name, String networkId,
-                    String gatewayIp, Integer ipVersion, String cidr, Set<AllocationPool> allocationPools,
-                    Boolean enableDhcp, Set<String> dnsNameServers, Set<HostRoute> hostRoutes) {
-      super(id, tenantId, name);
-      this.networkId = checkNotNull(networkId, "networkId");
-      this.gatewayIp = gatewayIp;
-      this.ipVersion = checkNotNull(ipVersion, "ipVersion");
-      this.cidr = checkNotNull(cidr, "cidr");
-      this.allocationPools = allocationPools != null ? ImmutableSet.copyOf(allocationPools) : ImmutableSet.<AllocationPool>of();
-      this.enableDhcp = enableDhcp;
-      this.dnsNameServers = dnsNameServers != null ? ImmutableSet.copyOf(dnsNameServers) : ImmutableSet.<String>of();
-      this.hostRoutes = hostRoutes != null ? ImmutableSet.copyOf(hostRoutes) : ImmutableSet.<HostRoute>of();
-   }
-
-   /**
-    * @return the id of the network this subnet is associated with
-    */
-   public String getNetworkId() {
-      return networkId;
-   }
-
-   /**
-    * @return the default gateway used by devices in this subnet
-    */
-   public String getGatewayIp() {
-      return gatewayIp;
-   }
-
-   /**
-    * @return the ip version used by this subnet
-    */
-   public Integer getIpVersion() {
-      return ipVersion;
-   }
-
-   /**
-    * @return the cidr representing the IP range for this subnet, based on IP version
-    */
-   public String getCidr() {
-      return cidr;
-   }
-
-   /**
-    * @return the sub-ranges of cidr available for dynamic allocation to ports
-    */
-   public Set<AllocationPool> getAllocationPools() {
-      return allocationPools;
-   }
-
-   /**
-    * @return true if DHCP is enabled for this subnet, false if not.
-    */
-   public Boolean getEnableDhcp() {
-      return enableDhcp;
-   }
-
-   /**
-    * @return the set of DNS name servers used by hosts in this subnet.
-    */
-   public Set<String> getDnsNameServers() {
-      return dnsNameServers;
-   }
-
-   /**
-    * @return the set of routes that should be used by devices with IPs from this subnet
-    */
-   public Set<HostRoute> getHostRoutes() {
-      return hostRoutes;
-   }
-
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(super.hashCode(), networkId, gatewayIp, ipVersion, cidr,
-         allocationPools, enableDhcp, dnsNameServers, hostRoutes);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj) return true;
-      if (obj == null || getClass() != obj.getClass()) return false;
-      Subnet that = Subnet.class.cast(obj);
-      return super.equals(obj)
-         && Objects.equal(this.networkId, that.networkId)
-         && Objects.equal(this.gatewayIp, that.gatewayIp)
-         && Objects.equal(this.ipVersion, that.ipVersion)
-         && Objects.equal(this.cidr, that.cidr)
-         && Objects.equal(this.allocationPools, that.allocationPools)
-         && Objects.equal(this.enableDhcp, that.enableDhcp)
-         && Objects.equal(this.dnsNameServers, that.dnsNameServers)
-         && Objects.equal(this.hostRoutes, that.hostRoutes);
-   }
-
-   protected ToStringHelper string() {
-      return super.string()
-         .add("networkId", networkId)
-         .add("gatewayIp", gatewayIp)
-         .add("ipVersion", ipVersion)
-         .add("cidr", cidr)
-         .add("enableDHCP", enableDhcp)
-         .add("allocationPools", allocationPools)
-         .add("dnsNameServers", dnsNameServers)
-         .add("hostRoutes", hostRoutes);
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromSubnet(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> extends ReferenceWithName.Builder<T> {
-      protected String networkId;
-      protected String gatewayIp;
-      protected Integer ipVersion;
-      protected String cidr;
-      protected Set<AllocationPool> allocationPools;
-      protected Boolean enableDhcp;
-      protected Set<String> dnsNameServers;
-      protected Set<HostRoute> hostRoutes;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getNetworkId()
-       */
-      public T networkId(String networkId) {
-         this.networkId = networkId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getGatewayIp()
-       */
-      public T gatewayIp(String gatewayIp) {
-         this.gatewayIp = gatewayIp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getIpVersion()
-       */
-      public T ipVersion(Integer ipVersion) {
-         this.ipVersion = ipVersion;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getCidr()
-       */
-      public T cidr(String cidr) {
-         this.cidr = cidr;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getAllocationPools()
-       */
-      public T allocationPools(Collection<AllocationPool> allocationPools) {
-         this.allocationPools = ImmutableSet.copyOf(allocationPools);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getEnableDhcp()
-       */
-      public T enableDhcp(Boolean enableDhcp) {
-         this.enableDhcp = enableDhcp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getDnsNameServers()
-       */
-      public T dnsNameServers(Collection<String> dnsNameServers) {
-         this.dnsNameServers = ImmutableSet.copyOf(dnsNameServers);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.domain.Subnet#getHostRoutes()
-       */
-      public T hostRoutes(Collection<HostRoute> hostRoutes) {
-         this.hostRoutes = ImmutableSet.copyOf(hostRoutes);
-         return self();
-      }
-
-      public Subnet build() {
-         return new Subnet(id, tenantId, name, networkId, gatewayIp, ipVersion, cidr, allocationPools, enableDhcp, dnsNameServers, hostRoutes);
-      }
-
-      public T fromSubnet(Subnet in) {
-         return super.fromReference(in)
-               .networkId(in.getNetworkId())
-               .gatewayIp(in.getGatewayIp())
-               .ipVersion(in.getIpVersion())
-               .cidr(in.getCidr())
-               .allocationPools(in.getAllocationPools())
-               .enableDhcp(in.getEnableDhcp())
-               .dnsNameServers(in.getDnsNameServers())
-               .hostRoutes(in.getHostRoutes());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
deleted file mode 100644
index 3da0e34..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
+++ /dev/null
@@ -1,215 +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_0.extensions;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Router;
-import org.jclouds.openstack.neutron.v2_0.domain.RouterInterface;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseRouterDetails;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseRouters;
-import org.jclouds.openstack.neutron.v2_0.options.CreateRouterOptions;
-import org.jclouds.openstack.neutron.v2_0.options.EmptyOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateRouterOptions;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Transform;
-
-/**
- * Provides access to Router operations for the OpenStack Networking (Neutron) v2 API.
- * <p/>
- * A logical entity for forwarding packets across internal subnets and NATting them on external
- * networks through an appropriate external gateway.
- *
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.extensions.RouterApi} instead.
- *             To be removed in jclouds 2.0.
- */
-@Deprecated
-@Path("/v2.0/routers")
-@RequestFilters(AuthenticateRequest.class)
-@Consumes(MediaType.APPLICATION_JSON)
-public interface RouterApi {
-
-   /**
-    * Returns the list of all routers currently defined in Neutron for the current tenant. The list provides the unique
-    * identifier of each router configured for the tenant
-    *
-    * @return the list of all router references configured for the tenant.
-    */
-   @Named("router:list")
-   @GET
-   @ResponseParser(ParseRouters.class)
-   @Transform(ParseRouters.ToPagedIterable.class)
-   @Fallback(Fallbacks.EmptyPagedIterableOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("router:list")
-   @GET
-   @ResponseParser(ParseRouters.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list(PaginationOptions options);
-
-   /**
-    * Returns all routers currently defined in Neutron for the current tenant.
-    *
-    * @return the list of all routers configured for the tenant
-    */
-   @Named("router:list")
-   @GET
-   @ResponseParser(ParseRouterDetails.class)
-   @Transform(ParseRouterDetails.ToPagedIterable.class)
-   @Fallback(Fallbacks.EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<? extends Router> listInDetail();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("router:list")
-   @GET
-   @ResponseParser(ParseRouterDetails.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   PagedIterable<? extends Router> listInDetail(PaginationOptions options);
-
-   /**
-    * Returns the specific router.
-    *
-    * @param id the id of the router to return
-    * @return Router or null if not found
-    */
-   @Named("router:get")
-   @GET
-   @Path("/{id}")
-   @SelectJson("router")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   Router get(@PathParam("id") String id);
-
-   /**
-    * Create a new router
-    *
-    * @param options optional arguments
-    * @return the newly created router
-    */
-   @Named("router:create")
-   @POST
-   @SelectJson("router")
-   @MapBinder(CreateRouterOptions.class)
-   Router create(CreateRouterOptions... options);
-
-   /**
-    * Update a router
-    *
-    * @param id the id of the router to update
-    * @param options the attributes to update
-    * @return true if update successful, false if not
-    */
-   @Named("router:update")
-   @PUT
-   @Path("/{id}")
-   @MapBinder(UpdateRouterOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean update(@PathParam("id") String id, UpdateRouterOptions... options);
-
-   /**
-    * Deletes the specified router
-    *
-    * @param id the id of the router to delete
-    * @return true if delete successful, false if not
-    */
-   @Named("router:delete")
-   @DELETE
-   @Path("/{id}")
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("id") String id);
-
-   /**
-    * Add a interface to a router to connect to the specified subnet
-    *
-    * @param routerId the id of the router to create the interface at
-    * @param subnetId the id of the subnet to connect with the interface
-    * @return the newly-created router interface
-    */
-   @Named("router:addInterfaceForSubnet")
-   @PUT
-   @Path("/{id}/add_router_interface")
-   @MapBinder(EmptyOptions.class)
-   RouterInterface addInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
-
-   /**
-    * Add a interface to a router to connect to the specified port
-    *
-    * @param routerId the id of the router to create the interface at
-    * @param portId the id of the port to connect with the interface
-    * @return the newly-created router interface
-    */
-   @Named("router:addInterfaceForPort")
-   @PUT
-   @Path("{id}/add_router_interface")
-   @MapBinder(EmptyOptions.class)
-   RouterInterface addInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
-
-   /**
-    * Remove the interface where the specified subnet is connected to
-    *
-    * @param routerId the id of the router to remove the interface from
-    * @param subnetId the id of the subnet to disconnect from the interface
-    */
-   @Named("router:removeInterfaceForSubnet")
-   @PUT
-   @Path("/{id}/remove_router_interface")
-   @MapBinder(EmptyOptions.class)
-   boolean removeInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
-
-   /**
-    * Remove the interface where the specified port is connected to
-    *
-    * @param routerId the id of the router to remove the interface from
-    * @param portId the id of the port to disconnect from the interface
-    */
-   @Named("router:removeInterfaceForPort")
-   @PUT
-   @Path("{id}/remove_router_interface")
-   @MapBinder(EmptyOptions.class)
-   boolean removeInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
deleted file mode 100644
index dc7b005..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApi.java
+++ /dev/null
@@ -1,179 +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_0.features;
-
-import com.google.common.collect.FluentIterable;
-import org.jclouds.Fallbacks;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworkDetails;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworks;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateNetworkOptions;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Transform;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.core.MediaType;
-
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
-/**
- * Provides access to Network operations for the OpenStack Networking (Neutron) v2 API.
- * <p/>
- * Each tenant can define one or more networks. A network is a virtual isolated layer-2 broadcast domain reserved to the
- * tenant. A tenant can create several ports for a network, and plug virtual interfaces into these ports.
- *
- * @see <a href=
- *      "http://docs.openstack.org/api/openstack-network/2.0/content/Networks.html">api doc</a>
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.NetworkApi} instead.
- *             To be removed in jclouds 2.0.
- */
-@Deprecated
-@Path("/v2.0/networks")
-@RequestFilters(AuthenticateRequest.class)
-@Consumes(MediaType.APPLICATION_JSON)
-public interface NetworkApi {
-
-   /**
-    * Returns the list of all networks currently defined in Neutron for the current tenant. The list provides the unique
-    * identifier of each network configured for the tenant.
-    *
-    * @return the list of all network references configured for the tenant
-    */
-   @Named("network:list")
-   @GET
-   @ResponseParser(ParseNetworks.class)
-   @Transform(ParseNetworks.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("network:list")
-   @GET
-   @ResponseParser(ParseNetworks.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list(PaginationOptions options);
-
-   /**
-    * Returns all networks currently defined in Neutron for the current tenant.
-    *
-    * @return the list of all networks configured for the tenant
-    */
-   @Named("network:list")
-   @GET
-   @ResponseParser(ParseNetworkDetails.class)
-   @Transform(ParseNetworkDetails.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<? extends Network> listInDetail();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("network:list")
-   @GET
-   @ResponseParser(ParseNetworkDetails.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   PagedIterable<? extends Network> listInDetail(PaginationOptions options);
-
-   /**
-    * Return a specific network
-    *
-    * @param id the id of the network to return
-    * @return Network or null if not found
-    */
-   @Named("network:get")
-   @GET
-   @Path("/{id}")
-   @SelectJson("network")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   Network get(@PathParam("id") String id);
-
-   /**
-    * Create a new network with the specified type
-    *
-    * @param options optional arguments
-    * @return a reference of the newly-created network
-    */
-   @Named("network:create")
-   @POST
-   @SelectJson("network")
-   @MapBinder(CreateNetworkOptions.class)
-   Network create(CreateNetworkOptions... options);
-
-   /**
-    * Create multiple networks
-    *
-    * @param networks the bulk of networks to create
-    * @return list of references of the newly-created networks
-    */
-   @Named("network:createBulk")
-   @POST
-   @SelectJson("networks")
-   @MapBinder(CreateNetworkBulkOptions.class)
-   FluentIterable<? extends Network> createBulk(CreateNetworkBulkOptions networks);
-
-   /**
-    * Update a network
-    *
-    * @param id the id of the network to update
-    * @param options the attributes to update
-    * @return true if update successful, false if not
-    */
-   @Named("network:update")
-   @PUT
-   @Path("/{id}")
-   @MapBinder(UpdateNetworkOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean update(@PathParam("id") String id, UpdateNetworkOptions... options);
-
-   /**
-    * Deletes the specified network
-    *
-    * @param id the id of the network to delete
-    * @return true if delete was successful, false if not
-    */
-   @Named("network:delete")
-   @DELETE
-   @Path("/{id}")
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("id") String id);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
deleted file mode 100644
index 4aef5cd..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/PortApi.java
+++ /dev/null
@@ -1,183 +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_0.features;
-
-import com.google.common.collect.FluentIterable;
-import org.jclouds.Fallbacks;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.functions.ParsePortDetails;
-import org.jclouds.openstack.neutron.v2_0.functions.ParsePorts;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Transform;
-
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.core.MediaType;
-
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
-/**
- * Provides access to Port operations for the OpenStack Networking (Neutron) v2 API.
- * <p/>
- * A port represents a virtual switch port on a logical network switch where all the interfaces attached to a given network are connected.
- * <p/>
- * A port has an administrative state which is either 'DOWN' or 'ACTIVE'. Ports which are administratively down will not be able to receive/send traffic.
-
- * @see <a href=
- *      "http://docs.openstack.org/api/openstack-network/2.0/content/Ports.html">api doc</a>
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.PortApi} instead.
- *             To be removed in jclouds 2.0.
- */
-@Deprecated
-@Path("/v2.0/ports")
-@RequestFilters(AuthenticateRequest.class)
-@Consumes(MediaType.APPLICATION_JSON)
-public interface PortApi {
-
-   /**
-    * Returns the list of all ports currently defined in Neutron for the current tenant. The list provides the unique
-    * identifier of each network configured for the tenant.
-    *
-    * @return the list of all port references configured for the tenant
-    */
-   @Named("port:list")
-   @GET
-   @ResponseParser(ParsePorts.class)
-   @Transform(ParsePorts.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("port:list")
-   @GET
-   @ResponseParser(ParsePorts.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list(PaginationOptions options);
-
-   /**
-    * Returns the set of ports currently defined in Neutron for the requested network.
-    *
-    * @return the list of all ports configured for the tenant
-    */
-   @Named("port:list")
-   @GET
-   @ResponseParser(ParsePortDetails.class)
-   @Transform(ParsePortDetails.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<? extends Port> listInDetail();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("port:list")
-   @GET
-   @ResponseParser(ParsePortDetails.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   PagedIterable<? extends Port> listInDetail(PaginationOptions options);
-
-   /**
-    * Returns the specific port
-    *
-    * @param id the id of the port to return
-    * @return Port or null if not found
-    */
-   @Named("port:get")
-   @GET
-   @Path("/{id}")
-   @SelectJson("port")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   Port get(@PathParam("id") String id);
-
-   /**
-    * Create a new port in the specified network
-    *
-    * @param networkId the id of the network to associate this port with
-    * @param options optional arguments
-    * @return a reference of the newly-created port
-    */
-   @Named("port:create")
-   @POST
-   @SelectJson("port")
-   @MapBinder(CreatePortOptions.class)
-   Port create(@PayloadParam("network_id") String networkId, CreatePortOptions... options);
-
-   /**
-    * Create multiple ports
-    *
-    * @param ports the bulk of ports to create
-    * @return list of references of the newly-created ports
-    */
-   @Named("port:createBulk")
-   @POST
-   @SelectJson("ports")
-   @MapBinder(CreatePortBulkOptions.class)
-   FluentIterable<? extends Port> createBulk(CreatePortBulkOptions ports);
-
-   /**
-    * Update a port
-    *
-    * @param id the id of the port to update
-    * @param options the attributes to update
-    * @return true if update successful, false if not
-    */
-   @Named("port:update")
-   @PUT
-   @Path("/{id}")
-   @MapBinder(UpdatePortOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean update(@PathParam("id") String id, UpdatePortOptions... options);
-
-   /**
-    * Delete a port
-    *
-    * @param id the id of the port to delete
-    * @return true if delete successful, false if not
-    */
-   @Named("port:delete")
-   @DELETE
-   @Path("/{id}")
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("id") String id);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
deleted file mode 100644
index 24ce4b3..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApi.java
+++ /dev/null
@@ -1,182 +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_0.features;
-
-import com.google.common.collect.FluentIterable;
-import org.jclouds.Fallbacks;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnetDetails;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnets;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Transform;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.core.MediaType;
-
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
-/**
- * Provides access to Subnet operations for the OpenStack Networking (Neutron) v2 API.
- *
-
- * @see <a href=
- *      "http://docs.openstack.org/api/openstack-network/2.0/content/Subnets.html">api doc</a>
- * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.features.SubnetApi} instead.
- *             To be removed in jclouds 2.0.
- */
-@Deprecated
-@Path("/v2.0/subnets")
-@RequestFilters(AuthenticateRequest.class)
-@Consumes(MediaType.APPLICATION_JSON)
-public interface SubnetApi {
-
-   /**
-    * Returns the list of all subnets currently defined in Neutron for the current tenant. The list provides the unique
-    * identifier of each subnet configured for the tenant.
-    *
-    * @return the list of all subnet references configured for the tenant
-    */
-   @Named("subnet:list")
-   @GET
-   @ResponseParser(ParseSubnets.class)
-   @Transform(ParseSubnets.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("subnet:list")
-   @GET
-   @ResponseParser(ParseSubnets.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   @QueryParams(keys = {"fields", "fields", "fields"}, values = {"id", "tenant_id", "name"})
-   PagedIterable<? extends ReferenceWithName> list(PaginationOptions options);
-
-   /**
-    * Returns all subnets currently defined in Neutron for the current tenant.
-    *
-    * @return the list of all subnets configured for the tenant
-    */
-   @Named("subnet:list")
-   @GET
-   @ResponseParser(ParseSubnetDetails.class)
-   @Transform(ParseSubnetDetails.ToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<? extends Subnet> listInDetail();
-
-   /**
-    * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/pagination.html">api doc</a>
-    */
-   @Named("subnet:list")
-   @GET
-   @ResponseParser(ParseSubnetDetails.class)
-   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   PagedIterable<? extends Subnet> listInDetail(PaginationOptions options);
-
-   /**
-    * Returns the specific Subnet.
-    *
-    * @param id the id of the subnet to return
-    * @return Subnet or null if not found
-    */
-   @Named("subnet:get")
-   @GET
-   @Path("/{id}")
-   @SelectJson("subnet")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   Subnet get(@PathParam("id") String id);
-
-   /**
-    * Create a subnet within a specified network
-    *
-    * @param networkId the id of the network to associate the subnet with
-    * @param ipVersion the ip version of this subnet
-    * @param cidr the cidr for this subnet
-    * @param options optional arugments
-    * @return a reference of the newly-created subnet
-    */
-   @Named("subnet:create")
-   @POST
-   @SelectJson("subnet")
-   @MapBinder(CreateSubnetOptions.class)
-   Subnet create(@PayloadParam("network_id") String networkId, @PayloadParam("ip_version") Integer ipVersion,
-                            @PayloadParam("cidr") String cidr, CreateSubnetOptions... options);
-
-   /**
-    * Create multiple subnets
-    *
-    * @param subnets the bulk of subnets to create
-    * @return list of references of the newly-created subnets
-    */
-   @Named("subnet:createBulk")
-   @POST
-   @SelectJson("subnets")
-   @MapBinder(CreateSubnetBulkOptions.class)
-   FluentIterable<? extends Subnet> createBulk(CreateSubnetBulkOptions subnets);
-
-   /**
-    * Update a subnet
-    *
-    * @param id the id of the subnet to update
-    * @param options the attributes to update
-    * @return true if update was successful, false if not
-    */
-   @Named("subnet:update")
-   @PUT
-   @Path("/{id}")
-   @MapBinder(UpdateSubnetOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean update(@PathParam("id") String id, UpdateSubnetOptions... options);
-
-   /**
-    * Delete a subnet
-    *
-    * @param id the id of the subnet to delete
-    * @return true if delete successful, false if not
-    */
-   @Named("subnet:delete")
-   @DELETE
-   @Path("/{id}")
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean delete(@PathParam("id") String id);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
deleted file mode 100644
index 421bf71..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworkDetails.Networks;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseNetworkDetails extends ParseJson<Networks> {
-   static class Networks extends PaginatedCollection<Network> {
-
-      @ConstructorProperties({ "networks", "networks_links" })
-      protected Networks(Iterable<Network> networks, Iterable<Link> networksLinks) {
-         super(networks, networksLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseNetworkDetails(Json json) {
-      super(json, TypeLiteral.get(Networks.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<Network, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<Network>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         return new Function<Object, IterableWithMarker<Network>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<Network> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(networkApi.listInDetail(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listNetworksInDetail()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
deleted file mode 100644
index a1c1448..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseNetworks.Networks;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseNetworks extends ParseJson<Networks> {
-   static class Networks extends PaginatedCollection<ReferenceWithName> {
-
-      @ConstructorProperties({ "networks", "networks_links" })
-      protected Networks(Iterable<ReferenceWithName> networks, Iterable<Link> networksLinks) {
-         super(networks, networksLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseNetworks(Json json) {
-      super(json, TypeLiteral.get(Networks.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<ReferenceWithName, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<ReferenceWithName>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         return new Function<Object, IterableWithMarker<ReferenceWithName>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(networkApi.list(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listNetworks()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
deleted file mode 100644
index a4e461e..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
+++ /dev/null
@@ -1,94 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.features.PortApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParsePortDetails.Ports;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParsePortDetails extends ParseJson<Ports> {
-   static class Ports extends PaginatedCollection<Port> {
-
-      @ConstructorProperties({ "ports", "ports_links" })
-      protected Ports(Iterable<Port> ports, Iterable<Link> portsLinks) {
-         super(ports, portsLinks);
-      }
-
-   }
-
-   @Inject
-   public ParsePortDetails(Json json) {
-      super(json, TypeLiteral.get(Ports.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<ReferenceWithName, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<ReferenceWithName>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final PortApi portApi = api.getPortApiForZone(zone);
-         return new Function<Object, IterableWithMarker<ReferenceWithName>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(portApi.listInDetail(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listPortsInDetail()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
deleted file mode 100644
index 1a11231..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.features.PortApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParsePorts.Ports;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParsePorts extends ParseJson<Ports> {
-   static class Ports extends PaginatedCollection<ReferenceWithName> {
-
-      @ConstructorProperties({ "ports", "ports_links" })
-      protected Ports(Iterable<ReferenceWithName> ports, Iterable<Link> portsLinks) {
-         super(ports, portsLinks);
-      }
-
-   }
-
-   @Inject
-   public ParsePorts(Json json) {
-      super(json, TypeLiteral.get(Ports.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<ReferenceWithName, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<ReferenceWithName>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final PortApi portApi = api.getPortApiForZone(zone);
-         return new Function<Object, IterableWithMarker<ReferenceWithName>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(portApi.list(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listPorts()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
deleted file mode 100644
index 537cc97..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.Router;
-import org.jclouds.openstack.neutron.v2_0.extensions.RouterApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseRouterDetails.Routers;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseRouterDetails extends ParseJson<Routers> {
-   static class Routers extends PaginatedCollection<Router> {
-
-      @ConstructorProperties({ "routers", "routers_links" })
-      protected Routers(Iterable<Router> routers, Iterable<Link> routersLinks) {
-         super(routers, routersLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseRouterDetails(Json json) {
-      super(json, TypeLiteral.get(Routers.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<Router, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<Router>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final RouterApi routerApi = api.getRouterExtensionForZone(zone).get();
-         return new Function<Object, IterableWithMarker<Router>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<Router> apply(Object input) {
-               return IterableWithMarker.class.cast(routerApi.listInDetail(marker(input.toString())));
-            }
-
-            @Override
-            public String toString() {
-               return "listRoutersInDetail()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
deleted file mode 100644
index eb612f4..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.extensions.RouterApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseRouters.Routers;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseRouters extends ParseJson<Routers> {
-   static class Routers extends PaginatedCollection<ReferenceWithName> {
-
-      @ConstructorProperties({ "routers", "routers_links" })
-      protected Routers(Iterable<ReferenceWithName> routers, Iterable<Link> routersLinks) {
-         super(routers, routersLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseRouters(Json json) {
-      super(json, TypeLiteral.get(Routers.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<ReferenceWithName, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<ReferenceWithName>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final RouterApi routerApi = api.getRouterExtensionForZone(zone).get();
-         return new Function<Object, IterableWithMarker<ReferenceWithName>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               return IterableWithMarker.class.cast(routerApi.list(marker(input.toString())));
-            }
-
-            @Override
-            public String toString() {
-               return "listRouters()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
deleted file mode 100644
index 17201f2..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnetDetails.Subnets;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseSubnetDetails extends ParseJson<Subnets> {
-   static class Subnets extends PaginatedCollection<Subnet> {
-
-      @ConstructorProperties({ "subnets", "subnets_links" })
-      protected Subnets(Iterable<Subnet> subnets, Iterable<Link> subnetsLinks) {
-         super(subnets, subnetsLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseSubnetDetails(Json json) {
-      super(json, TypeLiteral.get(Subnets.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<Subnet, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<Subnet>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         return new Function<Object, IterableWithMarker<Subnet>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<Subnet> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(subnetApi.listInDetail(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listSubnetsInDetail()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
deleted file mode 100644
index bc7ef13..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
+++ /dev/null
@@ -1,93 +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_0.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.beans.ConstructorProperties;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
-import org.jclouds.http.functions.ParseJson;
-import org.jclouds.json.Json;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
-import org.jclouds.openstack.neutron.v2_0.functions.ParseSubnets.Subnets;
-import org.jclouds.openstack.v2_0.domain.Link;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.inject.TypeLiteral;
-
-/**
- */
-@Beta
-@Singleton
-public class ParseSubnets extends ParseJson<Subnets> {
-   static class Subnets extends PaginatedCollection<ReferenceWithName> {
-
-      @ConstructorProperties({ "subnets", "subnets_links" })
-      protected Subnets(Iterable<ReferenceWithName> subnets, Iterable<Link> subnetsLinks) {
-         super(subnets, subnetsLinks);
-      }
-
-   }
-
-   @Inject
-   public ParseSubnets(Json json) {
-      super(json, TypeLiteral.get(Subnets.class));
-   }
-
-   public static class ToPagedIterable extends Arg0ToPagedIterable.FromCaller<ReferenceWithName, ToPagedIterable> {
-
-      private final NeutronApi api;
-
-      @Inject
-      protected ToPagedIterable(NeutronApi api) {
-         this.api = checkNotNull(api, "api");
-      }
-
-      @Override
-      protected Function<Object, IterableWithMarker<ReferenceWithName>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         return new Function<Object, IterableWithMarker<ReferenceWithName>>() {
-
-            @SuppressWarnings("unchecked")
-            @Override
-            public IterableWithMarker<ReferenceWithName> apply(Object input) {
-               PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
-               return IterableWithMarker.class.cast(subnetApi.list(paginationOptions));
-            }
-
-            @Override
-            public String toString() {
-               return "listSubnets()";
-            }
-         };
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/handlers/NeutronErrorHandler.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/handlers/NeutronErrorHandler.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/handlers/NeutronErrorHandler.java
deleted file mode 100644
index 87c28c5..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/handlers/NeutronErrorHandler.java
+++ /dev/null
@@ -1,59 +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_0.handlers;
-
-import static org.jclouds.http.HttpUtils.closeClientButKeepContentStream;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpCommand;
-import org.jclouds.http.HttpErrorHandler;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.ResourceNotFoundException;
-
-/**
- * This will parse and set an appropriate exception on the command object.
- */
-@Singleton
-public class NeutronErrorHandler implements HttpErrorHandler {
-   public void handleError(HttpCommand command, HttpResponse response) {
-      // it is important to always read fully and close streams
-      byte[] data = closeClientButKeepContentStream(response);
-      String message = data != null ? new String(data) : null;
-
-      Exception exception = message != null ? new HttpResponseException(command, response, message)
-            : new HttpResponseException(command, response);
-      message = message != null ? message : String.format("%s -> %s", command.getCurrentRequest().getRequestLine(),
-            response.getStatusLine());
-      switch (response.getStatusCode()) {
-         case 400:
-            break;
-         case 401:
-         case 403:
-            exception = new AuthorizationException(message, exception);
-            break;
-         case 404:
-            if (!command.getCurrentRequest().getMethod().equals("DELETE")) {
-               exception = new ResourceNotFoundException(message, exception);
-            }
-            break;
-      }
-      command.setException(exception);
-   }
-}


[19/50] [abbrv] jclouds git commit: Adds rackspace cloudnetworks-us provider

Posted by na...@apache.org.
Adds rackspace cloudnetworks-us provider


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/e6056332
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/e6056332
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/e6056332

Branch: refs/heads/master
Commit: e6056332316420b37d36bd0bdda9bdb631abd981
Parents: d691bce
Author: Zack Shoylev <za...@rackspace.com>
Authored: Wed Oct 22 11:57:43 2014 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Sat Nov 15 05:55:32 2014 -0600

----------------------------------------------------------------------
 .../openstack/neutron/v2/NeutronApi.java        |  29 ++++--
 .../functions/VersionAwareRegionToEndpoint.java |  67 ++++++++++++
 .../v2/extensions/FloatingIPApiMockTest.java    |  50 ++++-----
 .../v2/extensions/RouterApiMockTest.java        |  78 +++++++-------
 .../v2/extensions/SecurityGroupApiMockTest.java |  76 +++++++-------
 .../extensions/lbaas/v1/LBaaSApiMockTest.java   | 102 +++++++++----------
 .../v2/features/ExtensionApiMockTest.java       |   8 +-
 .../neutron/v2/features/NetworkApiMockTest.java |  26 ++---
 .../neutron/v2/features/PortApiMockTest.java    |  57 ++++++-----
 .../neutron/v2/features/SubnetApiMockTest.java  |  53 +++++-----
 .../v2/internal/BaseNeutronApiMockTest.java     |   5 +-
 11 files changed, 315 insertions(+), 236 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
index 983fe94..4dca71b 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
@@ -21,9 +21,7 @@ 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.FloatingIPApi;
 import org.jclouds.openstack.neutron.v2.extensions.RouterApi;
 import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
@@ -31,6 +29,7 @@ import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
 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.functions.VersionAwareRegionToEndpoint;
 import org.jclouds.openstack.v2_0.features.ExtensionApi;
 import org.jclouds.rest.annotations.Delegate;
 import org.jclouds.rest.annotations.EndpointParam;
@@ -40,8 +39,16 @@ import com.google.inject.Provides;
 
 /**
  * Provides access to the OpenStack Networking (Neutron) v2 API.
+ *
+ * The service-side API will always have a v2.0 in the path.
+ * However, the endpoint will sometimes contain a v2.0 and sometimes it will not.
+ * The @Path annotation here ensures the path is always added. The VersionAwareRegionToEndpoint ensures that the
+ * endpoint will always look the same.
+ *
+ * Cannot leave labs until fixed:
+ * TODO: https://issues.apache.org/jira/browse/JCLOUDS-773
  */
-@Path("{" + Constants.PROPERTY_API_VERSION + "}")
+@Path("v2.0")
 public interface NeutronApi extends Closeable {
    /**
     * @return the Region codes configured
@@ -54,25 +61,25 @@ public interface NeutronApi extends Closeable {
     * Provides access to Extension features.
     */
    @Delegate
-   ExtensionApi getExtensionApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   ExtensionApi getExtensionApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to Network features.
     */
    @Delegate
-   NetworkApi getNetworkApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   NetworkApi getNetworkApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to Subnet features.
     */
    @Delegate
-   SubnetApi getSubnetApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   SubnetApi getSubnetApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to Port features.
     */
    @Delegate
-   PortApi getPortApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   PortApi getPortApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to Router features.
@@ -82,7 +89,7 @@ public interface NeutronApi extends Closeable {
     * to determine if it is present.
     */
    @Delegate
-   Optional<RouterApi> getRouterApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   Optional<RouterApi> getRouterApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to Floating IP features.
@@ -92,7 +99,7 @@ public interface NeutronApi extends Closeable {
     * to determine if it is present.
     */
    @Delegate
-   Optional<FloatingIPApi> getFloatingIPApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   Optional<FloatingIPApi> getFloatingIPApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to SecurityGroup features.
@@ -102,7 +109,7 @@ public interface NeutronApi extends Closeable {
     * to determine if it is present.
     */
    @Delegate
-   Optional<SecurityGroupApi> getSecurityGroupApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   Optional<SecurityGroupApi> getSecurityGroupApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to LBaaS features.
@@ -112,5 +119,5 @@ public interface NeutronApi extends Closeable {
     * to determine if it is present.
     */
    @Delegate
-   Optional<LBaaSApi> getLBaaSApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+   Optional<LBaaSApi> getLBaaSApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/VersionAwareRegionToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/VersionAwareRegionToEndpoint.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/VersionAwareRegionToEndpoint.java
new file mode 100644
index 0000000..36c93b9
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/VersionAwareRegionToEndpoint.java
@@ -0,0 +1,67 @@
+/*
+ * 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.functions;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+import java.net.URI;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.jclouds.location.Region;
+
+import com.google.common.base.Function;
+import com.google.common.base.Supplier;
+
+public class VersionAwareRegionToEndpoint implements Function<Object, URI> {
+
+   private final Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier;
+
+   @Inject
+   public VersionAwareRegionToEndpoint(@Region Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier) {
+      this.regionToEndpointSupplier = checkNotNull(regionToEndpointSupplier, "regionToEndpointSupplier");
+   }
+
+   /**
+    * A quick fix to ensure Neutron works with endpoint definitions that are not version-agnostic.
+    * The service-side API will always have a v2.0 in the path.
+    * However, the endpoint will sometimes contain a v2.0 and sometimes it will not.
+    * The VersionAwareRegionToEndpoint ensures that the endpoint will always look the same
+    * before /v2.0 is added to it.
+    *
+    * Cannot leave labs until fixed:
+    * TODO: https://issues.apache.org/jira/browse/JCLOUDS-773
+    * This code will be unnecessary once this is supported.
+    */
+   @Override
+   public URI apply(Object from) {
+      Map<String, Supplier<URI>> regionToEndpoint = regionToEndpointSupplier.get();
+      checkState(!regionToEndpoint.isEmpty(), "no region name to endpoint mappings configured!");
+      checkArgument(regionToEndpoint.containsKey(from),
+               "requested location %s, which is not in the configured locations: %s", from, regionToEndpoint);
+      String uri = regionToEndpoint.get(from).get().toString();
+
+      if (uri.endsWith("/v2.0")) {
+         return URI.create(uri.substring(0, uri.length() - 5));
+      }
+
+      return regionToEndpoint.get(from).get();
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
index 576d6d3..279dca9 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApiMockTest.java
@@ -66,8 +66,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "POST", "/v2.0/floatingips", "/floatingip_create_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/floatingips", "/floatingip_create_request.json");
 
          /*
           * Check response
@@ -125,8 +125,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -157,8 +157,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -189,9 +189,9 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -223,8 +223,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips");
 
          /*
           * Check response
@@ -254,8 +254,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips/12345");
 
          /*
           * Check response
@@ -292,8 +292,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/floatingips/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/floatingips/12345");
 
          /*
           * Check response
@@ -327,8 +327,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/floatingips/12345", "/floatingip_update_request.json");
 
          /*
           * Check response
@@ -361,8 +361,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_dissociate_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/floatingips/12345", "/floatingip_update_dissociate_request.json");
 
          /*
           * Check response
@@ -397,8 +397,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/floatingips/12345", "/floatingip_update_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/floatingips/12345", "/floatingip_update_request.json");
 
          /*
           * Check response
@@ -427,8 +427,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/floatingips/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/floatingips/12345");
 
          /*
           * Check response
@@ -457,8 +457,8 @@ public class FloatingIPApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/floatingips/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/floatingips/12345");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index dab3b78..902518e 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -73,8 +73,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "POST", "/v2.0/routers", "/router_create_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/routers", "/router_create_request.json");
 
          /*
           * Check response
@@ -133,8 +133,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -164,8 +164,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -196,9 +196,9 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -230,8 +230,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers");
 
          /*
           * Check response
@@ -261,8 +261,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers/12345");
 
          /*
           * Check response
@@ -297,8 +297,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/routers/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/routers/12345");
 
          /*
           * Check response
@@ -332,8 +332,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345", "/router_update_request.json");
 
          /*
           * Check response
@@ -373,8 +373,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345", "/router_update_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345", "/router_update_request.json");
 
          /*
           * Check response
@@ -403,8 +403,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/routers/12345");
 
          /*
           * Check response
@@ -433,8 +433,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/routers/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/routers/12345");
 
          /*
           * Check response
@@ -462,8 +462,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/add_router_interface", "/router_add_interface_request.json");
 
          /*
           * Check response
@@ -494,8 +494,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/add_router_interface", "/router_add_interface_request.json");
 
          /*
           * Check response
@@ -524,8 +524,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
 
          /*
           * Check response
@@ -556,8 +556,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/add_router_interface", "/router_add_interface_port_request.json");
 
          /*
           * Check response
@@ -586,8 +586,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
 
          /*
           * Check response
@@ -616,8 +616,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/remove_router_interface", "/router_remove_interface_subnet_request.json");
 
          /*
           * Check response
@@ -646,8 +646,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
 
          /*
           * Check response
@@ -676,8 +676,8 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/routers/12345/remove_router_interface", "/router_remove_interface_port_request.json");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
index e766b6d..6494a05 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
@@ -71,8 +71,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "POST", "/v2.0/security-groups", "/security_group_create_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-groups", "/security_group_create_request.json");
 
          /*
           * Check response
@@ -142,8 +142,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "POST", "/v2.0/security-group-rules", "/security_group_rule_create_request.json");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-group-rules", "/security_group_rule_create_request.json");
 
          /*
           * Check response
@@ -208,8 +208,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -241,8 +241,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -271,8 +271,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -304,8 +304,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?limit=2&marker=abcdefg");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -336,9 +336,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -372,8 +372,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups");
 
          /*
           * Check response
@@ -405,9 +405,9 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -441,8 +441,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules");
 
          /*
           * Check response
@@ -473,8 +473,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups/12345");
 
          /*
           * Check response
@@ -509,8 +509,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-groups/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups/12345");
 
          /*
           * Check response
@@ -540,8 +540,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules/12345");
 
          /*
           * Check response
@@ -576,8 +576,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/security-group-rules/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules/12345");
 
          /*
           * Check response
@@ -607,8 +607,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-groups/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-groups/12345");
 
          /*
           * Check response
@@ -637,8 +637,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-groups/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-groups/12345");
 
          /*
           * Check response
@@ -667,8 +667,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-group-rules/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-group-rules/12345");
 
          /*
           * Check response
@@ -697,8 +697,8 @@ public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/security-group-rules/12345");
+         assertExtensions(server, uriApiVersion + "");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-group-rules/12345");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
index 31a7ecf..f83dcf9 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiMockTest.java
@@ -115,7 +115,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/pools", "/lbaas/v1/pool_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/lb/pools", "/lbaas/v1/pool_create_request.json");
 
          /*
           * Check response
@@ -184,7 +184,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -214,7 +214,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -246,8 +246,8 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -280,7 +280,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools");
 
          /*
           * Check response
@@ -309,7 +309,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
 
          /*
           * Check response
@@ -355,7 +355,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
 
          /*
           * Check response
@@ -386,7 +386,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
 
          /*
           * Check response
@@ -437,7 +437,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab", "/lbaas/v1/pool_update_request.json");
 
          /*
           * Check response
@@ -465,7 +465,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
 
          /*
           * Check response
@@ -493,7 +493,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab");
 
          /*
           * Check response
@@ -524,7 +524,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/members", "/lbaas/v1/member_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/lb/members", "/lbaas/v1/member_create_request.json");
 
          /*
           * Check response
@@ -584,7 +584,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -614,7 +614,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -646,8 +646,8 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members?marker=396f12f8-521e-4b91-8e21-2e003500433a");
 
          /*
           * Check response
@@ -680,7 +680,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members");
 
          /*
           * Check response
@@ -709,7 +709,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check response
@@ -746,7 +746,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check response
@@ -777,7 +777,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
 
          /*
           * Check response
@@ -817,7 +817,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f", "/lbaas/v1/member_update_request.json");
 
          /*
           * Check response
@@ -845,7 +845,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check response
@@ -873,7 +873,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/members/48a471ea-64f1-4eb6-9be7-dae6bbe40a0f");
 
          /*
           * Check response
@@ -904,7 +904,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/vips", "/lbaas/v1/vip_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/lb/vips", "/lbaas/v1/vip_create_request.json");
 
          /*
           * Check response
@@ -970,7 +970,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -1000,7 +1000,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -1032,8 +1032,8 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips?marker=396f12f8-521e-4b91-8e21-2e003500433a");
 
          /*
           * Check response
@@ -1066,7 +1066,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips");
 
          /*
           * Check response
@@ -1095,7 +1095,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
 
          /*
           * Check response
@@ -1139,7 +1139,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304");
 
          /*
           * Check response
@@ -1171,7 +1171,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
 
          /*
           * Check response
@@ -1218,7 +1218,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2", "/lbaas/v1/vip_update_request.json");
 
          /*
           * Check response
@@ -1246,7 +1246,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
 
          /*
           * Check response
@@ -1274,7 +1274,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2");
 
          /*
           * Check response
@@ -1305,7 +1305,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/health_monitors", "/lbaas/v1/health_monitor_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/lb/health_monitors", "/lbaas/v1/health_monitor_create_request.json");
 
          /*
           * Check response
@@ -1370,7 +1370,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -1400,7 +1400,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -1432,8 +1432,8 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 4);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors?marker=396f12f8-521e-4b91-8e21-2e003500433a");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors?marker=396f12f8-521e-4b91-8e21-2e003500433a");
 
          /*
           * Check response
@@ -1466,7 +1466,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors");
 
          /*
           * Check response
@@ -1495,7 +1495,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
 
          /*
           * Check response
@@ -1537,7 +1537,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "GET", "/v2.0/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/lb/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
 
          /*
           * Check response
@@ -1568,7 +1568,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
 
          /*
           * Check response
@@ -1613,7 +1613,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d", "/lbaas/v1/health_monitor_update_request.json");
 
          /*
           * Check response
@@ -1641,7 +1641,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
 
          /*
           * Check response
@@ -1669,7 +1669,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d");
 
          /*
           * Check response
@@ -1697,7 +1697,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "POST", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors", "/lbaas/v1/pool_associate_health_monitor_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors", "/lbaas/v1/pool_associate_health_monitor_request.json");
 
          /*
           * Check response
@@ -1745,7 +1745,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
 
          /*
           * Check response
@@ -1773,7 +1773,7 @@ public class LBaaSApiMockTest extends BaseNeutronApiMockTest {
           */
          assertAuthentication(server);
          server.takeRequest();
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/5d4b5228-33b0-4e60-b225-9b727c1a20e7");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
index b9615d6..38d36fb 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiMockTest.java
@@ -55,7 +55,7 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertExtensions(server, "/v2.0");
+         assertExtensions(server, uriApiVersion + "");
 
          /*
           * Check response
@@ -83,7 +83,7 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/extensions");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/extensions");
 
          /*
           * Check response
@@ -110,7 +110,7 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/extensions/router");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/extensions/router");
 
          /*
           * Check response
@@ -137,7 +137,7 @@ public class ExtensionApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/extensions/router");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/extensions/router");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
index 641e276..5de307e 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/NetworkApiMockTest.java
@@ -66,7 +66,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/networks", "/network_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/networks", "/network_create_request.json");
 
          /*
           * Check response
@@ -117,7 +117,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -145,7 +145,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -177,8 +177,8 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -209,7 +209,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks");
 
          /*
           * Check response
@@ -236,7 +236,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks/12345");
 
          /*
           * Check response
@@ -265,7 +265,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/networks/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/networks/12345");
 
          /*
           * Check response
@@ -299,7 +299,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/networks", "/network_bulk_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/networks", "/network_bulk_create_request.json");
 
          /*
           * Check response
@@ -366,7 +366,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/networks/123456", "/network_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/networks/123456", "/network_update_request.json");
 
          /*
           * Check response
@@ -399,7 +399,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/networks/123456");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/networks/123456");
 
          /*
           * Check response
@@ -425,7 +425,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/networks/123456");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/networks/123456");
 
          /*
           * Check response
@@ -451,7 +451,7 @@ public class NetworkApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/networks/123456");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/networks/123456");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
index 8f7ebc8..8b4797d 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
@@ -16,11 +16,17 @@
  */
 package org.jclouds.openstack.neutron.v2.features;
 
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
+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 java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.Map;
+
 import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.domain.AddressPair;
 import org.jclouds.openstack.neutron.v2.domain.NetworkStatus;
@@ -33,16 +39,11 @@ 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 java.util.Map;
-
-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 com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
 
 /**
  * Tests NetworkApi Guice wiring and parsing
@@ -74,7 +75,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/ports", "/port_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/ports", "/port_create_request.json");
 
          /*
           * Check response
@@ -136,7 +137,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -164,7 +165,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -193,8 +194,8 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -225,7 +226,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports");
 
          /*
           * Check response
@@ -266,7 +267,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/ports", "/port_create_bulk_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/ports", "/port_create_bulk_request.json");
 
          /*
           * Check response
@@ -327,7 +328,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports/12345");
 
          /*
           * Check response
@@ -363,7 +364,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/ports/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/ports/12345");
 
          /*
           * Check response
@@ -395,7 +396,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/ports/12345", "/port_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/ports/12345", "/port_update_request.json");
 
          /*
           * Check response
@@ -427,7 +428,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/ports/12345", "/port_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/ports/12345", "/port_update_request.json");
 
          /*
           * Check response
@@ -453,7 +454,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/ports/12345");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/ports/12345");
 
          /*
           * Check response
@@ -479,7 +480,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/ports/12345");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/ports/12345");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
index 3571b0c..bfe3d12 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SubnetApiMockTest.java
@@ -16,10 +16,16 @@
  */
 package org.jclouds.openstack.neutron.v2.features;
 
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
+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 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.IPv6DHCPMode;
 import org.jclouds.openstack.neutron.v2.domain.Subnet;
@@ -29,15 +35,10 @@ 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 com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
 
 /**
  * Tests NetworkApi Guice wiring and parsing
@@ -66,7 +67,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/subnets", "/subnet_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/subnets", "/subnet_create_request.json");
 
          /*
           * Check response
@@ -118,7 +119,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -145,7 +146,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets?limit=2&marker=abcdefg");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets?limit=2&marker=abcdefg");
 
          /*
           * Check response
@@ -174,8 +175,8 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets");
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
 
          /*
           * Check response
@@ -206,7 +207,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets");
 
          /*
           * Check response
@@ -233,7 +234,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets/12345");
 
          /*
           * Check response
@@ -264,7 +265,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "GET", "/v2.0/subnets/12345");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/subnets/12345");
 
          /*
           * Check response
@@ -300,7 +301,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           * Check request
           */
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "POST", "/v2.0/subnets", "/subnet_bulk_create_request.json");
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/subnets", "/subnet_bulk_create_request.json");
 
          /*
           * Check response
@@ -370,7 +371,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/subnets/12345", "/subnet_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/subnets/12345", "/subnet_update_request.json");
 
          /*
           * Check response
@@ -405,7 +406,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "PUT", "/v2.0/subnets/12345", "/subnet_update_request.json");
+         assertRequest(server.takeRequest(), "PUT", uriApiVersion + "/subnets/12345", "/subnet_update_request.json");
 
          /*
           * Check response
@@ -432,7 +433,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/subnets/12345");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/subnets/12345");
 
          /*
           * Check response
@@ -459,7 +460,7 @@ public class SubnetApiMockTest extends BaseNeutronApiMockTest {
           */
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
-         assertRequest(server.takeRequest(), "DELETE", "/v2.0/subnets/12345");
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/subnets/12345");
 
          /*
           * Check response

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e6056332/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
index fd4a50e..d180e55 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
@@ -17,6 +17,7 @@
 package org.jclouds.openstack.neutron.v2.internal;
 
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.util.Properties;
 
@@ -30,12 +31,14 @@ import org.jclouds.openstack.v2_0.internal.BaseOpenStackMockTest;
  */
 public class BaseNeutronApiMockTest extends BaseOpenStackMockTest<NeutronApi> {
    protected Properties overrides;
+   protected String uriApiVersion = "/v2.0";
+
    /**
     * Base Mock Test
     */
    public BaseNeutronApiMockTest() {
       overrides = new Properties();
-      //overrides.setProperty(SERVICE_TYPE, "neutron");
+      overrides.setProperty(SERVICE_TYPE, "network");
       overrides.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
    }
 }


[42/50] [abbrv] jclouds git commit: JCLOUDS-1104: Extension namespaces are deprecated and can be null

Posted by na...@apache.org.
JCLOUDS-1104: Extension namespaces are deprecated and can be null


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/34114dea
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/34114dea
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/34114dea

Branch: refs/heads/master
Commit: 34114dea002958b2d0504da27150585ad58678d3
Parents: 738121d
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Apr 26 23:15:51 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Apr 26 23:15:51 2016 +0200

----------------------------------------------------------------------
 .../openstack/neutron/v2/features/ExtensionApiLiveTest.java       | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/34114dea/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java
index 6dd729a..5ca868b 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/ExtensionApiLiveTest.java
@@ -49,9 +49,8 @@ public class ExtensionApiLiveTest extends BaseNeutronApiLiveTest {
             assertNotNull(extension.getId());
             assertNotNull(extension.getName());
             assertNotNull(extension.getDescription());
-            assertNotNull(extension.getNamespace());
-            assertNotNull(extension.getUpdated());
             assertNotNull(extension.getLinks());
+            // Namespace and updated fields are nullable
          }
       }
    }


[41/50] [abbrv] jclouds git commit: Renames extension resolver

Posted by na...@apache.org.
Renames extension resolver


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/738121d9
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/738121d9
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/738121d9

Branch: refs/heads/master
Commit: 738121d9347b6015070b0c6ec980e44a764df017
Parents: 288235f
Author: Zack Shoylev <za...@rackspace.com>
Authored: Mon Feb 15 14:51:10 2016 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue Feb 16 22:50:41 2016 -0600

----------------------------------------------------------------------
 .../openstack/neutron/v2/config/NeutronHttpApiModule.java        | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/738121d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index 8a03d54..b8ac2c6 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -35,7 +35,7 @@ import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.extensions.ExtensionNamespaces;
 import org.jclouds.openstack.neutron.v2.handlers.NeutronErrorHandler;
 import org.jclouds.openstack.v2_0.domain.Extension;
-import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet;
+import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationMatchesExtensionSet;
 import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.config.HttpApiModule;
 import org.jclouds.rest.functions.ImplicitOptionalConverter;
@@ -56,7 +56,7 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
    @Override
    protected void configure() {
       bind(DateAdapter.class).to(Iso8601DateAdapter.class);
-      bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
+      bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationMatchesExtensionSet.class);
       super.configure();
       bindAliases();
    }


[10/50] [abbrv] jclouds git commit: Support LBaaS v1

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
new file mode 100644
index 0000000..d3539a9
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
@@ -0,0 +1,493 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 VIP.
+ */
+public class VIP {
+
+   // Mandatory attributes when creating
+   @Named("tenant_id")
+   private String tenantId;
+   @Named("subnet_id")
+   private String subnetId;
+   private Protocol protocol;
+   @Named("protocol_port")
+   private Integer protocolPort;
+   // Mandatory attributes that can be updated
+   @Named("pool_id")
+   private String poolId;
+   // Optional attributes when creating
+   private String address;
+   // Optional attributes that can be updated
+   private String name;
+   private String description;
+   @Named("session_persistence")
+   private SessionPersistence sessionPersistence;
+   @Named("connection_limit")
+   private Integer connectionLimit;
+   @Named("admin_state_up")
+   private Boolean adminStateUp;
+   // Read-only attributes
+   private String id;
+   @Named("port_id")
+   private String portId;
+   private LBaaSStatus status;
+   @Named("status_description")
+   private String statusDescription;
+
+   /**
+    * Deserialization constructor.
+    */
+   @ConstructorProperties({ "id", "tenant_id", "name", "description", "subnet_id", "address", "port_id", "protocol",
+         "protocol_port", "pool_id", "session_persistence", "connection_limit", "admin_state_up", "status",
+         "status_description" })
+   private VIP(String id, String tenantId, String name, String description, String subnetId, String address,
+         String portId, Protocol protocol, Integer protocolPort, String poolId, SessionPersistence sessionPersistence,
+         Integer connectionLimit, Boolean adminStateUp, LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.tenantId = tenantId;
+      this.name = name;
+      this.description = description;
+      this.subnetId = subnetId;
+      this.address = address;
+      this.portId = portId;
+      this.protocol = protocol;
+      this.protocolPort = protocolPort;
+      this.poolId = poolId;
+      this.sessionPersistence = sessionPersistence;
+      this.connectionLimit = connectionLimit;
+      this.adminStateUp = adminStateUp;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * Default constructor.
+    */
+   private VIP() {
+   }
+
+   /**
+    * Copy constructor.
+    *
+    * @param VIP the VIP to copy from.
+    */
+   private VIP(VIP vip) {
+      this(vip.id, vip.tenantId, vip.name, vip.description, vip.subnetId, vip.address, vip.portId, vip.protocol,
+            vip.protocolPort, vip.poolId, vip.sessionPersistence, vip.connectionLimit, vip.adminStateUp, vip.status,
+            vip.statusDescription);
+   }
+
+   /**
+    * @return the id of the VIP.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the tenant id of the VIP.
+    */
+   @Nullable
+   public String getTenantId() {
+      return tenantId;
+   }
+
+   /**
+    * @return the name of the VIP.
+    */
+   @Nullable
+   public String getName() {
+      return name;
+   }
+
+   /**
+    * @return the description of the VIP.
+    */
+   @Nullable
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * @return the subnet id for this VIP.
+    */
+   @Nullable
+   public String getSubnetId() {
+      return subnetId;
+   }
+
+   /**
+    * @return the address for this VIP.
+    */
+   @Nullable
+   public String getAddress() {
+      return address;
+   }
+
+   /**
+    * @return the port id for this VIP.
+    */
+   @Nullable
+   public String getPortId() {
+      return portId;
+   }
+
+   /**
+    * @return the protocol for this VIP.
+    */
+   @Nullable
+   public Protocol getProtocol() {
+      return protocol;
+   }
+
+   /**
+    * @return the protocol port for this VIP.
+    */
+   @Nullable
+   public Integer getProtocolPort() {
+      return protocolPort;
+   }
+
+   /**
+    * @return the pool id for this VIP.
+    */
+   @Nullable
+   public String getPoolId() {
+      return poolId;
+   }
+
+   /**
+    * @return the session persistence for this VIP.
+    */
+   @Nullable
+   public SessionPersistence getSessionPersistence() {
+      return sessionPersistence;
+   }
+
+   /**
+    * @return the connection limit for this VIP.
+    */
+   @Nullable
+   public Integer getConnectionLimit() {
+      return connectionLimit;
+   }
+
+   /**
+    * @return the administrative state for this VIP.
+    */
+   @Nullable
+   public Boolean getAdminStateUp() {
+      return adminStateUp;
+   }
+
+   /**
+    * @return the status for this VIP.
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description for this VIP.
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+
+      VIP that = (VIP) o;
+
+      return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId)
+            && Objects.equal(this.name, that.name) && Objects.equal(this.description, that.description)
+            && Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.address, that.address)
+            && Objects.equal(this.portId, that.portId) && Objects.equal(this.protocol, that.protocol)
+            && Objects.equal(this.protocolPort, that.protocolPort) && Objects.equal(this.poolId, that.poolId)
+            && Objects.equal(this.sessionPersistence, that.sessionPersistence)
+            && Objects.equal(this.connectionLimit, that.connectionLimit)
+            && Objects.equal(this.adminStateUp, that.adminStateUp) && Objects.equal(this.status, that.status)
+            && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, tenantId, name, description, subnetId, address, portId, protocol, protocolPort,
+            poolId, sessionPersistence, connectionLimit, adminStateUp, status, statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
+            .add("description", description).add("subnetId", subnetId).add("address", address).add("portId", portId)
+            .add("protocol", protocol).add("protocolPort", protocolPort).add("poolId", poolId)
+            .add("sessionPersistence", sessionPersistence).add("connectionLimit", connectionLimit)
+            .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
+            .toString();
+   }
+
+   /*
+    * Methods to get the Create and Update builders follow.
+    */
+
+   /**
+    * @return the Builder for creating a new VIP.
+    */
+   public static CreateBuilder createBuilder(String subnetId, Protocol protocol, Integer port, String poolId) {
+      return new CreateBuilder(subnetId, protocol, port, poolId);
+   }
+
+   /**
+    * @return the Builder for updating a VIP.
+    */
+   public static UpdateBuilder updateBuilder() {
+      return new UpdateBuilder();
+   }
+
+   private abstract static class Builder<ParameterizedBuilderType> {
+      protected VIP vip;
+
+      /**
+       * Default constructor.
+       */
+      private Builder() {
+         vip = new VIP();
+      }
+
+      protected abstract ParameterizedBuilderType self();
+
+      /**
+       * Provides the name for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getName()
+       */
+      public ParameterizedBuilderType name(String name) {
+         vip.name = name;
+         return self();
+      }
+
+      /**
+       * Provides the description for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getDescription()
+       */
+      public ParameterizedBuilderType description(String description) {
+         vip.description = description;
+         return self();
+      }
+
+      /**
+       * Provides the pool id for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getPoolId()
+       */
+      public ParameterizedBuilderType poolId(String poolId) {
+         vip.poolId = poolId;
+         return self();
+      }
+
+      /**
+       * Provides the session persistence for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getSessionPersistence()
+       */
+      public ParameterizedBuilderType sessionPersistence(SessionPersistence sessionPersistence) {
+         vip.sessionPersistence = sessionPersistence;
+         return self();
+      }
+
+      /**
+       * Provides the connection limit for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getConnectionLimit()
+       */
+      public ParameterizedBuilderType connectionLimit(Integer connectionLimit) {
+         vip.connectionLimit = connectionLimit;
+         return self();
+      }
+
+      /**
+       * Provides the administrative state for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getAdminStateUp()
+       */
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+         vip.adminStateUp = adminStateUp;
+         return self();
+      }
+   }
+
+   /**
+    * Create builder (inheriting from Builder).
+    */
+   public static class CreateBuilder extends Builder<CreateBuilder> {
+      /**
+       * Supply required properties for creating a VIP's CreateBuilder
+       */
+      private CreateBuilder(String subnetId, Protocol protocol, Integer port, String poolId) {
+         subnetId(subnetId).protocol(protocol).protocolPort(port).poolId(poolId);
+      }
+
+      /**
+       * Provides the tenantId for this VIP's Builder. Admin-only.
+       * When keystone is enabled, it is not mandatory to specify tenant_id for resources in create requests, as the
+       * tenant identifier will be derived from the Authentication token. Please note that the default authorization
+       * settings only allow administrative users to create resources on behalf of a different tenant.
+       *
+       * @return the Builder.
+       * @see VIP#getTenantId()
+       */
+      public CreateBuilder tenantId(String tenantId) {
+         vip.tenantId = tenantId;
+         return self();
+      }
+
+      /**
+       * Provides the subnet id for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getSubnetId()
+       */
+      public CreateBuilder subnetId(String subnetId) {
+         vip.subnetId = subnetId;
+         return self();
+      }
+
+      /**
+       * Provides the address for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getAddress()
+       */
+      public CreateBuilder address(String address) {
+         vip.address = address;
+         return self();
+      }
+
+      /**
+       * Provides the protocol for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getProtocol()
+       */
+      public CreateBuilder protocol(Protocol protocol) {
+         vip.protocol = protocol;
+         return self();
+      }
+
+      /**
+       * Provides the protocol port for this VIP's Builder.
+       *
+       * @return the Builder.
+       * @see VIP#getProtocolPort()
+       */
+      public CreateBuilder protocolPort(Integer protocolPort) {
+         vip.protocolPort = protocolPort;
+         return self();
+      }
+
+      /**
+       * @return a CreateVIP constructed with this Builder.
+       */
+      public CreateVIP build() {
+         return new CreateVIP(vip);
+      }
+
+      @Override
+      protected CreateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Update builder (inheriting from Builder).
+    */
+   public static class UpdateBuilder extends Builder<UpdateBuilder> {
+      /**
+       * Supply required properties for creating a VIP's UpdateBuilder.
+       */
+      private UpdateBuilder() {
+      }
+
+      /**
+       * @return a UpdateVIP constructed with this Builder.
+       */
+      public UpdateVIP build() {
+         return new UpdateVIP(vip);
+      }
+
+      @Override
+      protected UpdateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Create options - extend the domain class, passed to API create calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class CreateVIP extends VIP {
+      /**
+       * Copy constructor.
+       *
+       * @param vip the VIP to copy from.
+       */
+      private CreateVIP(VIP vip) {
+         super(vip);
+      }
+   }
+
+   /**
+    * Update options - extend the domain class, passed to API update calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class UpdateVIP extends VIP {
+      /**
+       * Copy constructor.
+       *
+       * @param vip the VIP to copy from.
+       */
+      private UpdateVIP(VIP vip) {
+         super(vip);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
new file mode 100644
index 0000000..f53223d
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIPs.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of of Neutron LBaaS v1 VIPs.
+ */
+public class VIPs extends PaginatedCollection<VIP> {
+   public static final VIPs EMPTY = new VIPs(ImmutableSet.<VIP> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({ "vips", "vips_links" })
+   protected VIPs(Iterable<VIP> vips, Iterable<Link> vipsLinks) {
+      super(vips, vipsLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
index 00af74d..60d23a3 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
@@ -28,6 +28,10 @@ public final class ExtensionNamespaces {
     * Neutron Security Groups Extension
     */
    public static final String SECURITY_GROUPS = "http://docs.openstack.org/ext/securitygroups/api/v2.0";
+   /**
+    * LBaaS Extension.
+    */
+   public static final String LBAAS = "http://wiki.openstack.org/neutron/LBaaS/API_1.0";
 
    private ExtensionNamespaces() {
       throw new AssertionError("intentionally unimplemented");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
new file mode 100644
index 0000000..dad80d8
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
@@ -0,0 +1,426 @@
+/*
+ * 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.lbaas.v1;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pool;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+import org.jclouds.openstack.neutron.v2.extensions.ExtensionNamespaces;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyHealthMonitorsFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyMembersFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyPoolsFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1.EmptyVIPsFallback;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.HealthMonitorsToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.MembersToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseHealthMonitors;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseMembers;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParsePools;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.ParseVIPs;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.PoolsToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.lbaas.v1.VIPsToPagedIterable;
+import org.jclouds.openstack.v2_0.ServiceType;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Payload;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to load-balancing operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * LBaaS v1 is an extension to load-balance the traffic between instances and external networks.
+ */
+@Beta
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.LBAAS)
+@Path("/lb")
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface LBaaSApi {
+
+   /**
+    * Returns a list of VIPs to which the tenant has access. Default policy settings return only
+    * those VIPs that are owned by the tenant who submits the request, unless the request is submitted by an
+    * user with administrative rights.
+    *
+    * @return the list of all VIP references configured for the tenant.
+    */
+   @Named("vip:list")
+   @GET
+   @Path("/vips")
+   @Transform(VIPsToPagedIterable.class)
+   @ResponseParser(ParseVIPs.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<VIP> listVIPs();
+
+   /**
+    * @return the list of all VIP references configured for the tenant.
+    */
+   @Named("vip:list")
+   @GET
+   @Path("/vips")
+   @ResponseParser(ParseVIPs.class)
+   @Fallback(EmptyVIPsFallback.class)
+   VIPs listVIPs(PaginationOptions options);
+
+   /**
+    * Returns the details for a specific VIP.
+    *
+    * @param id the id of the VIP to return.
+    * @return VIP or null if not found.
+    */
+   @Named("vip:get")
+   @GET
+   @Path("/vips/{id}")
+   @SelectJson("vip")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   VIP getVIP(@PathParam("id") String id);
+
+   /**
+    * Creates a new VIP.
+    *
+    * @param vip describes the VIP to be created.
+    * @return a reference of the newly-created VIP.
+    */
+   @Named("vip:create")
+   @POST
+   @Path("/vips")
+   @SelectJson("vip")
+   VIP createVIP(@WrapWith("vip") VIP.CreateVIP vip);
+
+   /**
+    * Update a VIP.
+    *
+    * @param id the id of the VIP to update.
+    * @param vip the VIP's attributes to update.
+    * @return a reference of the updated VIP.
+    */
+   @Named("vip:update")
+   @PUT
+   @Path("/vips/{id}")
+   @SelectJson("vip")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   VIP updateVIP(@PathParam("id") String id, @WrapWith("vip") VIP.UpdateVIP vip);
+
+   /**
+    * Deletes the specified VIP.
+    *
+    * @param id the id of the VIP to delete.
+    * @return true if delete successful, false if not.
+    */
+   @Named("vip:delete")
+   @DELETE
+   @Path("/vips/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean deleteVIP(@PathParam("id") String id);
+
+   /**
+    * Returns a list of Pools to which the tenant has access. Default policy settings return only
+    * those Pools that are owned by the tenant who submits the request, unless the request is submitted by an
+    * user with administrative rights.
+    *
+    * @return the list of all Pool references configured for the tenant.
+    */
+   @Named("pool:list")
+   @GET
+   @Path("/pools")
+   @Transform(PoolsToPagedIterable.class)
+   @ResponseParser(ParsePools.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<Pool> listPools();
+
+   /**
+    * @return the list of all Pool references configured for the tenant.
+    */
+   @Named("pool:list")
+   @GET
+   @Path("/pools")
+   @ResponseParser(ParsePools.class)
+   @Fallback(EmptyPoolsFallback.class)
+   Pools listPools(PaginationOptions options);
+
+   /**
+    * Returns the details for a specific Pool.
+    *
+    * @param id the id of the Pool to return.
+    * @return Pool or null if not found.
+    */
+   @Named("pool:get")
+   @GET
+   @Path("/pools/{id}")
+   @SelectJson("pool")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Pool getPool(@PathParam("id") String id);
+
+   /**
+    * Creates a new Pool.
+    *
+    * @param pool describes the Pool to be created.
+    * @return a reference of the newly-created Pool.
+    */
+   @Named("pool:create")
+   @POST
+   @Path("/pools")
+   @SelectJson("pool")
+   Pool createPool(@WrapWith("pool") Pool.CreatePool pool);
+
+   /**
+    * Update a Pool.
+    *
+    * @param id the id of the Pool to update.
+    * @param pool the Pool's attributes to update.
+    * @return a reference of the updated Pool.
+    */
+   @Named("pool:update")
+   @PUT
+   @Path("/pools/{id}")
+   @SelectJson("pool")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Pool updatePool(@PathParam("id") String id, @WrapWith("pool") Pool.UpdatePool pool);
+
+   /**
+    * Deletes the specified Pool.
+    *
+    * @param id the id of the Pool to delete.
+    * @return true if delete successful, false if not.
+    */
+   @Named("pool:delete")
+   @DELETE
+   @Path("/pools/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean deletePool(@PathParam("id") String id);
+
+   /**
+    * Returns a list of Members to which the tenant has access. Default policy settings return only
+    * those Members that are owned by the tenant who submits the request, unless the request is submitted by an
+    * user with administrative rights.
+    *
+    * @return the list of all Member references configured for the tenant.
+    */
+   @Named("member:list")
+   @GET
+   @Path("/members")
+   @Transform(MembersToPagedIterable.class)
+   @ResponseParser(ParseMembers.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<Member> listMembers();
+
+   /**
+    * @return the list of all Member references configured for the tenant.
+    */
+   @Named("member:list")
+   @GET
+   @Path("/members")
+   @ResponseParser(ParseMembers.class)
+   @Fallback(EmptyMembersFallback.class)
+   Members listMembers(PaginationOptions options);
+
+   /**
+    * Returns the details for a specific Member.
+    *
+    * @param id the id of the Member to return.
+    * @return Member or null if not found.
+    */
+   @Named("member:get")
+   @GET
+   @Path("/members/{id}")
+   @SelectJson("member")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Member getMember(@PathParam("id") String id);
+
+   /**
+    * Creates a new Member.
+    *
+    * @param member describes the Member to be created.
+    * @return a reference of the newly-created Member.
+    */
+   @Named("member:create")
+   @POST
+   @Path("/members")
+   @SelectJson("member")
+   Member createMember(@WrapWith("member") Member.CreateMember member);
+
+   /**
+    * Update a Member.
+    *
+    * @param id the id of the Member to update.
+    * @param member the Member's attributes to update.
+    * @return a reference of the updated Member.
+    */
+   @Named("member:update")
+   @PUT
+   @Path("/members/{id}")
+   @SelectJson("member")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Member updateMember(@PathParam("id") String id, @WrapWith("member") Member.UpdateMember member);
+
+   /**
+    * Deletes the specified Member.
+    *
+    * @param id the id of the Member to delete.
+    * @return true if delete successful, false if not.
+    */
+   @Named("member:delete")
+   @DELETE
+   @Path("/members/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean deleteMember(@PathParam("id") String id);
+
+   /**
+    * Returns a list of HealthMonitors to which the tenant has access. Default policy settings return only
+    * those HealthMonitors that are owned by the tenant who submits the request, unless the request is submitted by an
+    * user with administrative rights.
+    *
+    * @return the list of all HealthMonitor references configured for the tenant.
+    */
+   @Named("health_monitor:list")
+   @GET
+   @Path("/health_monitors")
+   @Transform(HealthMonitorsToPagedIterable.class)
+   @ResponseParser(ParseHealthMonitors.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<HealthMonitor> listHealthMonitors();
+
+   /**
+    * @return the list of all HealthMonitor references configured for the tenant.
+    */
+   @Named("health_monitor:list")
+   @GET
+   @Path("/health_monitors")
+   @ResponseParser(ParseHealthMonitors.class)
+   @Fallback(EmptyHealthMonitorsFallback.class)
+   HealthMonitors listHealthMonitors(PaginationOptions options);
+
+   /**
+    * Returns the details for a specific HealthMonitor.
+    *
+    * @param id the id of the HealthMonitor to return.
+    * @return Health Monitor or null if not found.
+    */
+   @Named("health_monitor:get")
+   @GET
+   @Path("/health_monitors/{id}")
+   @SelectJson("health_monitor")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   HealthMonitor getHealthMonitor(@PathParam("id") String id);
+
+   /**
+    * Creates a new HealthMonitor.
+    *
+    * @param healthMonitor describes the HealthMonitor to be created.
+    * @return a reference of the newly-created HealthMonitor.
+    */
+   @Named("health_monitor:create")
+   @POST
+   @Path("/health_monitors")
+   @SelectJson("health_monitor")
+   HealthMonitor createHealthMonitor(@WrapWith("health_monitor") HealthMonitor.CreateHealthMonitor healthMonitor);
+
+   /**
+    * Update a HealthMonitor.
+    *
+    * @param id the id of the HealthMonitor to update.
+    * @param healthMonitor the HealthMonitor's attributes to update.
+    * @return a reference of the updated HealthMonitor.
+    */
+   @Named("health_monitor:update")
+   @PUT
+   @Path("/health_monitors/{id}")
+   @SelectJson("health_monitor")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   HealthMonitor updateHealthMonitor(@PathParam("id") String id,
+         @WrapWith("health_monitor") HealthMonitor.UpdateHealthMonitor healthMonitor);
+
+   /**
+    * Deletes the specified Health Monitor.
+    *
+    * @param id the id of the Health Monitor to delete.
+    * @return true if delete successful, false if not.
+    */
+   @Named("health_monitor:delete")
+   @DELETE
+   @Path("/health_monitors/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean deleteHealthMonitor(@PathParam("id") String id);
+
+   /**
+    * Associate a HealthMonitor to a Pool.
+    *
+    * @param poolId the id of the Pool to associate.
+    * @param healthMonitorId the id of the HealthMonitor to associate.
+    * @return the newly associated HealthMonitor.
+    */
+   @Named("pool:associate_health_monitor")
+   @POST
+   @Path("/pools/{pool-id}/health_monitors")
+   @SelectJson("health_monitor")
+   @Payload("%7B\"health_monitor\":%7B\"id\":\"{healthMonitorId}\"%7D%7D")
+   @Produces(MediaType.APPLICATION_JSON)
+   HealthMonitor associateHealthMonitor(@PathParam("pool-id") String poolId,
+         @PayloadParam("healthMonitorId") String healthMonitorId);
+
+   /**
+    * Disassociate a HealthMonitor from a Pool.
+    *
+    * @param poolId the id of the Pool to disassociate.
+    * @param healthMonitorId the id of the HealthMonitor to disassociate.
+    * @return true if disassociate successful, false if not.
+    */
+   @Named("pool:disassociate_health_monitor")
+   @DELETE
+   @Path("/pools/{pool-id}/health_monitors/{health-monitor-id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean disassociateHealthMonitor(@PathParam("pool-id") String poolId,
+         @PathParam("health-monitor-id") String healthMonitorId);
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
new file mode 100644
index 0000000..f298a9c
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
@@ -0,0 +1,46 @@
+/*
+ * 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.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.util.concurrent.Futures.immediateFuture;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+import org.jclouds.rest.ResourceNotFoundException;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class EmptyHealthMonitorsFallback implements Fallback<HealthMonitors> {
+
+   public ListenableFuture<HealthMonitors> create(Throwable t) throws Exception {
+      return immediateFuture(createOrPropagate(t));
+   }
+
+   @Override
+   public HealthMonitors createOrPropagate(Throwable t) throws Exception {
+      if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+            || contains404(t)) {
+         return HealthMonitors.EMPTY;
+      }
+      throw propagate(t);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
new file mode 100644
index 0000000..1cbc38f
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
@@ -0,0 +1,46 @@
+/*
+ * 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.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.util.concurrent.Futures.immediateFuture;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+import org.jclouds.rest.ResourceNotFoundException;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class EmptyMembersFallback implements Fallback<Members> {
+
+   public ListenableFuture<Members> create(Throwable t) throws Exception {
+      return immediateFuture(createOrPropagate(t));
+   }
+
+   @Override
+   public Members createOrPropagate(Throwable t) throws Exception {
+      if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+            || contains404(t)) {
+         return Members.EMPTY;
+      }
+      throw propagate(t);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
new file mode 100644
index 0000000..8035c6f
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
@@ -0,0 +1,46 @@
+/*
+ * 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.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.util.concurrent.Futures.immediateFuture;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+import org.jclouds.rest.ResourceNotFoundException;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class EmptyPoolsFallback implements Fallback<Pools> {
+
+   public ListenableFuture<Pools> create(Throwable t) throws Exception {
+      return immediateFuture(createOrPropagate(t));
+   }
+
+   @Override
+   public Pools createOrPropagate(Throwable t) throws Exception {
+      if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+            || contains404(t)) {
+         return Pools.EMPTY;
+      }
+      throw propagate(t);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
new file mode 100644
index 0000000..df3aa90
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
@@ -0,0 +1,46 @@
+/*
+ * 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.fallbacks.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Throwables.propagate;
+import static com.google.common.util.concurrent.Futures.immediateFuture;
+import static org.jclouds.http.HttpUtils.contains404;
+import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
+
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+import org.jclouds.rest.ResourceNotFoundException;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+public class EmptyVIPsFallback implements Fallback<VIPs> {
+
+   public ListenableFuture<VIPs> create(Throwable t) throws Exception {
+      return immediateFuture(createOrPropagate(t));
+   }
+
+   @Override
+   public VIPs createOrPropagate(Throwable t) throws Exception {
+      if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)
+            || contains404(t)) {
+         return VIPs.EMPTY;
+      }
+      throw propagate(t);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/HealthMonitorsToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/HealthMonitorsToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/HealthMonitorsToPagedIterable.java
new file mode 100644
index 0000000..e925b81
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/HealthMonitorsToPagedIterable.java
@@ -0,0 +1,66 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
+import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Makes HealthMonitors work as a PagedIterable.
+ */
+public class HealthMonitorsToPagedIterable extends
+      Arg0ToPagedIterable.FromCaller<HealthMonitor, HealthMonitorsToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected HealthMonitorsToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<HealthMonitor>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final LBaaSApi lbaasApi = api.getLBaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<HealthMonitor>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<HealthMonitor> apply(Object input) {
+            PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+            return IterableWithMarker.class.cast(lbaasApi.listHealthMonitors(paginationOptions));
+         }
+
+         @Override
+         public String toString() {
+            return "listHealthMonitors()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/MembersToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/MembersToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/MembersToPagedIterable.java
new file mode 100644
index 0000000..23b1719
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/MembersToPagedIterable.java
@@ -0,0 +1,65 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;
+import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Makes Members work as a PagedIterable.
+ */
+public class MembersToPagedIterable extends Arg0ToPagedIterable.FromCaller<Member, MembersToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected MembersToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<Member>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final LBaaSApi lbaasApi = api.getLBaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<Member>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<Member> apply(Object input) {
+            PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+            return IterableWithMarker.class.cast(lbaasApi.listMembers(paginationOptions));
+         }
+
+         @Override
+         public String toString() {
+            return "listMembers()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseHealthMonitors.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseHealthMonitors.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseHealthMonitors.java
new file mode 100644
index 0000000..d74ceaf
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseHealthMonitors.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseHealthMonitors extends ParseJson<HealthMonitors> {
+
+   @Inject
+   public ParseHealthMonitors(Json json) {
+      super(json, TypeLiteral.get(HealthMonitors.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseMembers.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseMembers.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseMembers.java
new file mode 100644
index 0000000..252a5b0
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseMembers.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseMembers extends ParseJson<Members> {
+
+   @Inject
+   public ParseMembers(Json json) {
+      super(json, TypeLiteral.get(Members.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParsePools.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParsePools.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParsePools.java
new file mode 100644
index 0000000..adf81da
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParsePools.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParsePools extends ParseJson<Pools> {
+
+   @Inject
+   public ParsePools(Json json) {
+      super(json, TypeLiteral.get(Pools.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseVIPs.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseVIPs.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseVIPs.java
new file mode 100644
index 0000000..d97710c
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/ParseVIPs.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseVIPs extends ParseJson<VIPs> {
+
+   @Inject
+   public ParseVIPs(Json json) {
+      super(json, TypeLiteral.get(VIPs.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/PoolsToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/PoolsToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/PoolsToPagedIterable.java
new file mode 100644
index 0000000..c59b966
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/PoolsToPagedIterable.java
@@ -0,0 +1,65 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pool;
+import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Makes Pools work as a PagedIterable.
+ */
+public class PoolsToPagedIterable extends Arg0ToPagedIterable.FromCaller<Pool, PoolsToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected PoolsToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<Pool>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final LBaaSApi lbaasApi = api.getLBaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<Pool>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<Pool> apply(Object input) {
+            PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+            return IterableWithMarker.class.cast(lbaasApi.listPools(paginationOptions));
+         }
+
+         @Override
+         public String toString() {
+            return "listPools()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/VIPsToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/VIPsToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/VIPsToPagedIterable.java
new file mode 100644
index 0000000..5731b2f
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/lbaas/v1/VIPsToPagedIterable.java
@@ -0,0 +1,65 @@
+/*
+ * 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.functions.lbaas.v1;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIP;
+import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Makes VIPs work as a PagedIterable.
+ */
+public class VIPsToPagedIterable extends Arg0ToPagedIterable.FromCaller<VIP, VIPsToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected VIPsToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<VIP>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final LBaaSApi lbaasApi = api.getLBaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<VIP>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<VIP> apply(Object input) {
+            PaginationOptions paginationOptions = PaginationOptions.class.cast(input);
+            return IterableWithMarker.class.cast(lbaasApi.listVIPs(paginationOptions));
+         }
+
+         @Override
+         public String toString() {
+            return "listVIPs()";
+         }
+      };
+   }
+
+}


[20/50] [abbrv] jclouds git commit: Use AutoService to generate service loader metadata

Posted by na...@apache.org.
Use AutoService to generate service loader metadata


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0bc9fcfe
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0bc9fcfe
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0bc9fcfe

Branch: refs/heads/master
Commit: 0bc9fcfe06897d8ff619aba0da9653312c92ab77
Parents: e605633
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Mon Nov 17 13:33:08 2014 -0800
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Mon Dec 1 09:13:03 2014 -0800

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml                   |  5 +++++
 .../openstack/neutron/v2/NeutronApiMetadata.java |  2 ++
 .../neutron/v2_0/NeutronApiMetadata.java         |  2 ++
 .../services/org.jclouds.apis.ApiMetadata        | 19 -------------------
 4 files changed, 9 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0bc9fcfe/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 0c16f8d..52e2b24 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -101,6 +101,11 @@
       <artifactId>mockwebserver</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+        <groupId>com.google.auto.value</groupId>
+        <artifactId>auto-value</artifactId>
+        <scope>provided</scope>
+    </dependency>
   </dependencies>
 
   <profiles>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0bc9fcfe/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
index 043bed8..fec4e6a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
@@ -31,6 +31,7 @@ import org.jclouds.openstack.neutron.v2.config.NeutronHttpApiModule;
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
+import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Module;
 
@@ -38,6 +39,7 @@ import com.google.inject.Module;
  * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
  *
  */
+@AutoService(ApiMetadata.class)
 public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0bc9fcfe/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
index 6327f1e..8d5e51c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
@@ -32,6 +32,7 @@ import org.jclouds.openstack.neutron.v2_0.config.NeutronHttpApiModule;
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
+import com.google.auto.service.AutoService;
 import com.google.common.collect.ImmutableSet;
 import com.google.inject.Module;
 
@@ -39,6 +40,7 @@ import com.google.inject.Module;
  * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
  */
 @Deprecated
+@AutoService(ApiMetadata.class)
 public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0bc9fcfe/apis/openstack-neutron/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata b/apis/openstack-neutron/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
deleted file mode 100644
index 2365644..0000000
--- a/apis/openstack-neutron/src/main/resources/META-INF/services/org.jclouds.apis.ApiMetadata
+++ /dev/null
@@ -1,19 +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.
-#
-
-org.jclouds.openstack.neutron.v2_0.NeutronApiMetadata
-org.jclouds.openstack.neutron.v2.NeutronApiMetadata


[25/50] [abbrv] jclouds git commit: Next development version 2.0.0-SNAPSHOT

Posted by na...@apache.org.
Next development version 2.0.0-SNAPSHOT


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/70a409f8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/70a409f8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/70a409f8

Branch: refs/heads/master
Commit: 70a409f8cbd1e304ea010f2eee5238e50e77bddb
Parents: 550c3e3
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Mar 24 11:02:39 2015 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Mar 24 11:02:39 2015 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/70a409f8/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 9614f9d..15e0225 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -22,14 +22,14 @@
   <parent>
     <groupId>org.apache.jclouds</groupId>
     <artifactId>jclouds-project</artifactId>
-    <version>1.9.0</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath />
   </parent>
 
   <!-- TODO: when out of labs, switch to org.jclouds.api -->
   <groupId>org.apache.jclouds.labs</groupId>
   <artifactId>openstack-neutron</artifactId>
-  <version>1.9.0</version>
+  <version>2.0.0-SNAPSHOT</version>
   <name>jclouds openstack-neutron api</name>
   <description>jclouds components to access an implementation of OpenStack Neutron</description>
   <packaging>bundle</packaging>


[11/50] [abbrv] jclouds git commit: Support LBaaS v1

Posted by na...@apache.org.
Support LBaaS v1


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0c82ed9f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0c82ed9f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0c82ed9f

Branch: refs/heads/master
Commit: 0c82ed9fe14463bb5f5455da9ce0097cab94d3ba
Parents: 5827b72
Author: fbrouille <f....@akka.eu>
Authored: Wed Oct 1 11:34:03 2014 +0200
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Thu Oct 2 15:03:17 2014 -0500

----------------------------------------------------------------------
 .../openstack/neutron/v2/NeutronApi.java        |   12 +-
 .../neutron/v2/config/NeutronHttpApiModule.java |    2 +
 .../v2/domain/lbaas/v1/HealthMonitor.java       |  451 +++++
 .../v2/domain/lbaas/v1/HealthMonitorStatus.java |  101 +
 .../v2/domain/lbaas/v1/HealthMonitors.java      |   37 +
 .../neutron/v2/domain/lbaas/v1/HttpMethod.java  |   75 +
 .../neutron/v2/domain/lbaas/v1/LBaaSStatus.java |   78 +
 .../neutron/v2/domain/lbaas/v1/Member.java      |  368 ++++
 .../neutron/v2/domain/lbaas/v1/Members.java     |   36 +
 .../neutron/v2/domain/lbaas/v1/Pool.java        |  482 +++++
 .../neutron/v2/domain/lbaas/v1/PoolStatus.java  |  101 +
 .../neutron/v2/domain/lbaas/v1/Pools.java       |   36 +
 .../neutron/v2/domain/lbaas/v1/ProbeType.java   |   70 +
 .../neutron/v2/domain/lbaas/v1/Protocol.java    |   67 +
 .../v2/domain/lbaas/v1/SessionPersistence.java  |  183 ++
 .../neutron/v2/domain/lbaas/v1/VIP.java         |  493 +++++
 .../neutron/v2/domain/lbaas/v1/VIPs.java        |   36 +
 .../v2/extensions/ExtensionNamespaces.java      |    4 +
 .../v2/extensions/lbaas/v1/LBaaSApi.java        |  426 +++++
 .../lbaas/v1/EmptyHealthMonitorsFallback.java   |   46 +
 .../lbaas/v1/EmptyMembersFallback.java          |   46 +
 .../fallbacks/lbaas/v1/EmptyPoolsFallback.java  |   46 +
 .../fallbacks/lbaas/v1/EmptyVIPsFallback.java   |   46 +
 .../lbaas/v1/HealthMonitorsToPagedIterable.java |   66 +
 .../lbaas/v1/MembersToPagedIterable.java        |   65 +
 .../functions/lbaas/v1/ParseHealthMonitors.java |   38 +
 .../v2/functions/lbaas/v1/ParseMembers.java     |   38 +
 .../v2/functions/lbaas/v1/ParsePools.java       |   38 +
 .../v2/functions/lbaas/v1/ParseVIPs.java        |   38 +
 .../lbaas/v1/PoolsToPagedIterable.java          |   65 +
 .../functions/lbaas/v1/VIPsToPagedIterable.java |   65 +
 .../extensions/lbaas/v1/LBaaSApiLiveTest.java   |  637 +++++++
 .../extensions/lbaas/v1/LBaaSApiMockTest.java   | 1787 ++++++++++++++++++
 .../extension_list_with_lbaas_v1_response.json  |  140 ++
 ...xtension_list_without_lbaas_v1_response.json |  132 ++
 .../lbaas/v1/health_monitor_create_request.json |    8 +
 .../v1/health_monitor_create_response.json      |   16 +
 .../lbaas/v1/health_monitor_get_response.json   |   16 +
 .../v1/health_monitor_list_response_paged1.json |   20 +
 .../v1/health_monitor_list_response_paged2.json |   23 +
 .../lbaas/v1/health_monitor_update_request.json |   11 +
 .../v1/health_monitor_update_response.json      |   16 +
 .../lbaas/v1/member_create_request.json         |    6 +
 .../lbaas/v1/member_create_response.json        |   12 +
 .../resources/lbaas/v1/member_get_response.json |   12 +
 .../lbaas/v1/member_list_response_paged1.json   |   20 +
 .../lbaas/v1/member_list_response_paged2.json   |   20 +
 .../lbaas/v1/member_update_request.json         |    7 +
 .../lbaas/v1/member_update_response.json        |   12 +
 .../pool_associate_health_monitor_request.json  |    5 +
 .../pool_associate_health_monitor_response.json |    4 +
 .../resources/lbaas/v1/pool_create_request.json |    8 +
 .../lbaas/v1/pool_create_response.json          |   18 +
 .../resources/lbaas/v1/pool_get_response.json   |   35 +
 .../lbaas/v1/pool_list_response_paged1.json     |   46 +
 .../lbaas/v1/pool_list_response_paged2.json     |   42 +
 .../resources/lbaas/v1/pool_update_request.json |   11 +
 .../lbaas/v1/pool_update_response.json          |   29 +
 .../resources/lbaas/v1/vip_create_request.json  |    9 +
 .../resources/lbaas/v1/vip_create_response.json |   17 +
 .../resources/lbaas/v1/vip_get_response.json    |   21 +
 .../lbaas/v1/vip_list_response_paged1.json      |   29 +
 .../lbaas/v1/vip_list_response_paged2.json      |   29 +
 .../resources/lbaas/v1/vip_update_request.json  |   13 +
 .../resources/lbaas/v1/vip_update_response.json |   21 +
 65 files changed, 6886 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
index b54fa39..983fe94 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
@@ -22,12 +22,12 @@ 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.FloatingIPApi;
 import org.jclouds.openstack.neutron.v2.extensions.RouterApi;
 import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
+import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
 import org.jclouds.openstack.neutron.v2.features.NetworkApi;
 import org.jclouds.openstack.neutron.v2.features.PortApi;
 import org.jclouds.openstack.neutron.v2.features.SubnetApi;
@@ -103,4 +103,14 @@ public interface NeutronApi extends Closeable {
     */
    @Delegate
    Optional<SecurityGroupApi> getSecurityGroupApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
+
+   /**
+    * Provides access to LBaaS features.
+    *
+    * <h3>NOTE</h3>
+    * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
+    * to determine if it is present.
+    */
+   @Delegate
+   Optional<LBaaSApi> getLBaaSApi(@EndpointParam(parser = RegionToEndpoint.class) String region);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index f05439a..e7b33c6 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -67,6 +67,8 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
                URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"))
           .put(URI.create(ExtensionNamespaces.SECURITY_GROUPS),
                URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"))
+          .put(URI.create(ExtensionNamespaces.LBAAS),
+                  URI.create("http://docs.openstack.org/networking/ext/lbaas/api/v1.0"))
           .build();
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
new file mode 100644
index 0000000..29ec991
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
@@ -0,0 +1,451 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableList;
+
+/**
+ * A Neutron LBaaS v1 HealthMonitor.
+ */
+public class HealthMonitor {
+
+   // Mandatory attributes when creating
+   @Named("tenant_id")
+   private String tenantId;
+   private ProbeType type;
+   // Mandatory attributes that can be updated
+   private Integer delay;
+   private Integer timeout;
+   @Named("max_retries")
+   private Integer maxRetries;
+   // Optional attributes that can be updated
+   @Named("http_method")
+   private HttpMethod httpMethod;
+   @Named("url_path")
+   private String urlPath;
+   @Named("expected_codes")
+   private String expectedCodes;
+   @Named("admin_state_up")
+   private Boolean adminStateUp;
+   // Read-only attributes
+   private String id;
+   private ImmutableList<PoolStatus> pools;
+   private LBaaSStatus status;
+   @Named("status_description")
+   private String statusDescription;
+
+   /**
+    * Deserialization constructor
+    */
+   @ConstructorProperties({ "id", "tenant_id", "type", "delay", "timeout", "max_retries", "http_method", "url_path",
+         "expected_codes", "pools", "admin_state_up", "status", "status_description" })
+   private HealthMonitor(String id, String tenantId, ProbeType type, Integer delay, Integer timeout,
+         Integer maxRetries, HttpMethod httpMethod, String urlPath, String expectedCodes,
+         ImmutableList<PoolStatus> pools, Boolean adminStateUp, LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.tenantId = tenantId;
+      this.type = type;
+      this.delay = delay;
+      this.timeout = timeout;
+      this.maxRetries = maxRetries;
+      this.httpMethod = httpMethod;
+      this.urlPath = urlPath;
+      this.expectedCodes = expectedCodes;
+      this.pools = pools;
+      this.adminStateUp = adminStateUp;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * Default constructor.
+    */
+   private HealthMonitor() {
+   }
+
+   /**
+    * Copy constructor.
+    *
+    * @param healthMonitor the HealthMonitor to copy from.
+    */
+   private HealthMonitor(HealthMonitor healthMonitor) {
+      this(healthMonitor.id, healthMonitor.tenantId, healthMonitor.type, healthMonitor.delay, healthMonitor.timeout,
+            healthMonitor.maxRetries, healthMonitor.httpMethod, healthMonitor.urlPath, healthMonitor.expectedCodes,
+            healthMonitor.pools, healthMonitor.adminStateUp, healthMonitor.status, healthMonitor.statusDescription);
+   }
+
+   /**
+    * @return the id of the HealthMonitor.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the tenant id of the HealthMonitor.
+    */
+   @Nullable
+   public String getTenantId() {
+      return tenantId;
+   }
+
+   /**
+    * @return the probe type for this HealthMonitor.
+    */
+   @Nullable
+   public ProbeType getType() {
+      return type;
+   }
+
+   /**
+    * @return the delay for this HealthMonitor.
+    */
+   @Nullable
+   public Integer getDelay() {
+      return delay;
+   }
+
+   /**
+    * @return the timeout for this HealthMonitor.
+    */
+   @Nullable
+   public Integer getTimeout() {
+      return timeout;
+   }
+
+   /**
+    * @return the max retries for this HealthMonitor.
+    */
+   @Nullable
+   public Integer getMaxRetries() {
+      return maxRetries;
+   }
+
+   /**
+    * @return the HTTP method for this HealthMonitor.
+    */
+   @Nullable
+   public HttpMethod getHttpMethod() {
+      return httpMethod;
+   }
+
+   /**
+    * @return the URL path for this HealthMonitor.
+    */
+   @Nullable
+   public String getUrlPath() {
+      return urlPath;
+   }
+
+   /**
+    * @return the expected codes for this HealthMonitor.
+    */
+   @Nullable
+   public String getExpectedCodes() {
+      return expectedCodes;
+   }
+
+   /**
+    * @return the pools for this HealthMonitor.
+    */
+   @Nullable
+   public ImmutableList<PoolStatus> getPools() {
+      return pools;
+   }
+
+   /**
+    * @return the administrative state for this HealthMonitor.
+    */
+   @Nullable
+   public Boolean getAdminStateUp() {
+      return adminStateUp;
+   }
+
+   /**
+    * @return the status for this HealthMonitor.
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description for this HealthMonitor.
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+
+      HealthMonitor that = (HealthMonitor) o;
+
+      return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId)
+            && Objects.equal(this.type, that.type) && Objects.equal(this.delay, that.delay)
+            && Objects.equal(this.timeout, that.timeout) && Objects.equal(this.maxRetries, that.maxRetries)
+            && Objects.equal(this.httpMethod, that.httpMethod) && Objects.equal(this.urlPath, that.urlPath)
+            && Objects.equal(this.expectedCodes, that.expectedCodes) && Objects.equal(this.pools, that.pools)
+            && Objects.equal(this.adminStateUp, that.adminStateUp) && Objects.equal(this.status, that.status)
+            && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, tenantId, type, delay, timeout, maxRetries, httpMethod, urlPath, expectedCodes,
+            pools, adminStateUp, status, statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("type", type)
+            .add("delay", delay).add("timeout", timeout).add("maxRetries", maxRetries).add("httpMethod", httpMethod)
+            .add("urlPath", urlPath).add("expectedCodes", expectedCodes).add("pools", pools)
+            .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
+            .toString();
+   }
+
+   /*
+    * Methods to get the Create and Update builders follow.
+    */
+
+   /**
+    * @return the Builder for creating a new HealthMonitor.
+    */
+   public static CreateBuilder createBuilder(ProbeType type, Integer delay, Integer timeout, Integer maxRetries) {
+      return new CreateBuilder(type, delay, timeout, maxRetries);
+   }
+
+   /**
+    * @return the Builder for updating a HealthMonitor.
+    */
+   public static UpdateBuilder updateBuilder() {
+      return new UpdateBuilder();
+   }
+
+   private abstract static class Builder<ParameterizedBuilderType> {
+      protected HealthMonitor healthMonitor;
+
+      /**
+       * Default constructor.
+       */
+      private Builder() {
+         healthMonitor = new HealthMonitor();
+      }
+
+      protected abstract ParameterizedBuilderType self();
+
+      /**
+       * Provides the delay for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getDelay()
+       */
+      public ParameterizedBuilderType delay(Integer delay) {
+         healthMonitor.delay = delay;
+         return self();
+      }
+
+      /**
+       * Provides the timeout for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getTimeout()
+       */
+      public ParameterizedBuilderType timeout(Integer timeout) {
+         healthMonitor.timeout = timeout;
+         return self();
+      }
+
+      /**
+       * Provides the max retries for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getMaxRetries()
+       */
+      public ParameterizedBuilderType maxRetries(Integer maxRetries) {
+         healthMonitor.maxRetries = maxRetries;
+         return self();
+      }
+
+      /**
+       * Provides the HTTP method for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getHttpMethod()
+       */
+      public ParameterizedBuilderType httpMethod(HttpMethod httpMethod) {
+         healthMonitor.httpMethod = httpMethod;
+         return self();
+      }
+
+      /**
+       * Provides the URL path for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getUrlPath()
+       */
+      public ParameterizedBuilderType urlPath(String urlPath) {
+         healthMonitor.urlPath = urlPath;
+         return self();
+      }
+
+      /**
+       * Provides the expected codes for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getExpectedCodes()
+       */
+      public ParameterizedBuilderType expectedCodes(String expectedCodes) {
+         healthMonitor.expectedCodes = expectedCodes;
+         return self();
+      }
+
+      /**
+       * Provides the administrative state for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getAdminStateUp()
+       */
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+         healthMonitor.adminStateUp = adminStateUp;
+         return self();
+      }
+   }
+
+   /**
+    * Create builder (inheriting from Builder).
+    */
+   public static class CreateBuilder extends Builder<CreateBuilder> {
+      /**
+       * Supply required properties for creating a HealthMonitor's CreateBuilder.
+       *
+       * @param type the probe type.
+       * @param delay the delay.
+       * @param timeout the timeout.
+       * @param maxRetries the max retries.
+       */
+      private CreateBuilder(ProbeType type, Integer delay, Integer timeout, Integer maxRetries) {
+         type(type).delay(delay).timeout(timeout).maxRetries(maxRetries);
+      }
+
+      /**
+       * Provides the tenantId for this HealthMonitor's CreateBuilder. Admin-only.
+       * When keystone is enabled, it is not mandatory to specify tenant_id for resources in create requests, as the
+       * tenant identifier will be derived from the Authentication token. Please note that the default authorization
+       * settings only allow administrative users to create resources on behalf of a different tenant.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getTenantId()
+       */
+      public CreateBuilder tenantId(String tenantId) {
+         healthMonitor.tenantId = tenantId;
+         return self();
+      }
+
+      /**
+       * Provides the probe type for this HealthMonitor's Builder.
+       *
+       * @return the Builder.
+       * @see HealthMonitor#getType()
+       */
+      public CreateBuilder type(ProbeType type) {
+         healthMonitor.type = type;
+         return self();
+      }
+
+      /**
+       * @return a CreateHealthMonitor constructed with this Builder.
+       */
+      public CreateHealthMonitor build() {
+         return new CreateHealthMonitor(healthMonitor);
+      }
+
+      @Override
+      protected CreateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Update builder (inheriting from Builder).
+    */
+   public static class UpdateBuilder extends Builder<UpdateBuilder> {
+      /**
+       * Supply required properties for creating a HealthMonitor's UpdateBuilder.
+       */
+      private UpdateBuilder() {
+      }
+
+      /**
+       * @return an UpdateHealthMonitor constructed with this Builder.
+       */
+      public UpdateHealthMonitor build() {
+         return new UpdateHealthMonitor(healthMonitor);
+      }
+
+      @Override
+      protected UpdateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Create options - extend the domain class, passed to API create calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class CreateHealthMonitor extends HealthMonitor {
+      /**
+       * Copy constructor.
+       *
+       * @param healthMonitor the HealthMonitor to copy from.
+       */
+      private CreateHealthMonitor(HealthMonitor healthMonitor) {
+         super(healthMonitor);
+      }
+   }
+
+   /**
+    * Update options - extend the domain class, passed to API update calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class UpdateHealthMonitor extends HealthMonitor {
+      /**
+       * Copy constructor.
+       *
+       * @param healthMonitor the HealthMonitor to copy from.
+       */
+      private UpdateHealthMonitor(HealthMonitor healthMonitor) {
+         super(healthMonitor);
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
new file mode 100644
index 0000000..ad8d468
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
@@ -0,0 +1,101 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 HealthMonitorStatus.
+ * Contains an id and status describing the health monitor's status.
+ *
+ * @see Pool#getHealthMonitorsStatus()
+ */
+public class HealthMonitorStatus {
+
+   // Mandatory attributes
+   @Named("monitor_id")
+   protected final String id;
+   protected final LBaaSStatus status;
+   // Optional attributes
+   @Named("status_description")
+   protected final String statusDescription;
+
+   @ConstructorProperties({ "monitor_id", "status", "status_description" })
+   protected HealthMonitorStatus(String id, LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * @return the id of the HealthMonitorStatus.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the status of the HealthMonitorStatus
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description of the HealthMonitorStatus
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, status, statusDescription);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null || getClass() != obj.getClass())
+         return false;
+      HealthMonitorStatus that = HealthMonitorStatus.class.cast(obj);
+      return Objects.equal(this.id, that.id) && Objects.equal(this.status, that.status)
+            && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
+            .add("statusDescription", statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitors.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitors.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitors.java
new file mode 100644
index 0000000..a254938
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitors.java
@@ -0,0 +1,37 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of Neutron LBaaS v1 HealthMonitors.
+ */
+public class HealthMonitors extends PaginatedCollection<HealthMonitor> {
+   public static final HealthMonitors EMPTY = new HealthMonitors(ImmutableSet.<HealthMonitor> of(),
+         ImmutableSet.<Link> of());
+
+   @ConstructorProperties({ "health_monitors", "health_monitors_links" })
+   protected HealthMonitors(Iterable<HealthMonitor> healthMonitors, Iterable<Link> healthMonitorsLinks) {
+      super(healthMonitors, healthMonitorsLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HttpMethod.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HttpMethod.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HttpMethod.java
new file mode 100644
index 0000000..f795c66
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HttpMethod.java
@@ -0,0 +1,75 @@
+/*
+ * 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.domain.lbaas.v1;
+
+
+/**
+ * Enumerates supported HTTP methods used by probes of type HTTP/HTTPS that are sent by health monitor to verify member state.
+ */
+public enum HttpMethod {
+   /**
+    * Health monitor sends a GET HTTP request to the member.
+    */
+   GET("GET"),
+   /**
+    * Health monitor sends a POST HTTP request to the member.
+    */
+   POST("POST"),
+   /**
+    * Health monitor sends a PUT HTTP request to the member.
+    */
+   PUT("PUT"),
+   /**
+    * Health monitor sends a DELETE HTTP request to the member.
+    */
+   DELETE("DELETE"),
+   /**
+    * Health monitor sends a HEAD HTTP request to the member.
+    */
+   HEAD("HEAD"),
+   /**
+    * Used by jclouds when the service returns an unknown value other than null.
+    */
+   UNRECOGNIZED("unrecognized");
+
+   private String name;
+
+   private HttpMethod(String name) {
+      this.name = name;
+   }
+
+   @Override
+   public String toString() {
+      return name;
+   }
+
+   /*
+    * This provides GSON enum support in jclouds.
+    * */
+   public static HttpMethod fromValue(String name){
+      if (name != null) {
+         for (HttpMethod value : HttpMethod.values()) {
+            if (name.equalsIgnoreCase(value.name)) {
+               return value;
+            }
+         }
+         return UNRECOGNIZED;
+      }
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/LBaaSStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/LBaaSStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/LBaaSStatus.java
new file mode 100644
index 0000000..85820fc
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/LBaaSStatus.java
@@ -0,0 +1,78 @@
+/*
+ * 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.domain.lbaas.v1;
+
+/**
+ * Enumerates supported Neutron LBaaS v1 resources status.
+ */
+public enum LBaaSStatus {
+   /**
+    * The LBaaS v1 resource is ready and active.
+    */
+   ACTIVE("active"),
+   /**
+    * The LBaaS v1 resource is being created.
+    */
+   PENDING_CREATE("pending_create"),
+   /**
+    * The LBaaS v1 resource is being updated.
+    */
+   PENDING_UPDATE("pending_update"),
+   /**
+    * The LBaaS v1 resource is going to be deleted.
+    */
+   PENDING_DELETE("pending_delete"),
+   /**
+    * The LBaaS v1 resource is created but not active.
+    */
+   INACTIVE("inactive"),
+   /**
+    * The LBaaS v1 resource is in an error state.
+    */
+   ERROR("error"),
+   /**
+    * Used by jclouds when the service returns an unknown value other than null.
+    */
+   UNRECOGNIZED("unrecognized");
+
+   private String name;
+
+   private LBaaSStatus(String name) {
+      this.name = name;
+   }
+
+   @Override
+   public String toString() {
+      return name;
+   }
+
+   /*
+    * This provides GSON enum support in jclouds.
+    * */
+   public static LBaaSStatus fromValue(String name){
+      if (name != null) {
+         for (LBaaSStatus value : LBaaSStatus.values()) {
+            if (name.equalsIgnoreCase(value.name)) {
+               return value;
+            }
+         }
+         return UNRECOGNIZED;
+      }
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
new file mode 100644
index 0000000..bff6cfe
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
@@ -0,0 +1,368 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 Member.
+ */
+public class Member {
+
+   // Mandatory attributes when creating
+   @Named("tenant_id")
+   private String tenantId;
+   private String address;
+   @Named("protocol_port")
+   private Integer protocolPort;
+   // Mandatory attributes that can be updated
+   @Named("pool_id")
+   private String poolId;
+   // Optional attributes that can be updated
+   private Integer weight;
+   @Named("admin_state_up")
+   private Boolean adminStateUp;
+   // Read-only attributes
+   private String id;
+   private LBaaSStatus status;
+   @Named("status_description")
+   private String statusDescription;
+
+   /**
+    * Deserialization constructor.
+    */
+   @ConstructorProperties({ "id", "tenant_id", "pool_id", "address", "protocol_port", "weight", "admin_state_up",
+         "status", "status_description" })
+   private Member(String id, String tenantId, String poolId, String address, Integer protocolPort, Integer weight,
+         Boolean adminStateUp, LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.tenantId = tenantId;
+      this.poolId = poolId;
+      this.address = address;
+      this.protocolPort = protocolPort;
+      this.weight = weight;
+      this.adminStateUp = adminStateUp;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * Default constructor.
+    */
+   private Member() {
+   }
+
+   /**
+    * Copy constructor.
+    *
+    * @param member the Member to copy from.
+    */
+   private Member(Member member) {
+      this(member.id, member.tenantId, member.poolId, member.address, member.protocolPort, member.weight,
+            member.adminStateUp, member.status, member.statusDescription);
+   }
+
+   /**
+    * @return the id of the Member.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the tenant id of the Member.
+    */
+   @Nullable
+   public String getTenantId() {
+      return tenantId;
+   }
+
+   /**
+    * @return the pool id for this Member.
+    */
+   @Nullable
+   public String getPoolId() {
+      return poolId;
+   }
+
+   /**
+    * @return the address for this Member.
+    */
+   @Nullable
+   public String getAddress() {
+      return address;
+   }
+
+   /**
+    * @return the protocol port for this Member.
+    */
+   @Nullable
+   public Integer getProtocolPort() {
+      return protocolPort;
+   }
+
+   /**
+    * @return the weight for this Member.
+    */
+   @Nullable
+   public Integer getWeight() {
+      return weight;
+   }
+
+   /**
+    * @return the administrative state for this Member.
+    */
+   @Nullable
+   public Boolean getAdminStateUp() {
+      return adminStateUp;
+   }
+
+   /**
+    * @return the status for this Member.
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description for this Member.
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+
+      Member that = (Member) o;
+
+      return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId)
+            && Objects.equal(this.poolId, that.poolId) && Objects.equal(this.address, that.address)
+            && Objects.equal(this.protocolPort, that.protocolPort) && Objects.equal(this.weight, that.weight)
+            && Objects.equal(this.adminStateUp, that.adminStateUp) && Objects.equal(this.status, that.status)
+            && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, tenantId, poolId, address, protocolPort, weight, adminStateUp, status,
+            statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("poolId", poolId)
+            .add("address", address).add("protocolPort", protocolPort).add("weight", weight)
+            .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
+            .toString();
+   }
+
+   /*
+    * Methods to get the Create and Update builders follow.
+    */
+
+   /**
+    * @return the Builder for creating a new Member.
+    */
+   public static CreateBuilder createBuilder(String poolId, String address, Integer port) {
+      return new CreateBuilder(poolId, address, port);
+   }
+
+   /**
+    * @return the Builder for updating a Member.
+    */
+   public static UpdateBuilder updateBuilder() {
+      return new UpdateBuilder();
+   }
+
+   private abstract static class Builder<ParameterizedBuilderType> {
+      protected Member member;
+
+      /**
+       * Default constructor.
+       */
+      private Builder() {
+         member = new Member();
+      }
+
+      protected abstract ParameterizedBuilderType self();
+
+      /**
+       * Provides the pool id for this Member's Builder.
+       *
+       * @return the Builder.
+       * @see Member#getPoolId()
+       */
+      public ParameterizedBuilderType poolId(String poolId) {
+         member.poolId = poolId;
+         return self();
+      }
+
+      /**
+       * Provides the weight for this Member's Builder.
+       *
+       * @return the Builder.
+       * @see Member#getWeight()
+       */
+      public ParameterizedBuilderType weight(Integer weight) {
+         member.weight = weight;
+         return self();
+      }
+
+      /**
+       * Provides the administrative state for this Member's Builder.
+       *
+       * @return the Builder.
+       * @see Member#getAdminStateUp()
+       */
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+         member.adminStateUp = adminStateUp;
+         return self();
+      }
+   }
+
+   /**
+    * Create builder (inheriting from Builder).
+    */
+   public static class CreateBuilder extends Builder<CreateBuilder> {
+      /**
+       * Supply required properties for creating a Member's CreateBuilder.
+       *
+       * @param poolId the pool id.
+       * @param address the IP address.
+       * @param port the protocol port.
+       */
+      private CreateBuilder(String poolId, String address, Integer port) {
+         poolId(poolId).address(address).protocolPort(port);
+      }
+
+      /**
+       * Provides the tenantId for this Member's Builder. Admin-only.
+       * When keystone is enabled, it is not mandatory to specify tenant_id for resources in create requests, as the
+       * tenant identifier will be derived from the Authentication token. Please note that the default authorization
+       * settings only allow administrative users to create resources on behalf of a different tenant.
+       *
+       * @return the Builder.
+       * @see Member#getTenantId()
+       */
+      public CreateBuilder tenantId(String tenantId) {
+         member.tenantId = tenantId;
+         return self();
+      }
+
+      /**
+       * Provides the address for this Member's Builder.
+       *
+       * @return the Builder.
+       * @see Member#getAddress()
+       */
+      public CreateBuilder address(String address) {
+         member.address = address;
+         return self();
+      }
+
+      /**
+       * Provides the protocol port for this Member's Builder.
+       *
+       * @return the Builder.
+       * @see Member#getProtocolPort()
+       */
+      public CreateBuilder protocolPort(Integer protocolPort) {
+         member.protocolPort = protocolPort;
+         return self();
+      }
+
+      /**
+       * @return a CreateMember constructed with this Builder.
+       */
+      public CreateMember build() {
+         return new CreateMember(member);
+      }
+
+      @Override
+      protected CreateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Update builder (inheriting from Builder).
+    */
+   public static class UpdateBuilder extends Builder<UpdateBuilder> {
+      /**
+       * Supply required properties for creating a Member's UpdateBuilder.
+       */
+      private UpdateBuilder() {
+      }
+
+      /**
+       * @return a UpdateMember constructed with this Builder.
+       */
+      public UpdateMember build() {
+         return new UpdateMember(member);
+      }
+
+      @Override
+      protected UpdateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Create options - extend the domain class, passed to API create calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class CreateMember extends Member {
+      /**
+       * Copy constructor.
+       *
+       * @param member the Member to copy from.
+       */
+      private CreateMember(Member member) {
+         super(member);
+      }
+   }
+
+   /**
+    * Update options - extend the domain class, passed to API update calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class UpdateMember extends Member {
+      /**
+       * Copy constructor.
+       *
+       * @param member the Member to copy from.
+       */
+      private UpdateMember(Member member) {
+         super(member);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Members.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Members.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Members.java
new file mode 100644
index 0000000..74a464d
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Members.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of of Neutron LBaaS v1 Members.
+ */
+public class Members extends PaginatedCollection<Member> {
+   public static final Members EMPTY = new Members(ImmutableSet.<Member> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({ "members", "members_links" })
+   protected Members(Iterable<Member> members, Iterable<Link> membersLinks) {
+      super(members, membersLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
new file mode 100644
index 0000000..5139141
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
@@ -0,0 +1,482 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A Neutron LBaaS v1 Pool.
+ */
+public class Pool {
+
+   // Load balancing methods that must be supported by all providers.
+   // Not an enum type because any provider may support additional balancing methods.
+   public static String ROUND_ROBIN = "ROUND_ROBIN";
+   public static String LEAST_CONNECTIONS = "LEAST_CONNECTIONS";
+   public static String SOURCE_IP = "SOURCE_IP";
+
+   // Mandatory attributes when creating
+   @Named("tenant_id")
+   private String tenantId;
+   @Named("subnet_id")
+   private String subnetId;
+   private Protocol protocol;
+   // Mandatory attributes that can be updated
+   @Named("lb_method")
+   private String lbMethod;
+   // Optional attributes when creating
+   private String provider;
+   // Optional attributes that can be updated
+   private String name;
+   private String description;
+   @Named("health_monitors")
+   private ImmutableSet<String> healthMonitors;
+   @Named("admin_state_up")
+   private Boolean adminStateUp;
+   // Read-only attributes
+   private String id;
+   @Named("vip_id")
+   private String vipId;
+   private ImmutableSet<String> members;
+   @Named("health_monitors_status")
+   private ImmutableList<HealthMonitorStatus> healthMonitorsStatus;
+   private LBaaSStatus status;
+   @Named("status_description")
+   private String statusDescription;
+
+   /**
+    * Deserialization constructor.
+    */
+   @ConstructorProperties({ "id", "tenant_id", "vip_id", "name", "description", "subnet_id", "protocol", "provider",
+         "lb_method", "health_monitors", "health_monitors_status", "members", "admin_state_up", "status",
+         "status_description" })
+   private Pool(String id, String tenantId, String vipId, String name, String description, String subnetId,
+         Protocol protocol, String provider, String lbMethod, ImmutableSet<String> healthMonitors,
+         ImmutableList<HealthMonitorStatus> healthMonitorsStatus, ImmutableSet<String> members, Boolean adminStateUp,
+         LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.tenantId = tenantId;
+      this.vipId = vipId;
+      this.name = name;
+      this.description = description;
+      this.subnetId = subnetId;
+      this.protocol = protocol;
+      this.provider = provider;
+      this.lbMethod = lbMethod;
+      this.healthMonitors = healthMonitors;
+      this.healthMonitorsStatus = healthMonitorsStatus;
+      this.members = members;
+      this.adminStateUp = adminStateUp;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * Default constructor.
+    */
+   private Pool() {
+   }
+
+   /**
+    * Copy constructor.
+    *
+    * @param pool the Pool to copy from.
+    */
+   private Pool(Pool pool) {
+      this(pool.id, pool.tenantId, pool.vipId, pool.name, pool.description, pool.subnetId, pool.protocol,
+            pool.provider, pool.lbMethod, pool.healthMonitors, pool.healthMonitorsStatus, pool.members,
+            pool.adminStateUp, pool.status, pool.statusDescription);
+   }
+
+   /**
+    * @return the id of the Pool.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the tenant id of the Pool.
+    */
+   @Nullable
+   public String getTenantId() {
+      return tenantId;
+   }
+
+   /**
+    * @return the virtual IP id of the Pool.
+    */
+   @Nullable
+   public String getVIPId() {
+      return vipId;
+   }
+
+   /**
+    * @return the name of the Pool.
+    */
+   @Nullable
+   public String getName() {
+      return name;
+   }
+
+   /**
+    * @return the description of the Pool.
+    */
+   @Nullable
+   public String getDescription() {
+      return description;
+   }
+
+   /**
+    * @return the subnet id for this Pool.
+    */
+   @Nullable
+   public String getSubnetId() {
+      return subnetId;
+   }
+
+   /**
+    * @return the protocol for this Pool.
+    */
+   @Nullable
+   public Protocol getProtocol() {
+      return protocol;
+   }
+
+   /**
+    * @return the provider for this Pool.
+    */
+   @Nullable
+   public String getProvider() {
+      return provider;
+   }
+
+   /**
+    * @return the load balancing method for this Pool.
+    */
+   @Nullable
+   public String getLBMethod() {
+      return lbMethod;
+   }
+
+   /**
+    * @return the health monitors for this Pool.
+    */
+   @Nullable
+   public ImmutableSet<String> getHealthMonitors() {
+      return healthMonitors;
+   }
+
+   /**
+    * @return the health monitors status for this Pool.
+    */
+   @Nullable
+   public ImmutableList<HealthMonitorStatus> getHealthMonitorsStatus() {
+      return healthMonitorsStatus;
+   }
+
+   /**
+    * @return the members for this Pool.
+    */
+   @Nullable
+   public ImmutableSet<String> getMembers() {
+      return members;
+   }
+
+   /**
+    * @return the administrative state for this Pool.
+    */
+   @Nullable
+   public Boolean getAdminStateUp() {
+      return adminStateUp;
+   }
+
+   /**
+    * @return the status for this Pool.
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description for this Pool.
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public boolean equals(Object o) {
+      if (this == o)
+         return true;
+      if (o == null || getClass() != o.getClass())
+         return false;
+
+      Pool that = (Pool) o;
+
+      return Objects.equal(this.id, that.id) && Objects.equal(this.tenantId, that.tenantId)
+            && Objects.equal(this.vipId, that.vipId) && Objects.equal(this.name, that.name)
+            && Objects.equal(this.description, that.description) && Objects.equal(this.subnetId, that.subnetId)
+            && Objects.equal(this.protocol, that.protocol) && Objects.equal(this.provider, that.provider)
+            && Objects.equal(this.lbMethod, that.lbMethod) && Objects.equal(this.healthMonitors, that.healthMonitors)
+            && Objects.equal(this.healthMonitorsStatus, that.healthMonitorsStatus)
+            && Objects.equal(this.members, that.members) && Objects.equal(this.adminStateUp, that.adminStateUp)
+            && Objects.equal(this.status, that.status) && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, tenantId, vipId, name, description, subnetId, protocol, provider, lbMethod,
+            healthMonitors, healthMonitorsStatus, members, adminStateUp, status, statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("vipId", vipId)
+            .add("name", name).add("description", description).add("subnetId", subnetId).add("protocol", protocol)
+            .add("provider", provider).add("lbMethod", lbMethod).add("healthMonitors", healthMonitors)
+            .add("healthMonitorsStatus", healthMonitorsStatus).add("members", members)
+            .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
+            .toString();
+   }
+
+   /*
+    * Methods to get the Create and Update builders follow.
+    */
+
+   /**
+    * @return the Builder for creating a new Pool.
+    */
+   public static CreateBuilder createBuilder(String subnetId, Protocol protocol, String lbMethod) {
+      return new CreateBuilder(subnetId, protocol, lbMethod);
+   }
+
+   /**
+    * @return the Builder for updating a Pool.
+    */
+   public static UpdateBuilder updateBuilder() {
+      return new UpdateBuilder();
+   }
+
+   private abstract static class Builder<ParameterizedBuilderType> {
+      protected Pool pool;
+
+      /**
+       * Default constructor.
+       */
+      private Builder() {
+         pool = new Pool();
+      }
+
+      protected abstract ParameterizedBuilderType self();
+
+      /**
+       * Provides the name for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getName()
+       */
+      public ParameterizedBuilderType name(String name) {
+         pool.name = name;
+         return self();
+      }
+
+      /**
+       * Provides the description for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getDescription()
+       */
+      public ParameterizedBuilderType description(String description) {
+         pool.description = description;
+         return self();
+      }
+
+      /**
+       * Provides the load balancing method for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getLBMethod()
+       */
+      public ParameterizedBuilderType lbMethod(String lbMethod) {
+         pool.lbMethod = lbMethod;
+         return self();
+      }
+
+      /**
+       * Provides the health monitors for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getHealthMonitors()
+       */
+      public ParameterizedBuilderType healthMonitors(ImmutableSet<String> healthMonitors) {
+         pool.healthMonitors = healthMonitors;
+         return self();
+      }
+
+      /**
+       * Provides the administrative state for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getAdminStateUp()
+       */
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
+         pool.adminStateUp = adminStateUp;
+         return self();
+      }
+   }
+
+   /**
+    * Create builder (inheriting from Builder).
+    */
+   public static class CreateBuilder extends Builder<CreateBuilder> {
+      /**
+       * Supply required properties for creating a Pool's CreateBuilder.
+       *
+       * @param subnetId the subnet id.
+       * @param protocol the protocol.
+       * @param lbMethod the load balancing method.
+       */
+      private CreateBuilder(String subnetId, Protocol protocol, String lbMethod) {
+         subnetId(subnetId).protocol(protocol).lbMethod(lbMethod);
+      }
+
+      /**
+       * Provides the tenantId for this Pool's Builder. Admin-only.
+       * When keystone is enabled, it is not mandatory to specify tenant_id for resources in create requests, as the
+       * tenant identifier will be derived from the Authentication token. Please note that the default authorization
+       * settings only allow administrative users to create resources on behalf of a different tenant.
+       *
+       * @return the Builder.
+       * @see Pool#getTenantId()
+       */
+      public CreateBuilder tenantId(String tenantId) {
+         pool.tenantId = tenantId;
+         return self();
+      }
+
+      /**
+       * Provides the subnet id for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getSubnetId()
+       */
+      public CreateBuilder subnetId(String subnetId) {
+         pool.subnetId = subnetId;
+         return self();
+      }
+
+      /**
+       * Provides the protocol for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getProtocol()
+       */
+      public CreateBuilder protocol(Protocol protocol) {
+         pool.protocol = protocol;
+         return self();
+      }
+
+      /**
+       * Provides the provider for this Pool's Builder.
+       *
+       * @return the Builder.
+       * @see Pool#getProvider()
+       */
+      public CreateBuilder provider(String provider) {
+         pool.provider = provider;
+         return self();
+      }
+
+      /**
+       * @return a CreatePool constructed with this Builder.
+       */
+      public CreatePool build() {
+         return new CreatePool(pool);
+      }
+
+      @Override
+      protected CreateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Update builder (inheriting from Builder).
+    */
+   public static class UpdateBuilder extends Builder<UpdateBuilder> {
+      /**
+       * Supply required properties for creating a Pool's UpdateBuilder.
+       */
+      private UpdateBuilder() {
+      }
+
+      /**
+       * @return a UpdatePool constructed with this Builder.
+       */
+      public UpdatePool build() {
+         return new UpdatePool(pool);
+      }
+
+      @Override
+      protected UpdateBuilder self() {
+         return this;
+      }
+   }
+
+   /**
+    * Create options - extend the domain class, passed to API create calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class CreatePool extends Pool {
+      /**
+       * Copy constructor.
+       *
+       * @param pool the Pool to copy from.
+       */
+      private CreatePool(Pool pool) {
+         super(pool);
+      }
+   }
+
+   /**
+    * Update options - extend the domain class, passed to API update calls.
+    * Essentially the same as the domain class. Ensure validation and safe typing.
+    */
+   public static class UpdatePool extends Pool {
+      /**
+       * Copy constructor.
+       *
+       * @param pool the Pool to copy from.
+       */
+      private UpdatePool(Pool pool) {
+         super(pool);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
new file mode 100644
index 0000000..07989e7
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
@@ -0,0 +1,101 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 PoolStatus.
+ * Contains an id and status describing the pool's status.
+ *
+ * @see HealthMonitor#getPools()
+ */
+public class PoolStatus {
+
+   // Mandatory attributes
+   @Named("pool_id")
+   protected final String id;
+   protected final LBaaSStatus status;
+   // Optional attributes
+   @Named("status_description")
+   protected final String statusDescription;
+
+   @ConstructorProperties({ "pool_id", "status", "status_description" })
+   protected PoolStatus(String id, LBaaSStatus status, String statusDescription) {
+      this.id = id;
+      this.status = status;
+      this.statusDescription = statusDescription;
+   }
+
+   /**
+    * @return the id of the PoolStatus.
+    */
+   @Nullable
+   public String getId() {
+      return id;
+   }
+
+   /**
+    * @return the status of the PoolStatus.
+    */
+   @Nullable
+   public LBaaSStatus getStatus() {
+      return status;
+   }
+
+   /**
+    * @return the status description of the PoolStatus.
+    */
+   @Nullable
+   public String getStatusDescription() {
+      return statusDescription;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(id, status, statusDescription);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null || getClass() != obj.getClass())
+         return false;
+      PoolStatus that = PoolStatus.class.cast(obj);
+      return Objects.equal(this.id, that.id) && Objects.equal(this.status, that.status)
+            && Objects.equal(this.statusDescription, that.statusDescription);
+   }
+
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
+            .add("statusDescription", statusDescription);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pools.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pools.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pools.java
new file mode 100644
index 0000000..c30bc13
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pools.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of of Neutron LBaaS v1 Pools.
+ */
+public class Pools extends PaginatedCollection<Pool> {
+   public static final Pools EMPTY = new Pools(ImmutableSet.<Pool> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({ "pools", "pools_links" })
+   protected Pools(Iterable<Pool> pools, Iterable<Link> poolsLinks) {
+      super(pools, poolsLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/ProbeType.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/ProbeType.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/ProbeType.java
new file mode 100644
index 0000000..fb5d565
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/ProbeType.java
@@ -0,0 +1,70 @@
+/*
+ * 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.domain.lbaas.v1;
+
+/**
+ * Enumerates supported types of probe sent by health monitor to verify member state.
+ */
+public enum ProbeType {
+   /**
+    * Health monitor pings the members by using ICMP.
+    */
+   PING("PING"),
+   /**
+    * Health monitor connects to the members by using TCP.
+    */
+   TCP("TCP"),
+   /**
+    * Health monitor sends an HTTP request to the member.
+    */
+   HTTP("HTTP"),
+   /**
+    * Health monitor sends a secure HTTP request to the member.
+    */
+   HTTPS("HTTPS"),
+   /**
+    * Used by jclouds when the service returns an unknown value other than null.
+    */
+   UNRECOGNIZED("unrecognized");
+
+   private String name;
+
+   private ProbeType(String name) {
+      this.name = name;
+   }
+
+   @Override
+   public String toString() {
+      return name;
+   }
+
+   /*
+    * This provides GSON enum support in jclouds.
+    * */
+   public static ProbeType fromValue(String name){
+      if (name != null) {
+         for (ProbeType value : ProbeType.values()) {
+            if (name.equalsIgnoreCase(value.name)) {
+               return value;
+            }
+         }
+         return UNRECOGNIZED;
+      }
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Protocol.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Protocol.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Protocol.java
new file mode 100644
index 0000000..e353863
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Protocol.java
@@ -0,0 +1,67 @@
+/*
+ * 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.domain.lbaas.v1;
+
+/**
+ * Enumerates supported protocols.
+ * Protocol must be specified for the front-end (see {@link VIP}) and for the back-end instances (see {@link Pool}).
+ */
+public enum Protocol {
+   /**
+    * Use TCP for routing traffic.
+    */
+   TCP("TCP"),
+   /**
+    * Use HTTP for routing traffic.
+    */
+   HTTP("HTTP"),
+   /**
+    * Use HTTPS for routing traffic.
+    */
+   HTTPS("HTTPS"),
+   /**
+    * Used by jclouds when the service returns an unknown value other than null.
+    */
+   UNRECOGNIZED("unrecognized");
+
+   private String name;
+
+   private Protocol(String name) {
+      this.name = name;
+   }
+
+   @Override
+   public String toString() {
+      return name;
+   }
+
+   /*
+    * This provides GSON enum support in jclouds.
+    * */
+   public static Protocol fromValue(String name){
+      if (name != null) {
+         for (Protocol value : Protocol.values()) {
+            if (name.equalsIgnoreCase(value.name)) {
+               return value;
+            }
+         }
+         return UNRECOGNIZED;
+      }
+      return null;
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
new file mode 100644
index 0000000..c984ac4
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
@@ -0,0 +1,183 @@
+/*
+ * 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.domain.lbaas.v1;
+
+import java.beans.ConstructorProperties;
+
+import javax.inject.Named;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+
+/**
+ * A Neutron LBaaS v1 SessionPersistence.
+ * Contains a type and cookie name describing the session persistence.
+ */
+public class SessionPersistence {
+
+   // Mandatory attributes
+   protected final Type type;
+   // Optional attributes
+   @Named("cookie_name")
+   protected final String cookieName;
+
+   @ConstructorProperties({ "type", "cookie_name" })
+   protected SessionPersistence(Type type, String cookieName) {
+      this.type = type;
+      this.cookieName = cookieName;
+   }
+
+   /**
+    * @return the type of the SessionPersistence.
+    */
+   @Nullable
+   public Type getType() {
+      return type;
+   }
+
+   /**
+    * @return the cookie name of the SessionPersistence.
+    */
+   @Nullable
+   public String getCookieName() {
+      return cookieName;
+   }
+
+   @Override
+   public int hashCode() {
+      return Objects.hashCode(type, cookieName);
+   }
+
+   @Override
+   public boolean equals(Object obj) {
+      if (this == obj)
+         return true;
+      if (obj == null || getClass() != obj.getClass())
+         return false;
+      SessionPersistence that = SessionPersistence.class.cast(obj);
+      return Objects.equal(this.type, that.type) && Objects.equal(this.cookieName, that.cookieName);
+   }
+
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("type", type).add("cookieName", cookieName);
+   }
+
+   @Override
+   public String toString() {
+      return string().toString();
+   }
+
+   /*
+    * Methods to get the builder follow.
+    */
+
+   /**
+    * @return the Builder for SessionPersistence.
+    */
+   public static Builder builder() {
+      return new Builder();
+   }
+
+   /**
+    * Builder.
+    */
+   public static class Builder {
+      protected Type type;
+      protected String cookieName;
+
+      /**
+       * Provides the type to the SessionPersistence's Builder.
+       *
+       * @return the Builder.
+       * @see SessionPersistence#getType()
+       */
+      public Builder type(Type type) {
+         this.type = type;
+         return this;
+      }
+
+      /**
+       * Provides the cookie name to the SessionPersistence's Builder.
+       *
+       * @return the Builder.
+       * @see SessionPersistence#getCookieName()
+       */
+      public Builder cookieName(String cookieName) {
+         this.cookieName = cookieName;
+         return this;
+      }
+
+      /**
+       * @return a SessionPersistence constructed with this Builder.
+       */
+      public SessionPersistence build() {
+         return new SessionPersistence(type, cookieName);
+      }
+   }
+
+   /**
+    * Enumerates supported SessionPersistence types.
+    */
+   public static enum Type {
+      /**
+       * All connections that originate from the same source IP address are handled by the same member of the pool.
+       */
+      SOURCE_IP("SOURCE_IP"),
+      /**
+       * The load balancing function creates a cookie on the first request from a client. Subsequent requests that
+       * contain the same cookie value are handled by the same member of the pool.
+       */
+      HTTP_COOKIE("HTTP_COOKIE"),
+      /**
+       * The load balancing function relies on a cookie established by the back-end application. All requests with the
+       * same cookie value are handled by the same member of the pool.
+       */
+      APP_COOKIE("APP_COOKIE"),
+      /**
+       * Used by jclouds when the service returns an unknown value other than null.
+       */
+      UNRECOGNIZED("unrecognized");
+
+      private String name;
+
+      private Type(String name) {
+         this.name = name;
+      }
+
+      @Override
+      public String toString() {
+         return name;
+      }
+
+      /*
+       * This provides GSON enum support in jclouds.
+       * */
+      public static Type fromValue(String name){
+         if (name != null) {
+            for (Type value : Type.values()) {
+               if (name.equalsIgnoreCase(value.name)) {
+                  return value;
+               }
+            }
+            return UNRECOGNIZED;
+         }
+         return null;
+      }
+   }
+}


[05/50] [abbrv] jclouds git commit: Remove unnecessary blobstore references

Posted by na...@apache.org.
Remove unnecessary blobstore references


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/c2c9076a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c2c9076a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c2c9076a

Branch: refs/heads/master
Commit: c2c9076ad014226a5476d40c7f7c1fb8c3597a21
Parents: 388ad72
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Tue Sep 16 09:25:40 2014 -0700
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Tue Sep 16 12:52:12 2014 -0700

----------------------------------------------------------------------
 apis/openstack-neutron/src/test/resources/logback.xml | 13 -------------
 1 file changed, 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/c2c9076a/apis/openstack-neutron/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/logback.xml b/apis/openstack-neutron/src/test/resources/logback.xml
index 6559c23..d7c463a 100644
--- a/apis/openstack-neutron/src/test/resources/logback.xml
+++ b/apis/openstack-neutron/src/test/resources/logback.xml
@@ -34,14 +34,6 @@
         </encoder>
     </appender>
 
-    <appender name="BLOBSTOREFILE" class="ch.qos.logback.core.FileAppender">
-        <file>target/test-data/jclouds-blobstore.log</file>
-
-        <encoder>
-            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
-        </encoder>
-    </appender>
-
     <root>
         <level value="warn" />
     </root>
@@ -61,9 +53,4 @@
         <appender-ref ref="WIREFILE" />
     </logger>
 
-    <logger name="jclouds.blobstore">
-        <level value="DEBUG" />
-        <appender-ref ref="BLOBSTOREFILE" />
-    </logger>
-
 </configuration>


[28/50] [abbrv] jclouds git commit: Remove deprecated neutron code

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
deleted file mode 100644
index a2bf3ec..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
+++ /dev/null
@@ -1,139 +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_0.features;
-
-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_0.domain.AllocationPool;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet;
-import org.jclouds.openstack.neutron.v2_0.domain.HostRoute;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiLiveTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.util.PredicateUtil;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-
-/**
- * Tests subnet api in combination with the network api
- *
- */
-@Test(groups = "live", testName = "SubnetApiLiveTest", singleThreaded = true)
-public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
-
-   public void testGetAndListSubnets() {
-      for (String zone : api.getConfiguredZones()) {
-         Set<? extends ReferenceWithName> references = api.getSubnetApiForZone(zone).list().concat().toSet();
-         Set<? extends Subnet> subnets = api.getSubnetApiForZone(zone).listInDetail().concat().toSet();
-
-         assertNotNull(references);
-         assertNotNull(subnets);
-         assertEquals(references.size(), subnets.size());
-
-         for (Subnet subnet : subnets) {
-            assertNotNull(subnet.getNetworkId());
-            assertTrue(references.contains(ReferenceWithName.builder().id(subnet.getId()).tenantId(subnet.getTenantId()).name(subnet.getName()).build()));
-
-            Subnet retrievedSubnet = api.getSubnetApiForZone(zone).get(subnet.getId());
-            assertEquals(retrievedSubnet, subnet);
-         }
-      }
-   }
-
-   public void testCreateUpdateAndDeleteSubnet() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         String networkId = networkApi.create(CreateNetworkOptions.builder().name("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
-
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         Set<AllocationPool> allocationPools = ImmutableSet.of(
-            AllocationPool.builder().start("a3:bc00::10").end("a3:bc00::20").build(),
-            AllocationPool.builder().start("a3:bc00::50").end("a3:bc00::90").build()
-         );
-         Set<HostRoute> hostRoutes = ImmutableSet.of(
-            HostRoute.builder().destinationCidr("a3:bc00::/48").nextHop("a3:bc00::0004").build()
-         );
-         Subnet subnet = subnetApi.create(networkId, 6, "a3:bc00::/48", CreateSubnetOptions.builder().allocationPools(allocationPools).hostRoutes(hostRoutes).build());
-         assertNotNull(subnet);
-
-         Subnet retrievedSubnet = subnetApi.get(subnet.getId());
-
-         assertEquals(retrievedSubnet.getId(), subnet.getId());
-         assertEquals(retrievedSubnet.getCidr(), "a3:bc00::/48");
-         assertTrue(retrievedSubnet.getDnsNameServers().isEmpty());
-         assertEquals(retrievedSubnet.getAllocationPools().size(), 2);
-         assertEquals(retrievedSubnet.getHostRoutes().size(), 1);
-         assertTrue(subnetApi.update(retrievedSubnet.getId(), UpdateSubnetOptions.builder().name("jclouds-live-test-update").build()));
-
-         retrievedSubnet = subnetApi.get(retrievedSubnet.getId());
-
-         assertEquals(retrievedSubnet.getId(), subnet.getId());
-         assertEquals(retrievedSubnet.getName(), "jclouds-live-test-update");
-         assertTrue(retrievedSubnet.getDnsNameServers().isEmpty());
-
-         Subnet subnet2 = subnetApi.create(networkId, 6, "a3:bd01::/48");
-         assertNotNull(subnet2);
-
-         assertTrue(subnetApi.delete(subnet.getId()));
-         assertTrue(subnetApi.delete(subnet2.getId()));
-         assertTrue(networkApi.delete(networkId));
-      }
-   }
-
-   public void testBulkCreateSubnet() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         String networkId = networkApi.create(CreateNetworkOptions.builder().name("jclouds-live-test").networkType(NetworkType.LOCAL).build()).getId();
-
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         Set<? extends Subnet> subnets = subnetApi.createBulk(
-            CreateSubnetBulkOptions.builder().subnets(
-               ImmutableList.of(
-                  BulkSubnet.builder().name("jclouds-live-test-1").cidr("a3:bd01::/48").ipVersion(6).networkId(networkId).build(),
-                  BulkSubnet.builder().name("jclouds-live-test-2").cidr("a3:bd02::/48").ipVersion(6).networkId(networkId).build(),
-                  BulkSubnet.builder().name("jclouds-live-test-3").cidr("a3:bd03::/48").ipVersion(6).networkId(networkId).build()
-               )
-            ).build()
-         ).toSet();
-         Set<? extends Subnet> existingSubnets = subnetApi.listInDetail().concat().toSet();
-
-         assertNotNull(subnets);
-         assertTrue(!subnets.isEmpty());
-         assertEquals(subnets.size(), 3);
-
-         for (Subnet net : subnets) {
-            Predicate<Subnet> idEqualsPredicate = PredicateUtil.createIdEqualsPredicate(net.getId());
-            assertEquals(1, Sets.filter(existingSubnets, idEqualsPredicate).size());
-            assertTrue(subnetApi.delete(net.getId()));
-         }
-         assertTrue(networkApi.delete(networkId));
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiExpectTest.java
deleted file mode 100644
index ff9ffa7..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiExpectTest.java
+++ /dev/null
@@ -1,66 +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_0.internal;
-
-import com.google.common.collect.ImmutableSet;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.jclouds.openstack.neutron.v2_0.domain.Reference;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-
-import java.util.Set;
-
-/**
- * Base class for writing Neutron Rest Api Expect tests
- */
-public class BaseNeutronApiExpectTest extends BaseNeutronExpectTest<NeutronApi> {
-
-   protected Set<Reference> listOfReferences() {
-      return ImmutableSet.of(
-         Reference.builder().tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         Reference.builder().tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         Reference.builder().tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         Reference.builder().tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         Reference.builder().tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         Reference.builder().tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         Reference.builder().tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         Reference.builder().tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         Reference.builder().tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         Reference.builder().tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         Reference.builder().tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         Reference.builder().tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-   protected Set<ReferenceWithName> listOfReferencesWithNames() {
-      return ImmutableSet.of(
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         ReferenceWithName.builder().name("wibble").tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         ReferenceWithName.builder().name("wibble").tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         ReferenceWithName.builder().name("wibble").tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         ReferenceWithName.builder().name("wibble").tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         ReferenceWithName.builder().name("jclouds-test").tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiLiveTest.java
deleted file mode 100644
index de5755e..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronApiLiveTest.java
+++ /dev/null
@@ -1,44 +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_0.internal;
-
-import org.jclouds.apis.BaseApiLiveTest;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties;
-import org.jclouds.openstack.neutron.v2_0.NeutronApi;
-import org.testng.annotations.Test;
-
-import java.util.Properties;
-
-/**
- * Tests behavior of {@code NeutronApi}
- */
-@Test(groups = "live")
-public class BaseNeutronApiLiveTest extends BaseApiLiveTest<NeutronApi> {
-
-   public BaseNeutronApiLiveTest() {
-      provider = "openstack-neutron-legacy";
-   }
-
-   @Override
-   protected Properties setupProperties() {
-      Properties props = super.setupProperties();
-      setIfTestSystemPropertyPresent(props, KeystoneProperties.CREDENTIAL_TYPE);
-      return props;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronExpectTest.java
deleted file mode 100644
index d8c024c..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/internal/BaseNeutronExpectTest.java
+++ /dev/null
@@ -1,64 +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_0.internal;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.keystone.v2_0.internal.KeystoneFixture;
-import org.jclouds.rest.internal.BaseRestApiExpectTest;
-
-import javax.ws.rs.core.MediaType;
-
-/**
- * Base class for writing Neutron Expect tests
- */
-public class BaseNeutronExpectTest<T> extends BaseRestApiExpectTest<T> {
-   protected HttpRequest keystoneAuthWithUsernameAndPassword;
-   protected HttpRequest keystoneAuthWithUsernameAndPasswordAndTenantName;
-   protected HttpRequest keystoneAuthWithAccessKeyAndSecretKeyAndTenantName;
-   protected String authToken;
-   protected HttpResponse responseWithKeystoneAccess;
-   protected HttpRequest keystoneAuthWithAccessKeyAndSecretKeyAndTenantId;
-   protected String identityWithTenantId;
-   protected String endpoint = "https://csnode.jclouds.org:9696/v2.0";
-
-   public BaseNeutronExpectTest() {
-      provider = "openstack-neutron-legacy";
-      keystoneAuthWithUsernameAndPassword = KeystoneFixture.INSTANCE.initialAuthWithUsernameAndPassword(identity,
-              credential);
-      keystoneAuthWithUsernameAndPasswordAndTenantName = KeystoneFixture.INSTANCE.initialAuthWithUsernameAndPasswordAndTenantName(identity,
-              credential);
-      keystoneAuthWithAccessKeyAndSecretKeyAndTenantName = KeystoneFixture.INSTANCE.initialAuthWithAccessKeyAndSecretKeyAndTenantName(identity,
-              credential);
-      keystoneAuthWithAccessKeyAndSecretKeyAndTenantId = KeystoneFixture.INSTANCE.initialAuthWithAccessKeyAndSecretKeyAndTenantId(identity,
-              credential);
-
-      authToken = KeystoneFixture.INSTANCE.getAuthToken();
-      responseWithKeystoneAccess = KeystoneFixture.INSTANCE.responseWithAccess();
-      // now, createContext arg will need tenant prefix
-      identityWithTenantId = KeystoneFixture.INSTANCE.getTenantId() + ":" + identity;
-      identity = KeystoneFixture.INSTANCE.getTenantName() + ":" + identity;
-   }
-
-   protected HttpRequest.Builder<?> authenticatedGET() {
-      return HttpRequest.builder()
-         .method("GET")
-         .addHeader("Accept", MediaType.APPLICATION_JSON)
-         .addHeader("X-Auth-Token", authToken);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseNetworkTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseNetworkTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseNetworkTest.java
deleted file mode 100644
index 9509ba3..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseNetworkTest.java
+++ /dev/null
@@ -1,50 +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_0.parse;
-
-import org.jclouds.json.BaseItemParserTest;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.State;
-import org.jclouds.rest.annotations.SelectJson;
-import org.testng.annotations.Test;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-
-@Test(groups = "unit", testName = "ParseNetworkTest")
-public class ParseNetworkTest extends BaseItemParserTest<Network> {
-
-   @Override
-   public String resource() {
-      return "/network.json";
-   }
-
-   @Override
-   @SelectJson("network")
-   @Consumes(MediaType.APPLICATION_JSON)
-   public Network expected() {
-      return Network.builder()
-         .networkType(NetworkType.LOCAL)
-         .state(State.ACTIVE)
-         .name("jclouds-wibble")
-         .tenantId("1234567890")
-         .id("624312ff-d14b-4ba3-9834-1c78d23d574d")
-         .build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParsePortTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParsePortTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParsePortTest.java
deleted file mode 100644
index b029299..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParsePortTest.java
+++ /dev/null
@@ -1,49 +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_0.parse;
-
-import org.jclouds.json.BaseItemParserTest;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.State;
-import org.jclouds.rest.annotations.SelectJson;
-import org.testng.annotations.Test;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-
-@Test(groups = "unit", testName = "ParsePortTest")
-public class ParsePortTest extends BaseItemParserTest<Port> {
-
-   @Override
-   public String resource() {
-      return "/port.json";
-   }
-
-   @Override
-   @SelectJson("port")
-   @Consumes(MediaType.APPLICATION_JSON)
-   public Port expected() {
-      return Port.builder()
-         .state(State.ACTIVE)
-         .networkId("1234567890")
-         .name("jclouds-wibble")
-         .tenantId("1234567890")
-         .id("624312ff-d14b-4ba3-9834-1c78d23d574d")
-         .build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseRouterTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseRouterTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseRouterTest.java
deleted file mode 100644
index 1787129..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseRouterTest.java
+++ /dev/null
@@ -1,51 +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_0.parse;
-
-import org.jclouds.json.BaseItemParserTest;
-import org.jclouds.openstack.neutron.v2_0.domain.ExternalGatewayInfo;
-import org.jclouds.openstack.neutron.v2_0.domain.Router;
-import org.jclouds.openstack.neutron.v2_0.domain.State;
-import org.jclouds.rest.annotations.SelectJson;
-import org.testng.annotations.Test;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-
-@Test(groups = "unit", testName = "ParseRouterTest")
-public class ParseRouterTest extends BaseItemParserTest<Router> {
-
-   @Override
-   public String resource() {
-      return "/router.json";
-   }
-
-   @Override
-   @SelectJson("router")
-   @Consumes(MediaType.APPLICATION_JSON)
-   public Router expected() {
-      return Router.builder()
-         .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("624312ff-d14b-4ba3-9834-1c78d23d574d").build())
-         .state(State.ACTIVE)
-         .name("jclouds-wibble")
-         .tenantId("1234567890")
-         .id("16dba3bc-f3fa-4775-afdc-237e12c72f6a")
-         .build();
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseSubnetTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseSubnetTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseSubnetTest.java
deleted file mode 100644
index afe84b4..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/parse/ParseSubnetTest.java
+++ /dev/null
@@ -1,49 +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_0.parse;
-
-import org.jclouds.json.BaseItemParserTest;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.rest.annotations.SelectJson;
-import org.testng.annotations.Test;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.core.MediaType;
-
-@Test(groups = "unit", testName = "ParseSubnetTest")
-public class ParseSubnetTest extends BaseItemParserTest<Subnet> {
-
-   @Override
-   public String resource() {
-      return "/subnet.json";
-   }
-
-   @Override
-   @SelectJson("subnet")
-   @Consumes(MediaType.APPLICATION_JSON)
-   public Subnet expected() {
-      return Subnet.builder()
-         .ipVersion(4)
-         .cidr("10.0.3.0/24")
-         .networkId("1234567890")
-         .name("jclouds-wibble")
-         .tenantId("1234567890")
-         .id("624312ff-d14b-4ba3-9834-1c78d23d574d")
-         .build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/ClassUtil.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/ClassUtil.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/ClassUtil.java
deleted file mode 100644
index 1797fb3..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/ClassUtil.java
+++ /dev/null
@@ -1,39 +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_0.util;
-
-import java.lang.reflect.Field;
-
-public class ClassUtil {
-
-    public static Field findField(Class clazz, String fieldName) {
-        Field fieldToFind = null;
-        if (clazz.getSuperclass() != null)
-            fieldToFind = findField(clazz.getSuperclass(), fieldName);
-
-        if (fieldToFind != null)
-            return fieldToFind;
-
-        for (Field field : clazz.getDeclaredFields()) {
-            if (field.getName().equals(fieldName))
-                return field;
-        }
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/PredicateUtil.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/PredicateUtil.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/PredicateUtil.java
deleted file mode 100644
index 95ede8f..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/util/PredicateUtil.java
+++ /dev/null
@@ -1,47 +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_0.util;
-
-import com.google.common.base.Predicate;
-import org.jclouds.javax.annotation.Nullable;
-
-import java.lang.reflect.Field;
-
-public class PredicateUtil {
-
-    public static <T> Predicate<T> createIdEqualsPredicate(final String id) {
-        return new Predicate<T>() {
-            @Override
-            public boolean apply(@Nullable T input) {
-                if (input == null) return false;
-
-                try {
-                    Class clazz = input.getClass();
-                    Field field = ClassUtil.findField(clazz, "id");
-                    field.setAccessible(true);
-                    String value = (String) field.get(input);
-                    field.setAccessible(false);
-                    return value != null && value.equals(id);
-                } catch (IllegalAccessException iae) {
-                    return false;
-                }
-            }
-        };
-    }
-
-}


[33/50] [abbrv] jclouds git commit: add FWaaS extension to openstack-neutron

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/logback.xml b/apis/openstack-neutron/src/test/resources/logback.xml
index d7c463a..02685ca 100644
--- a/apis/openstack-neutron/src/test/resources/logback.xml
+++ b/apis/openstack-neutron/src/test/resources/logback.xml
@@ -17,40 +17,19 @@
     limitations under the License.
 
 -->
-<configuration scan="false">
-    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-        <file>target/test-data/jclouds.log</file>
-
-        <encoder>
-            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
-        </encoder>
-    </appender>
-
-    <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender">
-        <file>target/test-data/jclouds-wire.log</file>
-
+<configuration>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+            <pattern>-  %msg%n</pattern>
         </encoder>
     </appender>
-
-    <root>
-        <level value="warn" />
+    <root level="info">
+        <appender-ref ref="STDOUT"/>
     </root>
-
-    <logger name="org.jclouds">
-        <level value="DEBUG" />
-        <appender-ref ref="FILE" />
-    </logger>
-
-    <logger name="jclouds.wire">
-        <level value="DEBUG" />
-        <appender-ref ref="WIREFILE" />
-    </logger>
-
-    <logger name="jclouds.headers">
-        <level value="DEBUG" />
-        <appender-ref ref="WIREFILE" />
-    </logger>
-
+    <logger name="jclouds.compute" level="debug"/>
+    <logger name="net.schmizz" level="warn"/>
+    <logger name="jclouds.wire" level="debug"/>
+    <logger name="jclouds.headers" level="debug"/>
+    <logger name="jclouds.ssh" level="debug"/>
 </configuration>
+


[49/50] [abbrv] jclouds git commit: Promote OpenStack Neutron

Posted by na...@apache.org.
Promote OpenStack Neutron


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/ef679199
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/ef679199
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/ef679199

Branch: refs/heads/master
Commit: ef679199a4d927144239b0d5dfc5416bd290a9a4
Parents: 6fd7c7c f0c248f
Author: Ignasi Barrera <na...@apache.org>
Authored: Wed Jan 17 08:24:48 2018 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jan 17 08:24:48 2018 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/README.md                |    7 +
 apis/openstack-neutron/pom.xml                  |  156 +++
 .../openstack/neutron/v2/NeutronApi.java        |  130 +++
 .../neutron/v2/NeutronApiMetadata.java          |  104 ++
 .../neutron/v2/config/NeutronHttpApiModule.java |   92 ++
 .../neutron/v2/domain/AddressPair.java          |  177 +++
 .../neutron/v2/domain/AllocationPool.java       |  139 +++
 .../neutron/v2/domain/CreateFirewall.java       |  120 ++
 .../neutron/v2/domain/CreateFirewallPolicy.java |  142 +++
 .../neutron/v2/domain/CreateFirewallRule.java   |  231 ++++
 .../neutron/v2/domain/ExternalGatewayInfo.java  |  140 +++
 .../neutron/v2/domain/ExtraDhcpOption.java      |  168 +++
 .../openstack/neutron/v2/domain/Firewall.java   |   47 +
 .../neutron/v2/domain/FirewallPolicies.java     |   36 +
 .../neutron/v2/domain/FirewallPolicy.java       |   48 +
 .../neutron/v2/domain/FirewallRule.java         |   52 +
 .../neutron/v2/domain/FirewallRules.java        |   36 +
 .../openstack/neutron/v2/domain/Firewalls.java  |   36 +
 .../openstack/neutron/v2/domain/FloatingIP.java |  318 ++++++
 .../neutron/v2/domain/FloatingIPs.java          |   36 +
 .../openstack/neutron/v2/domain/HostRoute.java  |  124 ++
 .../jclouds/openstack/neutron/v2/domain/IP.java |  138 +++
 .../neutron/v2/domain/IPv6DHCPMode.java         |   57 +
 .../openstack/neutron/v2/domain/IpVersion.java  |   50 +
 .../openstack/neutron/v2/domain/Network.java    |  647 +++++++++++
 .../neutron/v2/domain/NetworkSegment.java       |  170 +++
 .../neutron/v2/domain/NetworkStatus.java        |   60 +
 .../neutron/v2/domain/NetworkType.java          |   81 ++
 .../openstack/neutron/v2/domain/Networks.java   |   36 +
 .../openstack/neutron/v2/domain/Port.java       |  764 +++++++++++++
 .../openstack/neutron/v2/domain/Ports.java      |   36 +
 .../openstack/neutron/v2/domain/Router.java     |  286 +++++
 .../neutron/v2/domain/RouterInterface.java      |  142 +++
 .../openstack/neutron/v2/domain/Routers.java    |   36 +
 .../openstack/neutron/v2/domain/Rule.java       |  379 +++++++
 .../neutron/v2/domain/RuleDirection.java        |   61 +
 .../neutron/v2/domain/RuleEthertype.java        |   61 +
 .../neutron/v2/domain/RuleProtocol.java         |   65 ++
 .../openstack/neutron/v2/domain/Rules.java      |   36 +
 .../neutron/v2/domain/SecurityGroup.java        |  220 ++++
 .../neutron/v2/domain/SecurityGroups.java       |   36 +
 .../openstack/neutron/v2/domain/Subnet.java     |  467 ++++++++
 .../openstack/neutron/v2/domain/Subnets.java    |   36 +
 .../neutron/v2/domain/UpdateFirewall.java       |   68 ++
 .../neutron/v2/domain/UpdateFirewallPolicy.java |   80 ++
 .../neutron/v2/domain/UpdateFirewallRule.java   |  100 ++
 .../openstack/neutron/v2/domain/VIFType.java    |   62 +
 .../openstack/neutron/v2/domain/VNICType.java   |   56 +
 .../v2/domain/lbaas/v1/HealthMonitor.java       |  451 ++++++++
 .../v2/domain/lbaas/v1/HealthMonitorStatus.java |  101 ++
 .../v2/domain/lbaas/v1/HealthMonitors.java      |   37 +
 .../neutron/v2/domain/lbaas/v1/HttpMethod.java  |   75 ++
 .../neutron/v2/domain/lbaas/v1/LBaaSStatus.java |   78 ++
 .../neutron/v2/domain/lbaas/v1/Member.java      |  368 ++++++
 .../neutron/v2/domain/lbaas/v1/Members.java     |   36 +
 .../neutron/v2/domain/lbaas/v1/Pool.java        |  482 ++++++++
 .../neutron/v2/domain/lbaas/v1/PoolStatus.java  |  101 ++
 .../neutron/v2/domain/lbaas/v1/Pools.java       |   36 +
 .../neutron/v2/domain/lbaas/v1/ProbeType.java   |   70 ++
 .../neutron/v2/domain/lbaas/v1/Protocol.java    |   67 ++
 .../v2/domain/lbaas/v1/SessionPersistence.java  |  183 +++
 .../neutron/v2/domain/lbaas/v1/VIP.java         |  493 ++++++++
 .../neutron/v2/domain/lbaas/v1/VIPs.java        |   36 +
 .../v2/extensions/ExtensionNamespaces.java      |   43 +
 .../neutron/v2/extensions/FWaaSApi.java         |  247 ++++
 .../neutron/v2/extensions/FloatingIPApi.java    |  139 +++
 .../neutron/v2/extensions/RouterApi.java        |  198 ++++
 .../v2/extensions/lbaas/v1/LBaaSApi.java        |  418 +++++++
 .../v2/fallbacks/EmptyFloatingIPsFallback.java  |   38 +
 .../v2/fallbacks/EmptyNetworksFallback.java     |   38 +
 .../v2/fallbacks/EmptyPortsFallback.java        |   38 +
 .../v2/fallbacks/EmptyRoutersFallback.java      |   38 +
 .../v2/fallbacks/EmptyRulesFallback.java        |   38 +
 .../fallbacks/EmptySecurityGroupsFallback.java  |   38 +
 .../v2/fallbacks/EmptySubnetsFallback.java      |   38 +
 .../lbaas/v1/EmptyHealthMonitorsFallback.java   |   38 +
 .../lbaas/v1/EmptyMembersFallback.java          |   38 +
 .../fallbacks/lbaas/v1/EmptyPoolsFallback.java  |   38 +
 .../fallbacks/lbaas/v1/EmptyVIPsFallback.java   |   38 +
 .../neutron/v2/features/NetworkApi.java         |  149 +++
 .../openstack/neutron/v2/features/PortApi.java  |  149 +++
 .../neutron/v2/features/SecurityGroupApi.java   |  184 +++
 .../neutron/v2/features/SubnetApi.java          |  145 +++
 .../FirewallPolicyToPagedIterable.java          |   63 ++
 .../functions/FirewallRuleToPagedIterable.java  |   63 ++
 .../v2/functions/FirewallToPagedIterable.java   |   63 ++
 .../functions/FloatingIPsToPagedIterable.java   |   64 ++
 .../v2/functions/NetworksToPagedIterable.java   |   64 ++
 .../v2/functions/ParseFirewallPolicies.java     |   38 +
 .../v2/functions/ParseFirewallRules.java        |   38 +
 .../neutron/v2/functions/ParseFirewalls.java    |   38 +
 .../neutron/v2/functions/ParseFloatingIPs.java  |   37 +
 .../neutron/v2/functions/ParseNetworks.java     |   38 +
 .../neutron/v2/functions/ParsePorts.java        |   37 +
 .../neutron/v2/functions/ParseRouters.java      |   37 +
 .../neutron/v2/functions/ParseRules.java        |   38 +
 .../v2/functions/ParseSecurityGroups.java       |   38 +
 .../neutron/v2/functions/ParseSubnets.java      |   37 +
 .../v2/functions/PortsToPagedIterable.java      |   64 ++
 .../v2/functions/RouterToPagedIterable.java     |   65 ++
 .../v2/functions/RulesToPagedIterable.java      |   66 ++
 .../SecurityGroupsToPagedIterable.java          |   66 ++
 .../v2/functions/SubnetsToPagedIterable.java    |   64 ++
 .../functions/VersionAwareRegionToEndpoint.java |   67 ++
 .../lbaas/v1/HealthMonitorsToPagedIterable.java |   66 ++
 .../lbaas/v1/MembersToPagedIterable.java        |   65 ++
 .../functions/lbaas/v1/ParseHealthMonitors.java |   38 +
 .../v2/functions/lbaas/v1/ParseMembers.java     |   38 +
 .../v2/functions/lbaas/v1/ParsePools.java       |   38 +
 .../v2/functions/lbaas/v1/ParseVIPs.java        |   38 +
 .../lbaas/v1/PoolsToPagedIterable.java          |   65 ++
 .../functions/lbaas/v1/VIPsToPagedIterable.java |   65 ++
 .../v2/handlers/NeutronErrorHandler.java        |   62 +
 .../neutron/v2/options/EmptyOptions.java        |   45 +
 .../neutron/v2/NeutronApiMetadataTest.java      |   33 +
 .../neutron/v2/extensions/FWaaSApiLiveTest.java |  199 ++++
 .../neutron/v2/extensions/FWaaSApiMockTest.java |  568 ++++++++++
 .../v2/extensions/FloatingIPApiLiveTest.java    |   92 ++
 .../v2/extensions/FloatingIPApiMockTest.java    |  292 +++++
 .../v2/extensions/RouterApiLiveTest.java        |  173 +++
 .../v2/extensions/RouterApiMockTest.java        |  387 +++++++
 .../extensions/lbaas/v1/LBaaSApiLiveTest.java   |  634 +++++++++++
 .../extensions/lbaas/v1/LBaaSApiMockTest.java   | 1055 ++++++++++++++++++
 .../v2/features/ExtensionApiLiveTest.java       |   82 ++
 .../v2/features/ExtensionApiMockTest.java       |   96 ++
 .../neutron/v2/features/NetworkApiLiveTest.java |  100 ++
 .../neutron/v2/features/NetworkApiMockTest.java |  306 +++++
 .../neutron/v2/features/PortApiLiveTest.java    |  149 +++
 .../neutron/v2/features/PortApiMockTest.java    |  298 +++++
 .../v2/features/SecurityGroupApiLiveTest.java   |  111 ++
 .../v2/features/SecurityGroupApiMockTest.java   |  394 +++++++
 .../neutron/v2/features/SubnetApiLiveTest.java  |  118 ++
 .../neutron/v2/features/SubnetApiMockTest.java  |  284 +++++
 .../v2/internal/BaseNeutronApiLiveTest.java     |   51 +
 .../v2/internal/BaseNeutronApiMockTest.java     |   44 +
 .../openstack/neutron/v2/util/ClassUtil.java    |   39 +
 .../neutron/v2/util/PredicateUtil.java          |   47 +
 .../src/test/resources/access.json              |  228 ++++
 .../src/test/resources/extension_details.json   |   10 +
 .../src/test/resources/extension_list.json      |  124 ++
 .../extension_list_with_lbaas_v1_response.json  |  140 +++
 ...xtension_list_without_lbaas_v1_response.json |  132 +++
 .../test/resources/firewall_create_request.json |    6 +
 .../resources/firewall_create_response.json     |   11 +
 .../test/resources/firewall_get_response.json   |   11 +
 .../test/resources/firewall_list_response.json  |   13 +
 .../firewall_policy_create_request.json         |    8 +
 .../firewall_policy_create_response.json        |   11 +
 .../resources/firewall_policy_get_response.json |   14 +
 .../firewall_policy_insert_rule_request.json    |    1 +
 .../firewall_policy_insert_rule_response.json   |   10 +
 .../firewall_policy_list_response.json          |  255 +++++
 .../resources/firewall_rule_create_request.json |   12 +
 .../firewall_rule_create_response.json          |   19 +
 .../resources/firewall_rule_get_response.json   |   19 +
 .../resources/firewall_rule_update_request.json |    6 +
 .../firewall_rule_update_response.json          |   19 +
 .../test/resources/firewall_update_request.json |    5 +
 .../resources/firewall_update_response.json     |   11 +
 .../resources/floatingip_create_request.json    |    6 +
 .../resources/floatingip_create_response.json   |   11 +
 .../test/resources/floatingip_get_response.json |   11 +
 .../resources/floatingip_list_response.json     |   22 +
 .../floatingip_list_response_paged1.json        |   32 +
 .../floatingip_list_response_paged2.json        |   28 +
 .../floatingip_update_dissociate_request.json   |    5 +
 .../floatingip_update_dissociate_response.json  |   11 +
 .../resources/floatingip_update_request.json    |    5 +
 .../resources/floatingip_update_response.json   |   11 +
 .../lbaas/v1/health_monitor_create_request.json |    8 +
 .../v1/health_monitor_create_response.json      |   16 +
 .../lbaas/v1/health_monitor_get_response.json   |   16 +
 .../v1/health_monitor_list_response_paged1.json |   20 +
 .../v1/health_monitor_list_response_paged2.json |   23 +
 .../lbaas/v1/health_monitor_update_request.json |   11 +
 .../v1/health_monitor_update_response.json      |   16 +
 .../lbaas/v1/member_create_request.json         |    6 +
 .../lbaas/v1/member_create_response.json        |   12 +
 .../resources/lbaas/v1/member_get_response.json |   12 +
 .../lbaas/v1/member_list_response_paged1.json   |   20 +
 .../lbaas/v1/member_list_response_paged2.json   |   20 +
 .../lbaas/v1/member_update_request.json         |    7 +
 .../lbaas/v1/member_update_response.json        |   12 +
 .../pool_associate_health_monitor_request.json  |    5 +
 .../pool_associate_health_monitor_response.json |    4 +
 .../resources/lbaas/v1/pool_create_request.json |    8 +
 .../lbaas/v1/pool_create_response.json          |   18 +
 .../resources/lbaas/v1/pool_get_response.json   |   35 +
 .../lbaas/v1/pool_list_response_paged1.json     |   46 +
 .../lbaas/v1/pool_list_response_paged2.json     |   42 +
 .../resources/lbaas/v1/pool_update_request.json |   11 +
 .../lbaas/v1/pool_update_response.json          |   29 +
 .../resources/lbaas/v1/vip_create_request.json  |    9 +
 .../resources/lbaas/v1/vip_create_response.json |   17 +
 .../resources/lbaas/v1/vip_get_response.json    |   21 +
 .../lbaas/v1/vip_list_response_paged1.json      |   29 +
 .../lbaas/v1/vip_list_response_paged2.json      |   29 +
 .../resources/lbaas/v1/vip_update_request.json  |   13 +
 .../resources/lbaas/v1/vip_update_response.json |   21 +
 .../src/test/resources/list_networks.json       |   62 +
 .../src/test/resources/list_ports.json          |   86 ++
 .../src/test/resources/list_routers.json        |   74 ++
 .../src/test/resources/list_subnets.json        |   98 ++
 .../src/test/resources/logback.xml              |   42 +
 .../src/test/resources/network.json             |    7 +
 .../resources/network_bulk_create_request.json  |   12 +
 .../resources/network_bulk_create_response.json |   18 +
 .../test/resources/network_create_request.json  |    4 +
 .../test/resources/network_create_response.json |    7 +
 .../test/resources/network_get_response.json    |    7 +
 .../test/resources/network_list_response.json   |   62 +
 .../resources/network_list_response_paged1.json |   40 +
 .../resources/network_list_response_paged2.json |   36 +
 .../test/resources/network_update_request.json  |    4 +
 .../test/resources/network_update_response.json |   11 +
 .../src/test/resources/port.json                |    7 +
 .../resources/port_create_bulk_request.json     |   22 +
 .../resources/port_create_bulk_response.json    |   47 +
 .../src/test/resources/port_create_request.json |   14 +
 .../test/resources/port_create_response.json    |   29 +
 .../src/test/resources/port_get_response.json   |   10 +
 .../src/test/resources/port_list_response.json  |   86 ++
 .../resources/port_list_response_paged1.json    |   48 +
 .../resources/port_list_response_paged2.json    |   44 +
 .../src/test/resources/port_update_request.json |    8 +
 .../test/resources/port_update_response.json    |   23 +
 .../src/test/resources/router.json              |    9 +
 .../router_add_interface_port_request.json      |    3 +
 .../resources/router_add_interface_request.json |    3 +
 .../router_add_interface_response.json          |    4 +
 .../test/resources/router_create_request.json   |   10 +
 .../test/resources/router_create_response.json  |   13 +
 .../src/test/resources/router_get_response.json |   12 +
 .../test/resources/router_list_response.json    |   74 ++
 .../resources/router_list_response_paged1.json  |   34 +
 .../resources/router_list_response_paged2.json  |   30 +
 .../router_remove_interface_port_request.json   |    3 +
 .../router_remove_interface_subnet_request.json |    3 +
 .../test/resources/router_update_request.json   |    7 +
 .../test/resources/router_update_response.json  |   12 +
 .../security_group_create_request.json          |    6 +
 .../security_group_create_response.json         |   34 +
 .../resources/security_group_get_response.json  |   58 +
 .../resources/security_group_list_response.json |  116 ++
 .../security_group_list_response_paged1.json    |  126 +++
 .../security_group_list_response_paged2.json    |  122 ++
 .../security_group_rule_create_request.json     |   11 +
 .../security_group_rule_create_response.json    |   15 +
 .../security_group_rule_get_response.json       |   14 +
 .../security_group_rule_list_response.json      |   52 +
 ...ecurity_group_rule_list_response_paged1.json |   62 +
 ...ecurity_group_rule_list_response_paged2.json |   58 +
 .../src/test/resources/subnet.json              |    8 +
 .../resources/subnet_bulk_create_request.json   |   14 +
 .../resources/subnet_bulk_create_response.json  |   48 +
 .../test/resources/subnet_create_request.json   |    6 +
 .../test/resources/subnet_create_response.json  |    8 +
 .../src/test/resources/subnet_get_response.json |    9 +
 .../test/resources/subnet_list_response.json    |   98 ++
 .../resources/subnet_list_response_pages1.json  |   30 +
 .../resources/subnet_list_response_pages2.json  |   26 +
 .../test/resources/subnet_update_request.json   |    6 +
 .../test/resources/subnet_update_response.json  |   18 +
 263 files changed, 22243 insertions(+)
----------------------------------------------------------------------



[06/50] [abbrv] jclouds git commit: Prefer Boolean over primitive boolean in OpenStack Neutron domain classes

Posted by na...@apache.org.
Prefer Boolean over primitive boolean in OpenStack Neutron domain classes


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/5827b722
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/5827b722
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/5827b722

Branch: refs/heads/master
Commit: 5827b722d23a80dda44080b3e836cb129865bb52
Parents: c2c9076
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Fri Sep 26 08:37:06 2014 -0700
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Wed Oct 1 09:27:26 2014 -0700

----------------------------------------------------------------------
 .../neutron/v2/domain/ExternalGatewayInfo.java    |  8 +++++++-
 .../openstack/neutron/v2/domain/Network.java      |  8 ++++----
 .../jclouds/openstack/neutron/v2/domain/Port.java | 18 +++++++++---------
 .../openstack/neutron/v2/domain/Router.java       |  6 +++---
 .../neutron/v2/extensions/RouterApiMockTest.java  | 10 +++++-----
 .../neutron/v2/features/PortApiMockTest.java      | 12 ++++++------
 6 files changed, 34 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
index a7cc0df..631e8af 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
@@ -110,7 +110,13 @@ public class ExternalGatewayInfo {
          return this;
       }
 
-      public Builder enableSnat(boolean enableSnat) {
+      /**
+       * Provide the enableSnat status to the ExternalGatewayInfo's Builder.
+       *
+       * @return the Builder.
+       * @see ExternalGatewayInfo#getEnableSnat()
+       */
+      public Builder enableSnat(Boolean enableSnat) {
          this.enableSnat = enableSnat;
          return this;
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
index 7d7ed64..c269593 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -182,7 +182,7 @@ public class Network {
     * @return the adminStateUp of the Network
     */
    @Nullable
-   public Boolean isAdminStateUp() {
+   public Boolean getAdminStateUp() {
       return adminStateUp;
    }
 
@@ -193,7 +193,7 @@ public class Network {
     * @return true if the network resource can be accessed by any tenant or not, false if not
     */
    @Nullable
-   public Boolean isShared() {
+   public Boolean getShared() {
       return shared;
    }
 
@@ -234,7 +234,7 @@ public class Network {
     * @return the external of the Network
     */
    @Nullable
-   public Boolean isExternal() {
+   public Boolean getExternal() {
       return external;
    }
 
@@ -242,7 +242,7 @@ public class Network {
     * @return the portSecurity of the Network
     */
    @Nullable
-   public Boolean isPortSecurity() {
+   public Boolean getPortSecurity() {
       return portSecurity;
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
index 53a7a18..f22d2fa 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
@@ -253,7 +253,7 @@ public class Port {
     * @return the administrative state of port. If false, port does not forward packets.
     */
    @Nullable
-   public boolean isAdminStateUp() {
+   public Boolean getAdminStateUp() {
       return adminStateUp;
    }
 
@@ -355,7 +355,7 @@ public class Port {
     * @return the portSecurity of the Port
     */
    @Nullable
-   public Boolean isPortSecurity() {
+   public Boolean getPortSecurity() {
       return portSecurity;
    }
 
@@ -371,7 +371,7 @@ public class Port {
     * @return the macLearning of the Port
     */
    @Nullable
-   public Boolean isMacLearning() {
+   public Boolean getMacLearning() {
       return macLearning;
    }
 
@@ -511,9 +511,9 @@ public class Port {
        * Provide the adminStateUp to the Port's Builder.
        *
        * @return the Builder.
-       * @see Port#isAdminStateUp()
+       * @see Port#getAdminStateUp()
        */
-      public ParameterizedBuilderType adminStateUp(boolean adminStateUp) {
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
          port.adminStateUp = adminStateUp;
          return self();
       }
@@ -648,9 +648,9 @@ public class Port {
        * Provide the portSecurity to the Port's Builder.
        *
        * @return the Builder.
-       * @see Port#isPortSecurity()
+       * @see Port#getPortSecurity()
        */
-      public ParameterizedBuilderType portSecurity(boolean portSecurity) {
+      public ParameterizedBuilderType portSecurity(Boolean portSecurity) {
          port.portSecurity = portSecurity;
          return self();
       }
@@ -670,9 +670,9 @@ public class Port {
        * Provide the macLearning to the Port's Builder.
        *
        * @return the Builder.
-       * @see Port#isMacLearning()
+       * @see Port#getMacLearning()
        */
-      public ParameterizedBuilderType macLearning(boolean macLearning) {
+      public ParameterizedBuilderType macLearning(Boolean macLearning) {
          port.macLearning = macLearning;
          return self();
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
index b09510a..7330c9b 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
@@ -112,7 +112,7 @@ public class Router {
     * @return the adminStateUp of the Router
     */
    @Nullable
-   public Boolean isAdminStateUp() {
+   public Boolean getAdminStateUp() {
       return adminStateUp;
    }
 
@@ -210,9 +210,9 @@ public class Router {
        * Provide the adminStateUp to the Router's Builder.
        *
        * @return the Builder.
-       * @see Router#isAdminStateUp()
+       * @see Router#getAdminStateUp()
        */
-      public ParameterizedBuilderType adminStateUp(boolean adminStateUp) {
+      public ParameterizedBuilderType adminStateUp(Boolean adminStateUp) {
          router.adminStateUp = adminStateUp;
          return self();
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index cbd2204..b829799 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -59,7 +59,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(true)
+         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(Boolean.TRUE)
                .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
@@ -80,7 +80,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          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.getAdminStateUp(), Boolean.TRUE);
          assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e");
          assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3");
       } finally {
@@ -100,7 +100,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
-         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(true)
+         Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(Boolean.TRUE)
                .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
                .build();
 
@@ -267,7 +267,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          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.getAdminStateUp(), Boolean.TRUE);
          assertEquals(router.getId(), "a9254bdb-2613-4a13-ac4c-adc581fba50d");
          assertEquals(router.getTenantId(), "33a40233088643acb66ff6eb0ebea679");
       } finally {
@@ -338,7 +338,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          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.getAdminStateUp(), Boolean.TRUE);
          assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e");
          assertEquals(router.getTenantId(), "6b96ff0cb17a4b859e1e575d221683d3");
       } finally {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/5827b722/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
index a9a2dc4..8f7ebc8 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/PortApiMockTest.java
@@ -63,7 +63,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
 
          Port.CreatePort createPort = Port.createBuilder("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
                .name("port1")
-               .adminStateUp(true)
+               .adminStateUp(Boolean.TRUE)
                .deviceId("d6b4d3a5-c700-476f-b609-1493dd9dadc0")
                .allowedAddressPairs(ImmutableSet.of(AddressPair.builder("12", "111.222.333.444").build()))
                .build();
@@ -110,7 +110,7 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
 
          Port.CreatePort createPort = Port.createBuilder("6aeaf34a-c482-4bd3-9dc3-7faf36412f12")
                .name("port1")
-               .adminStateUp(true)
+               .adminStateUp(Boolean.TRUE)
                .deviceId("d6b4d3a5-c700-476f-b609-1493dd9dadc0")
                .allowedAddressPairs(ImmutableSet.of(AddressPair.builder("12", "111.222.333.444").build()))
                .build();
@@ -248,14 +248,14 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
 
          Port.CreatePort createPort1 = Port.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa")
                .name("port1")
-               .adminStateUp(true)
+               .adminStateUp(Boolean.TRUE)
                .deviceId("24df1d04-d5cb-41e1-8de5-61ed77c558df")
                .securityGroups(ImmutableSet.of("dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();
 
          Port.CreatePort createPort2 = Port.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406")
                .name("port2")
-               .adminStateUp(false)
+               .adminStateUp(Boolean.FALSE)
                .securityGroups(
                      ImmutableSet.of("8bf3f7cc-8471-40b1-815f-9da47e79775b", "dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();
@@ -293,14 +293,14 @@ public class PortApiMockTest extends BaseNeutronApiMockTest {
 
          Port.CreatePort createPort1 = Port.createBuilder("64239a54-dcc4-4b39-920b-b37c2144effa")
                .name("port1")
-               .adminStateUp(true)
+               .adminStateUp(Boolean.TRUE)
                .deviceId("24df1d04-d5cb-41e1-8de5-61ed77c558df")
                .securityGroups(ImmutableSet.of("dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();
 
          Port.CreatePort createPort2 = Port.createBuilder("e6031bc2-901a-4c66-82da-f4c32ed89406")
                .name("port2")
-               .adminStateUp(false)
+               .adminStateUp(Boolean.FALSE)
                .securityGroups(
                      ImmutableSet.of("8bf3f7cc-8471-40b1-815f-9da47e79775b", "dbc107f4-afcd-4d5a-9352-f68f82241d5b"))
                .build();


[30/50] [abbrv] jclouds git commit: Remove deprecated neutron code

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkBulkOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkBulkOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkBulkOptions.java
deleted file mode 100644
index 7410839..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkBulkOptions.java
+++ /dev/null
@@ -1,138 +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_0.options;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions.CreateNetworkRequest;
-
-public class CreateNetworkBulkOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreateNetworkOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected List<BulkNetwork> networks;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkBulkOptions#getNetworks()
-       */
-      public T networks(Collection<BulkNetwork> networks) {
-         this.networks = ImmutableList.copyOf(networks);
-         return self();
-      }
-
-      public CreateNetworkBulkOptions build() {
-         return new CreateNetworkBulkOptions(networks);
-      }
-
-      public T fromCreateNetworkOptions(CreateNetworkBulkOptions in) {
-         return this.networks(in.getNetworks());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private final List<BulkNetwork> networks;
-
-   protected CreateNetworkBulkOptions() {
-      this.networks = Lists.newArrayList();
-   }
-
-   public CreateNetworkBulkOptions(List<BulkNetwork> networks) {
-      this.networks = networks != null ? ImmutableList.copyOf(networks) : Lists.<BulkNetwork>newArrayList();
-   }
-
-   /**
-    * @return the list of networks to create
-    */
-   public List<BulkNetwork> getNetworks() {
-      return networks;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      List<CreateNetworkRequest> createNetworkRequests = Lists.newArrayList();
-
-      for (BulkNetwork network : this.networks) {
-         if (network.getNetworkType() != null) {
-            //Validations for each NetworkType
-            if (network.getNetworkType() == NetworkType.FLAT) {
-               checkNotNull(network.getPhysicalNetworkName(), "physicalNetworkName must be present when networkType=FLAT");
-            } else if (network.getNetworkType() == NetworkType.VLAN) {
-               checkNotNull(network.getPhysicalNetworkName(), "physicalNetworkName must be present when networkType=VLAN");
-               checkNotNull(network.getSegmentationId(), "segmentationId must be present when networkType=VLAN");
-            } else if (network.getNetworkType() == NetworkType.GRE) {
-               checkNotNull(network.getSegmentationId(), "segmentationId must be present when NetworkType=GRE");
-            }
-         }
-
-         CreateNetworkRequest createNetworkRequest = new CreateNetworkRequest();
-         if (network.getName() != null)
-            createNetworkRequest.name = network.getName();
-         if (network.getAdminStateUp() != null)
-            createNetworkRequest.admin_state_up = network.getAdminStateUp();
-         if (network.getExternal() != null)
-            createNetworkRequest.external = network.getExternal();
-         if (network.getNetworkType() != null)
-            createNetworkRequest.networkType = network.getNetworkType().getValue();
-         if (network.getPhysicalNetworkName() != null && (network.getNetworkType() == NetworkType.FLAT || network.getNetworkType() == NetworkType.VLAN))
-            createNetworkRequest.physicalNetworkName = network.getPhysicalNetworkName();
-         if (network.getSegmentationId() != null && (network.getNetworkType() == NetworkType.VLAN || network.getNetworkType() == NetworkType.GRE))
-            createNetworkRequest.segmentationId = network.getSegmentationId();
-
-         createNetworkRequests.add(createNetworkRequest);
-      }
-
-      return bindToRequest(request, ImmutableMap.of("networks", createNetworkRequests));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkOptions.java
deleted file mode 100644
index f4237f5..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateNetworkOptions.java
+++ /dev/null
@@ -1,240 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.annotations.SerializedName;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class CreateNetworkOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreateNetworkOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-      protected Boolean external;
-      protected NetworkType networkType;
-      protected String physicalNetworkName;
-      protected Integer segmentationId;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getExternal()
-       */
-      public T external(Boolean external) {
-         this.external = external;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getNetworkType()
-       */
-      public T networkType(NetworkType networkType) {
-         this.networkType = networkType;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getPhysicalNetworkName()
-       */
-      public T physicalNetworkName(String physicalNetworkName) {
-         this.physicalNetworkName = physicalNetworkName;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions#getSegmentationId()
-       */
-      public T segmentationId(Integer segmentationId) {
-         this.segmentationId = segmentationId;
-         return self();
-      }
-
-      public CreateNetworkOptions build() {
-         return new CreateNetworkOptions(name, adminStateUp, external, networkType, physicalNetworkName, segmentationId);
-      }
-
-      public T fromCreateNetworkOptions(CreateNetworkOptions in) {
-         return this.name(in.getName())
-            .adminStateUp(in.getAdminStateUp())
-            .external(in.getExternal())
-            .networkType(in.getNetworkType())
-            .physicalNetworkName(in.getPhysicalNetworkName())
-            .segmentationId(in.getSegmentationId());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   protected static class CreateNetworkRequest {
-      protected String name;
-      protected Boolean admin_state_up;
-      @SerializedName("router:external")
-      protected Boolean external;
-      @SerializedName("provider:network_type")
-      protected String networkType;
-      @SerializedName("provider:physical_network")
-      protected String physicalNetworkName;
-      @SerializedName("provider:segmentation_id")
-      protected Integer segmentationId;
-   }
-
-   private final String name;
-   private final Boolean adminStateUp;
-   private final Boolean external;
-   private final NetworkType networkType;
-   private final String physicalNetworkName;
-   private final Integer segmentationId;
-
-   protected CreateNetworkOptions() {
-      this.name = null;
-      this.adminStateUp = null;
-      this.external = null;
-      this.networkType = null;
-      this.physicalNetworkName = null;
-      this.segmentationId = null;
-   }
-
-   public CreateNetworkOptions(String name, Boolean adminStateUp, Boolean external, NetworkType networkType, String physicalNetworkName, Integer segmentationId) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-      this.external = external;
-      this.networkType = networkType;
-      this.physicalNetworkName = physicalNetworkName;
-      this.segmentationId = segmentationId;
-   }
-
-   /**
-    * @return the name of the network
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the administrative state of network. If false, the network does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return true if network is external, false if not
-    */
-   public Boolean getExternal() {
-      return external;
-   }
-
-   /**
-    * @return the type of the network
-    */
-   public NetworkType getNetworkType() {
-      return networkType;
-   }
-
-   /**
-    * @return the physical network name
-    */
-   public String getPhysicalNetworkName() {
-      return physicalNetworkName;
-   }
-
-   /**
-    * @return the segmentation id of the network
-    */
-   public Integer getSegmentationId() {
-      return segmentationId;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      if (this.networkType != null) {
-         //Validations for each NetworkType
-         if (this.networkType == NetworkType.FLAT) {
-            checkNotNull(this.physicalNetworkName, "physicalNetworkName must be present when networkType=FLAT");
-         } else if (this.networkType == NetworkType.VLAN) {
-            checkNotNull(this.physicalNetworkName, "physicalNetworkName must be present when networkType=VLAN");
-            checkNotNull(this.segmentationId, "segmentationId must be present when networkType=VLAN");
-         } else if (this.networkType == NetworkType.GRE) {
-            checkNotNull(this.segmentationId, "segmentationId must be present when NetworkType=GRE");
-         }
-      }
-
-      CreateNetworkRequest createNetworkRequest = new CreateNetworkRequest();
-      if (this.name != null)
-         createNetworkRequest.name = this.name;
-      if (this.adminStateUp != null)
-         createNetworkRequest.admin_state_up = this.adminStateUp;
-      if (this.external != null)
-         createNetworkRequest.external = this.external;
-      if (this.networkType != null)
-         createNetworkRequest.networkType = this.networkType.getValue();
-      if (this.physicalNetworkName != null && (networkType == NetworkType.FLAT || networkType == NetworkType.VLAN))
-         createNetworkRequest.physicalNetworkName = this.physicalNetworkName;
-      if (this.segmentationId != null && (networkType == NetworkType.VLAN || networkType == NetworkType.GRE))
-         createNetworkRequest.segmentationId = this.segmentationId;
-
-      return bindToRequest(request, ImmutableMap.of("network", createNetworkRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortBulkOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortBulkOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortBulkOptions.java
deleted file mode 100644
index bbe473d..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortBulkOptions.java
+++ /dev/null
@@ -1,133 +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_0.options;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkPort;
-import org.jclouds.openstack.neutron.v2_0.domain.IP;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class CreatePortBulkOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreatePortBulkOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected List<BulkPort> ports;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortBulkOptions#getPorts()
-       */
-      public T ports(Collection<BulkPort> ports) {
-         this.ports = ImmutableList.copyOf(ports);
-         return self();
-      }
-
-      public CreatePortBulkOptions build() {
-         return new CreatePortBulkOptions(this.ports);
-      }
-
-      public T fromCreatePortBulkOptions(CreatePortBulkOptions in) {
-         return this.ports(in.getPorts());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private final List<BulkPort> ports;
-
-   protected CreatePortBulkOptions() {
-      this.ports = Lists.newArrayList();
-   }
-
-   public CreatePortBulkOptions(List<BulkPort> ports) {
-      this.ports = ports;
-   }
-
-   /**
-    * @return the list of ports to create
-    */
-   public List<BulkPort> getPorts() {
-      return ports;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      List<CreatePortOptions.CreatePortRequest> createPortRequests = Lists.newArrayList();
-
-      for (BulkPort port : this.ports) {
-         CreatePortOptions.CreatePortRequest createPortRequest = new CreatePortOptions.CreatePortRequest(checkNotNull(port.getNetworkId(), "network id parameter not present"));
-
-         if (port.getName() != null)
-            createPortRequest.name = port.getName();
-         if (port.getAdminStateUp() != null)
-            createPortRequest.admin_state_up = port.getAdminStateUp();
-         if (port.getDeviceId() != null)
-            createPortRequest.device_id = port.getDeviceId();
-         if (port.getDeviceOwner() != null)
-            createPortRequest.device_owner = port.getDeviceOwner();
-         if (port.getMacAddress() != null)
-            createPortRequest.mac_address = port.getMacAddress();
-         if (!port.getFixedIps().isEmpty()) {
-            createPortRequest.fixed_ips = Sets.newHashSet();
-            for (IP fixedIp : port.getFixedIps()) {
-               CreatePortOptions.CreatePortRequest.IP requestIp = new CreatePortOptions.CreatePortRequest.IP();
-               requestIp.subnet_id = fixedIp.getSubnetId();
-               requestIp.ip_address = fixedIp.getIpAddress();
-               createPortRequest.fixed_ips.add(requestIp);
-            }
-         }
-
-         createPortRequests.add(createPortRequest);
-      }
-
-      return bindToRequest(request, ImmutableMap.of("ports", createPortRequests));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortOptions.java
deleted file mode 100644
index 1903da2..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreatePortOptions.java
+++ /dev/null
@@ -1,241 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.IP;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class CreatePortOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreatePortOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected String deviceId;
-      protected String deviceOwner;
-      protected String macAddress;
-      protected Set<IP> fixedIps;
-      protected Boolean adminStateUp;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getDeviceId()
-       */
-      public T deviceId(String deviceId) {
-         this.deviceId = deviceId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getDeviceOwner()
-       */
-      public T deviceOwner(String deviceOwner) {
-         this.deviceOwner = deviceOwner;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getMacAddress()
-       */
-      public T macAddress(String macAddress) {
-         this.macAddress = macAddress;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getFixedIps()
-       */
-      public T fixedIps(Set<IP> fixedIps) {
-         this.fixedIps = fixedIps;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      public CreatePortOptions build() {
-         return new CreatePortOptions(name, deviceId, deviceOwner, macAddress, fixedIps, adminStateUp);
-      }
-
-      public T fromCreatePortOptions(CreatePortOptions options) {
-         return this.name(options.getName())
-            .deviceId(options.getDeviceId())
-            .deviceOwner(options.getDeviceOwner())
-            .macAddress(options.getMacAddress())
-            .fixedIps(options.getFixedIps())
-            .adminStateUp(options.getAdminStateUp());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   protected static class CreatePortRequest {
-      protected String network_id;
-      protected String name;
-      protected String device_id;
-      protected String device_owner;
-      protected String mac_address;
-      protected Set<IP> fixed_ips;
-      protected Boolean admin_state_up;
-
-      protected CreatePortRequest(String networkId) {
-         this.network_id = networkId;
-      }
-
-      protected static final class IP {
-         protected String ip_address;
-         protected String subnet_id;
-      }
-   }
-
-   private final String name;
-   private final String deviceId;
-   private final String deviceOwner;
-   private final String macAddress;
-   private final Set<IP> fixedIps;
-   private final Boolean adminStateUp;
-
-   protected CreatePortOptions() {
-      this.name = null;
-      this.deviceId = null;
-      this.deviceOwner = null;
-      this.macAddress = null;
-      this.fixedIps = Sets.newHashSet();
-      this.adminStateUp = null;
-   }
-
-   public CreatePortOptions(String name, String deviceId, String deviceOwner, String macAddress,
-                            Set<IP> fixedIps, Boolean adminStateUp) {
-      this.name = name;
-      this.deviceId = deviceId;
-      this.deviceOwner = deviceOwner;
-      this.macAddress = macAddress;
-      this.fixedIps = fixedIps != null ? ImmutableSet.copyOf(fixedIps) : Sets.<IP>newHashSet();
-      this.adminStateUp = adminStateUp;
-   }
-
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the id of the device (e.g. server) which will use this port.
-    */
-   public String getDeviceId() {
-      return deviceId;
-   }
-
-   /**
-    * @return the entity (e.g.: dhcp agent) who will be using this port.
-    */
-   public String getDeviceOwner() {
-      return deviceOwner;
-   }
-
-   /**
-    * @return the mac address of this port
-    */
-   public String getMacAddress() {
-      return macAddress;
-   }
-
-   /**
-    * @return the set of fixed ips this port will get assigned
-    */
-   public Set<IP> getFixedIps() {
-      return fixedIps;
-   }
-
-   /**
-    * @return the administrative state of port. If false, port does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      CreatePortRequest createPortRequest = new CreatePortRequest(checkNotNull(postParams.get("network_id"), "networkId not present").toString());
-
-      if (this.name != null)
-         createPortRequest.name = this.name;
-      if (this.deviceId != null)
-         createPortRequest.device_id = this.deviceId;
-      if (this.deviceOwner != null)
-         createPortRequest.device_owner = this.deviceOwner;
-      if (this.macAddress != null)
-         createPortRequest.mac_address = this.macAddress;
-      if (!this.fixedIps.isEmpty()) {
-         createPortRequest.fixed_ips = Sets.newHashSet();
-         for (IP ip : this.fixedIps) {
-            CreatePortRequest.IP requestIp = new CreatePortRequest.IP();
-            requestIp.subnet_id = ip.getSubnetId();
-            requestIp.ip_address = ip.getIpAddress();
-            createPortRequest.fixed_ips.add(requestIp);
-         }
-      }
-      if (this.adminStateUp != null)
-         createPortRequest.admin_state_up = this.adminStateUp;
-
-      return bindToRequest(request, ImmutableMap.of("port", createPortRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateRouterOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateRouterOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateRouterOptions.java
deleted file mode 100644
index 7834953..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateRouterOptions.java
+++ /dev/null
@@ -1,164 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.ExternalGatewayInfo;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Map;
-
-public class CreateRouterOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreateRouterOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-      protected ExternalGatewayInfo externalGatewayInfo;
-
-      /**
-       * @see CreateRouterOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see CreateRouterOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see CreateRouterOptions#getExternalGatewayInfo()
-       */
-      public T externalGatewayInfo(ExternalGatewayInfo externalGatewayInfo) {
-         this.externalGatewayInfo = externalGatewayInfo;
-         return self();
-      }
-
-      public CreateRouterOptions build() {
-         return new CreateRouterOptions(name, adminStateUp, externalGatewayInfo);
-      }
-
-      public T fromCreateRouterOptions(CreateRouterOptions options) {
-         return this.name(options.getName())
-            .adminStateUp(options.getAdminStateUp())
-            .externalGatewayInfo(options.getExternalGatewayInfo());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   protected static class CreateRouterRequest {
-      protected String name;
-      protected Boolean admin_state_up;
-      protected ExternalGatewayInfo external_gateway_info;
-
-      protected CreateRouterRequest() {
-      }
-
-      protected static final class ExternalGatewayInfo {
-         protected String network_id;
-
-         protected ExternalGatewayInfo(String network_id) {
-            this.network_id = network_id;
-         }
-      }
-   }
-
-   protected String name;
-   protected Boolean adminStateUp;
-   protected ExternalGatewayInfo externalGatewayInfo;
-
-   protected CreateRouterOptions() {
-      this.name = null;
-      this.adminStateUp = null;
-      this.externalGatewayInfo = null;
-   }
-
-   public CreateRouterOptions(String name, Boolean adminStateUp, ExternalGatewayInfo externalGatewayInfo) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-      this.externalGatewayInfo = externalGatewayInfo;
-   }
-
-   /**
-    * @return the name for the router
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the administrative state of the router
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the external gateway info for the router
-    */
-   public ExternalGatewayInfo getExternalGatewayInfo() {
-      return externalGatewayInfo;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      CreateRouterRequest createRouterRequest = new CreateRouterRequest();
-
-      if (this.name != null)
-         createRouterRequest.name = this.name;
-      if (this.adminStateUp != null)
-         createRouterRequest.admin_state_up = this.adminStateUp;
-      if (this.externalGatewayInfo != null)
-         createRouterRequest.external_gateway_info = new CreateRouterRequest.ExternalGatewayInfo(this.externalGatewayInfo.getNetworkId());
-
-      return bindToRequest(request, ImmutableMap.of("router", createRouterRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetBulkOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetBulkOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetBulkOptions.java
deleted file mode 100644
index ae85ad1..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetBulkOptions.java
+++ /dev/null
@@ -1,139 +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_0.options;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet;
-import org.jclouds.openstack.neutron.v2_0.domain.HostRoute;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class CreateSubnetBulkOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreateSubnetBulkOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected List<BulkSubnet> subnets;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetBulkOptions#getSubnets()
-       */
-      public T subnets(Collection<BulkSubnet> subnets) {
-         this.subnets = ImmutableList.copyOf(subnets);
-         return self();
-      }
-
-      public CreateSubnetBulkOptions build() {
-         return new CreateSubnetBulkOptions(this.subnets);
-      }
-
-      public T fromCreateSubnetBulkOptions(CreateSubnetBulkOptions in) {
-         return this.subnets(in.getSubnets());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private final List<BulkSubnet> subnets;
-
-   protected CreateSubnetBulkOptions() {
-      this.subnets = Lists.newArrayList();
-   }
-
-   public CreateSubnetBulkOptions(List<BulkSubnet> subnets) {
-      this.subnets = subnets != null ? ImmutableList.copyOf(subnets) : Lists.<BulkSubnet>newArrayList();
-   }
-
-   /**
-    * @return The list of subnets to create
-    */
-   public List<BulkSubnet> getSubnets() {
-      return subnets;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      List<CreateSubnetOptions.CreateSubnetRequest> createSubnetRequests = Lists.newArrayList();
-
-      for (BulkSubnet subnet : subnets) {
-         CreateSubnetOptions.CreateSubnetRequest createSubnetRequest =
-            new CreateSubnetOptions.CreateSubnetRequest(
-               checkNotNull(subnet.getNetworkId(), "network id parameter not present"),
-               checkNotNull(subnet.getIpVersion(), "ip version parameter not present"),
-               checkNotNull(subnet.getCidr(), "cidr parameter not present")
-            );
-
-         if (subnet.getName() != null)
-            createSubnetRequest.name = subnet.getName();
-         if (!subnet.getAllocationPools().isEmpty())
-            createSubnetRequest.allocation_pools = subnet.getAllocationPools();
-         if (subnet.getGatewayIp() != null)
-            createSubnetRequest.gateway_ip = subnet.getGatewayIp();
-         if (subnet.getEnableDhcp() != null)
-            createSubnetRequest.enable_dhcp = subnet.getEnableDhcp();
-         if (!subnet.getDnsNameServers().isEmpty())
-            createSubnetRequest.dns_nameservers = subnet.getDnsNameServers();
-         if (!subnet.getHostRoutes().isEmpty()) {
-            createSubnetRequest.host_routes = Sets.newHashSet();
-            for (HostRoute hostRoute : subnet.getHostRoutes()) {
-               CreateSubnetOptions.CreateSubnetRequest.HostRoute requestHostRoute = new CreateSubnetOptions.CreateSubnetRequest.HostRoute();
-               requestHostRoute.destination = hostRoute.getDestinationCidr();
-               requestHostRoute.nexthop = hostRoute.getNextHop();
-               createSubnetRequest.host_routes.add(requestHostRoute);
-            }
-         }
-
-         createSubnetRequests.add(createSubnetRequest);
-      }
-
-      return bindToRequest(request, ImmutableMap.of("subnets", createSubnetRequests));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetOptions.java
deleted file mode 100644
index c562e06..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/CreateSubnetOptions.java
+++ /dev/null
@@ -1,256 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.AllocationPool;
-import org.jclouds.openstack.neutron.v2_0.domain.HostRoute;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class CreateSubnetOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromCreateSubnetOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Set<AllocationPool> allocationPools;
-      protected String gatewayIp;
-      protected Boolean enableDhcp;
-      protected Set<String> dnsNameServers;
-      protected Set<HostRoute> hostRoutes;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getAllocationPools()
-       */
-      public T allocationPools(Collection<AllocationPool> allocationPools) {
-         this.allocationPools = ImmutableSet.copyOf(allocationPools);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getGatewayIp()
-       */
-      public T gatewayIp(String gatewayIp) {
-         this.gatewayIp = gatewayIp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getEnableDhcp()
-       */
-      public T enableDhcp(Boolean enableDhcp) {
-         this.enableDhcp = enableDhcp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getDnsNameServers()
-       */
-      public T dnsNameServers(Collection<String> dnsNameServers) {
-         this.dnsNameServers = ImmutableSet.copyOf(dnsNameServers);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions#getHostRoutes()
-       */
-      public T hostRoutes(Collection<HostRoute> hostRoutes) {
-         this.hostRoutes = ImmutableSet.copyOf(hostRoutes);
-         return self();
-      }
-
-      public CreateSubnetOptions build() {
-         return new CreateSubnetOptions(name, allocationPools, gatewayIp, enableDhcp, dnsNameServers, hostRoutes);
-      }
-
-      public T fromCreateSubnetOptions(CreateSubnetOptions in) {
-         return this.name(in.getName())
-            .allocationPools(in.getAllocationPools())
-            .gatewayIp(in.getGatewayIp())
-            .enableDhcp(in.getEnableDhcp())
-            .dnsNameServers(in.getDnsNameServers())
-            .hostRoutes(in.getHostRoutes());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   protected static class CreateSubnetRequest {
-      protected String network_id;
-      protected Integer ip_version;
-      protected String cidr;
-      protected String name;
-      protected Set<AllocationPool> allocation_pools;
-      protected String gateway_ip;
-      protected Boolean enable_dhcp;
-      protected Set<String> dns_nameservers;
-      protected Set<HostRoute> host_routes;
-
-      protected CreateSubnetRequest(String networkId, Integer ipVersion, String cidr) {
-         this.network_id = networkId;
-         this.ip_version = ipVersion;
-         this.cidr = cidr;
-      }
-
-      protected static class HostRoute {
-         protected String destination;
-         protected String nexthop;
-      }
-   }
-
-   private final String name;
-   private final Set<AllocationPool> allocationPools;
-   private final String gatewayIp;
-   private final Boolean enableDhcp;
-   private final Set<String> dnsNameServers;
-   private final Set<HostRoute> hostRoutes;
-
-   protected CreateSubnetOptions() {
-      this.name = null;
-      this.allocationPools = Sets.newHashSet();
-      this.gatewayIp = null;
-      this.enableDhcp = null;
-      this.dnsNameServers = Sets.newHashSet();
-      this.hostRoutes = Sets.newHashSet();
-   }
-
-   public CreateSubnetOptions(String name, Set<AllocationPool> allocationPools, String gatewayIp,
-                              Boolean enableDhcp, Set<String> dnsNameServers, Set<HostRoute> hostRoutes) {
-      this.name = name;
-      this.allocationPools = allocationPools != null ? ImmutableSet.copyOf(allocationPools) : Sets.<AllocationPool>newHashSet();
-      this.gatewayIp = gatewayIp;
-      this.enableDhcp = enableDhcp;
-      this.dnsNameServers = dnsNameServers != null ? ImmutableSet.copyOf(dnsNameServers) : Sets.<String>newHashSet();
-      this.hostRoutes = hostRoutes != null ? ImmutableSet.copyOf(hostRoutes) : Sets.<HostRoute>newHashSet();
-   }
-
-   /**
-    * @return the name for the subnet
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the sub-ranges of cidr which will be available for dynamic allocation to ports
-    */
-   public Set<AllocationPool> getAllocationPools() {
-      return allocationPools;
-   }
-
-   /**
-    * @return the default gateway which will be used by devices in this subnet
-    */
-   public String getGatewayIp() {
-      return gatewayIp;
-   }
-
-   /**
-    * @return true to enable DHCP, false to disable
-    */
-   public Boolean getEnableDhcp() {
-      return enableDhcp;
-   }
-
-   /**
-    * @return the set of DNS name servers to be used by hosts in this subnet.
-    */
-   public Set<String> getDnsNameServers() {
-      return dnsNameServers;
-   }
-
-   /**
-    * @return the set of routes that should be used by devices with IPs from this subnet
-    */
-   public Set<HostRoute> getHostRoutes() {
-      return hostRoutes;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      CreateSubnetRequest createSubnetRequest =
-         new CreateSubnetRequest(
-            checkNotNull(postParams.get("network_id"), "networkId not present").toString(),
-            Integer.parseInt(checkNotNull(postParams.get("ip_version"), "ipVersion not present").toString()),
-            checkNotNull(postParams.get("cidr"), "cidr not present").toString()
-         );
-
-      if (this.name != null)
-         createSubnetRequest.name = this.name;
-      if (!this.allocationPools.isEmpty())
-         createSubnetRequest.allocation_pools = this.allocationPools;
-      if (this.gatewayIp != null)
-         createSubnetRequest.gateway_ip = this.gatewayIp;
-      if (this.enableDhcp != null)
-         createSubnetRequest.enable_dhcp = this.enableDhcp;
-      if (!this.dnsNameServers.isEmpty())
-         createSubnetRequest.dns_nameservers = this.dnsNameServers;
-      if (!this.hostRoutes.isEmpty()) {
-         createSubnetRequest.host_routes = Sets.newHashSet();
-         for (HostRoute hostRoute : this.hostRoutes) {
-            CreateSubnetRequest.HostRoute requestHostRoute = new CreateSubnetRequest.HostRoute();
-            requestHostRoute.destination = hostRoute.getDestinationCidr();
-            requestHostRoute.nexthop = hostRoute.getNextHop();
-            createSubnetRequest.host_routes.add(requestHostRoute);
-         }
-      }
-
-      return bindToRequest(request, ImmutableMap.of("subnet", createSubnetRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/EmptyOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/EmptyOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/EmptyOptions.java
deleted file mode 100644
index b5a3d9d..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/EmptyOptions.java
+++ /dev/null
@@ -1,45 +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_0.options;
-
-import com.google.inject.Inject;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import java.util.Map;
-
-/**
- * This class is used for methods who don't need a wrapper around their JSON body
- */
-public class EmptyOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      return bindToRequest(request, (Object) postParams);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateNetworkOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateNetworkOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateNetworkOptions.java
deleted file mode 100644
index e794acf..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateNetworkOptions.java
+++ /dev/null
@@ -1,128 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Map;
-
-public class UpdateNetworkOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromUpdateNetworkOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateNetworkOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateNetworkOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      public UpdateNetworkOptions build() {
-         return new UpdateNetworkOptions(name, adminStateUp);
-      }
-
-      public T fromUpdateNetworkOptions(UpdateNetworkOptions options) {
-         return this.name(options.getName()).adminStateUp(options.getAdminStateUp());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private static class UpdateNetworkRequest {
-      protected String name;
-      protected Boolean admin_state_up;
-   }
-
-   private final String name;
-   private final Boolean adminStateUp;
-
-   protected UpdateNetworkOptions() {
-      this.name = null;
-      this.adminStateUp = null;
-   }
-
-   public UpdateNetworkOptions(String name, Boolean adminStateUp) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-   }
-
-   /**
-    * @return the new name for the network
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the new administrative state for the network. If false, the network does not forward packets.
-    */
-   public boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      UpdateNetworkRequest updateNetworkRequest = new UpdateNetworkRequest();
-
-      if (this.name != null)
-         updateNetworkRequest.name = this.name;
-      if (this.adminStateUp != null)
-         updateNetworkRequest.admin_state_up = this.adminStateUp;
-
-      return bindToRequest(request, ImmutableMap.of("network", updateNetworkRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdatePortOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdatePortOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdatePortOptions.java
deleted file mode 100644
index dfbc820..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdatePortOptions.java
+++ /dev/null
@@ -1,215 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.IP;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-public class UpdatePortOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromUpdatePortOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-      protected String deviceId;
-      protected String deviceOwner;
-      protected Set<IP> fixedIps;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions#getDeviceId()
-       */
-      public T deviceId(String deviceId) {
-         this.deviceId = deviceId;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions#getDeviceOwner()
-       */
-      public T deviceOwner(String deviceOwner) {
-         this.deviceOwner = deviceOwner;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions#getFixedIps()
-       */
-      public T fixedIps(Collection<IP> fixedIps) {
-         this.fixedIps = ImmutableSet.copyOf(fixedIps);
-         return self();
-      }
-
-      public UpdatePortOptions build() {
-         return new UpdatePortOptions(name, adminStateUp, deviceId, deviceOwner, fixedIps);
-      }
-
-      public T fromUpdatePortOptions(UpdatePortOptions options) {
-         return this.name(options.getName())
-            .adminStateUp(options.getAdminStateUp())
-            .deviceId(options.getDeviceId())
-            .deviceOwner(options.getDeviceOwner())
-            .fixedIps(options.getFixedIps());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private static class UpdatePortRequest {
-      protected String name;
-      protected Boolean admin_state_up;
-      protected String device_id;
-      protected String device_owner;
-      protected Set<IP> fixed_ips;
-
-      private static class IP {
-         protected String ip_address;
-         protected String subnet_id;
-      }
-   }
-
-   private final String name;
-   private final Boolean adminStateUp;
-   private final String deviceId;
-   private final String deviceOwner;
-   private final Set<IP> fixedIps;
-
-   protected UpdatePortOptions() {
-      this.name = null;
-      this.adminStateUp = null;
-      this.deviceId = null;
-      this.deviceOwner = null;
-      this.fixedIps = Sets.newHashSet();
-   }
-
-   public UpdatePortOptions(String name, Boolean adminStateUp, String deviceId, String deviceOwner, Set<IP> fixedIps) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-      this.deviceId = deviceId;
-      this.deviceOwner = deviceOwner;
-      this.fixedIps = fixedIps != null ? ImmutableSet.copyOf(fixedIps) : Sets.<IP>newHashSet();
-   }
-
-   /**
-    * @return the new name for the port
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the new administrative state for the port. If false, port does not forward packets.
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the new device id for the port
-    */
-   public String getDeviceId() {
-      return deviceId;
-   }
-
-   /**
-    * @return the new device owner for the port
-    */
-   public String getDeviceOwner() {
-      return deviceOwner;
-   }
-
-   /**
-    * @return a new set of fixed ips this port will get assigned
-    */
-   public Set<IP> getFixedIps() {
-      return fixedIps;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      UpdatePortRequest updatePortRequest = new UpdatePortRequest();
-
-      if (this.name != null)
-         updatePortRequest.name = this.name;
-      if (this.adminStateUp != null)
-         updatePortRequest.admin_state_up = this.adminStateUp;
-      if (this.deviceId != null)
-         updatePortRequest.device_id = this.deviceId;
-      if (this.deviceOwner != null)
-         updatePortRequest.device_owner = this.deviceOwner;
-      if (!this.fixedIps.isEmpty()) {
-         updatePortRequest.fixed_ips = Sets.newHashSet();
-         for (IP fixedIp : this.fixedIps) {
-            UpdatePortRequest.IP requestIp = new UpdatePortRequest.IP();
-            requestIp.ip_address = fixedIp.getIpAddress();
-            requestIp.subnet_id = fixedIp.getSubnetId();
-            updatePortRequest.fixed_ips.add(requestIp);
-         }
-      }
-
-      return bindToRequest(request, ImmutableMap.of("port", updatePortRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateRouterOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateRouterOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateRouterOptions.java
deleted file mode 100644
index c614e91..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateRouterOptions.java
+++ /dev/null
@@ -1,164 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.ExternalGatewayInfo;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Map;
-
-public class UpdateRouterOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromUpdateRouterOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected Boolean adminStateUp;
-      protected ExternalGatewayInfo externalGatewayInfo;
-
-      /**
-       * @see UpdateRouterOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see UpdateRouterOptions#getAdminStateUp()
-       */
-      public T adminStateUp(Boolean adminStateUp) {
-         this.adminStateUp = adminStateUp;
-         return self();
-      }
-
-      /**
-       * @see UpdateRouterOptions#getExternalGatewayInfo()
-       */
-      public T externalGatewayInfo(ExternalGatewayInfo externalGatewayInfo) {
-         this.externalGatewayInfo = externalGatewayInfo;
-         return self();
-      }
-
-      public UpdateRouterOptions build() {
-         return new UpdateRouterOptions(name, adminStateUp, externalGatewayInfo);
-      }
-
-      public T fromUpdateRouterOptions(UpdateRouterOptions options) {
-         return this.name(options.getName())
-            .adminStateUp(options.getAdminStateUp())
-            .externalGatewayInfo(options.getExternalGatewayInfo());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   protected static class UpdateRouterRequest {
-      protected String name;
-      protected Boolean admin_state_up;
-      protected ExternalGatewayInfo external_gateway_info;
-
-      protected UpdateRouterRequest() {
-      }
-
-      protected static final class ExternalGatewayInfo {
-         protected String network_id;
-
-         protected ExternalGatewayInfo(String network_id) {
-            this.network_id = network_id;
-         }
-      }
-   }
-
-   protected String name;
-   protected Boolean adminStateUp;
-   protected ExternalGatewayInfo externalGatewayInfo;
-
-   protected UpdateRouterOptions() {
-      this.name = null;
-      this.adminStateUp = null;
-      this.externalGatewayInfo = null;
-   }
-
-   public UpdateRouterOptions(String name, Boolean adminStateUp, ExternalGatewayInfo externalGatewayInfo) {
-      this.name = name;
-      this.adminStateUp = adminStateUp;
-      this.externalGatewayInfo = externalGatewayInfo;
-   }
-
-   /**
-    * @return the new name for the router
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the new administrative state for the router
-    */
-   public Boolean getAdminStateUp() {
-      return adminStateUp;
-   }
-
-   /**
-    * @return the new information on external gateway for the router
-    */
-   public ExternalGatewayInfo getExternalGatewayInfo() {
-      return externalGatewayInfo;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      UpdateRouterRequest updateRouterRequest = new UpdateRouterRequest();
-
-      if (this.name != null)
-         updateRouterRequest.name = this.name;
-      if (this.adminStateUp != null)
-         updateRouterRequest.admin_state_up = this.adminStateUp;
-      if (this.externalGatewayInfo != null)
-         updateRouterRequest.external_gateway_info = new UpdateRouterRequest.ExternalGatewayInfo(this.externalGatewayInfo.getNetworkId());
-
-      return bindToRequest(request, ImmutableMap.of("router", updateRouterRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateSubnetOptions.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateSubnetOptions.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateSubnetOptions.java
deleted file mode 100644
index 3f2ec26..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/options/UpdateSubnetOptions.java
+++ /dev/null
@@ -1,215 +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_0.options;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.openstack.neutron.v2_0.domain.HostRoute;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToJsonPayload;
-
-import javax.inject.Inject;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-public class UpdateSubnetOptions implements MapBinder {
-
-   @Inject
-   private BindToJsonPayload jsonBinder;
-
-   public static Builder<?> builder() {
-      return new ConcreteBuilder();
-   }
-
-   public Builder<?> toBuilder() {
-      return new ConcreteBuilder().fromUpdateSubnetOptions(this);
-   }
-
-   public abstract static class Builder<T extends Builder<T>> {
-      protected abstract T self();
-
-      protected String name;
-      protected String gatewayIp;
-      protected Boolean enableDhcp;
-      protected Set<String> dnsNameServers;
-      protected Set<HostRoute> hostRoutes;
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions#getName()
-       */
-      public T name(String name) {
-         this.name = name;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions#getGatewayIp()
-       */
-      public T gatewayIp(String gatewayIp) {
-         this.gatewayIp = gatewayIp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions#getEnableDhcp()
-       */
-      public T enableDhcp(Boolean enableDhcp) {
-         this.enableDhcp = enableDhcp;
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions#getDnsNameServers()
-       */
-      public T dnsNameServers(Collection<String> dnsNameServers) {
-         this.dnsNameServers = ImmutableSet.copyOf(dnsNameServers);
-         return self();
-      }
-
-      /**
-       * @see org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions#getHostRoutes()
-       */
-      public T hostRoutes(Collection<HostRoute> hostRoutes) {
-         this.hostRoutes = ImmutableSet.copyOf(hostRoutes);
-         return self();
-      }
-
-      public UpdateSubnetOptions build() {
-         return new UpdateSubnetOptions(name, gatewayIp, enableDhcp, dnsNameServers, hostRoutes);
-      }
-
-      public T fromUpdateSubnetOptions(UpdateSubnetOptions in) {
-         return this.name(in.getName())
-            .gatewayIp(in.getGatewayIp())
-            .enableDhcp(in.getEnableDhcp())
-            .dnsNameServers(in.getDnsNameServers())
-            .hostRoutes(in.getHostRoutes());
-      }
-   }
-
-   private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
-      @Override
-      protected ConcreteBuilder self() {
-         return this;
-      }
-   }
-
-   private static class UpdateSubnetRequest {
-      protected String name;
-      protected String gateway_ip;
-      protected Boolean enable_dhcp;
-      protected Set<String> dns_nameservers;
-      protected Set<HostRoute> host_routes;
-
-      private static class HostRoute {
-         protected String destination;
-         protected String nexthop;
-      }
-   }
-
-   private final String name;
-   private final String gatewayIp;
-   private final Boolean enableDhcp;
-   private final Set<String> dnsNameServers;
-   private final Set<HostRoute> hostRoutes;
-
-   protected UpdateSubnetOptions() {
-      this.name = null;
-      this.gatewayIp = null;
-      this.enableDhcp = null;
-      this.dnsNameServers = Sets.newHashSet();
-      this.hostRoutes = Sets.newHashSet();
-   }
-
-   public UpdateSubnetOptions(String name, String gatewayIp, Boolean enableDhcp, Set<String> dnsNameServers, Set<HostRoute> hostRoutes) {
-      this.name = name;
-      this.gatewayIp = gatewayIp;
-      this.enableDhcp = enableDhcp;
-      this.dnsNameServers = dnsNameServers != null ? ImmutableSet.copyOf(dnsNameServers) : Sets.<String>newHashSet();
-      this.hostRoutes = hostRoutes != null ? ImmutableSet.copyOf(hostRoutes) : Sets.<HostRoute>newHashSet();
-   }
-
-   /**
-    * @return the new name for the subnet
-    */
-   public String getName() {
-      return name;
-   }
-
-   /**
-    * @return the new default gateway used by devices in this subnet
-    */
-   public String getGatewayIp() {
-      return gatewayIp;
-   }
-
-   /**
-    * @return true if DHCP is enabled for this subnet, false if not
-    */
-   public Boolean getEnableDhcp() {
-      return enableDhcp;
-   }
-
-   /**
-    * @return the new set of DNS name servers used by hosts in this subnet
-    */
-   public Set<String> getDnsNameServers() {
-      return dnsNameServers;
-   }
-
-   /**
-    * @return the new set of routes that should be used by devices with IPs from this subnet
-    */
-   public Set<HostRoute> getHostRoutes() {
-      return hostRoutes;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      UpdateSubnetRequest updateSubnetRequest = new UpdateSubnetRequest();
-
-      if (this.name != null)
-         updateSubnetRequest.name = this.name;
-      if (this.gatewayIp != null)
-         updateSubnetRequest.gateway_ip = this.gatewayIp;
-      if (this.enableDhcp != null)
-         updateSubnetRequest.enable_dhcp = this.enableDhcp;
-      if (!this.dnsNameServers.isEmpty())
-         updateSubnetRequest.dns_nameservers = this.dnsNameServers;
-      if (!this.hostRoutes.isEmpty()) {
-         updateSubnetRequest.host_routes = Sets.newHashSet();
-         for (HostRoute hostRoute : this.hostRoutes) {
-            UpdateSubnetRequest.HostRoute requestHostRoute = new UpdateSubnetRequest.HostRoute();
-            requestHostRoute.destination = hostRoute.getDestinationCidr();
-            requestHostRoute.nexthop = hostRoute.getNextHop();
-            updateSubnetRequest.host_routes.add(requestHostRoute);
-         }
-      }
-
-      return bindToRequest(request, ImmutableMap.of("subnet", updateSubnetRequest));
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      return jsonBinder.bindToRequest(request, input);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadataTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadataTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadataTest.java
deleted file mode 100644
index db3019c..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadataTest.java
+++ /dev/null
@@ -1,31 +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_0;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.reflect.TypeToken;
-import org.jclouds.View;
-import org.jclouds.apis.internal.BaseApiMetadataTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "NeutronApiMetadataTest")
-public class NeutronApiMetadataTest extends BaseApiMetadataTest {
-   public NeutronApiMetadataTest() {
-      super(new NeutronApiMetadata(), ImmutableSet.<TypeToken<? extends View>>of());
-   }
-}


[29/50] [abbrv] jclouds git commit: Remove deprecated neutron code

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
deleted file mode 100644
index c3f04cc..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
+++ /dev/null
@@ -1,295 +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_0.extensions;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Set;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.neutron.v2_0.domain.ExternalGatewayInfo;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Router;
-import org.jclouds.openstack.neutron.v2_0.domain.RouterInterface;
-import org.jclouds.openstack.neutron.v2_0.domain.State;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiExpectTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateRouterOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateRouterOptions;
-import org.jclouds.openstack.neutron.v2_0.parse.ParseRouterTest;
-import org.jclouds.rest.AuthorizationException;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Tests parsing and Guice wiring of RouterApi
- *
- */
-@Test(groups = "unit", testName = "RouterApiExpectTest")
-public class RouterApiExpectTest extends BaseNeutronApiExpectTest {
-
-   private static final String ZONE = "region-a.geo-1";
-
-   public void testListReferencesReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_routers.json", APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      Set<? extends ReferenceWithName> references = api.list().concat().toSet();
-      assertEquals(references, listOfReferencesWithNames());
-   }
-
-   public void testListReferencesReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertTrue(api.list().concat().isEmpty());
-   }
-
-   public void testListReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_routers.json", APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      Set<? extends Router> routers = api.listInDetail().concat().toSet();
-      assertEquals(routers, listOfRouters());
-   }
-
-   public void testListReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertTrue(api.listInDetail().concat().isEmpty());
-   }
-
-   public void testGetReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/router.json", APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      Router router = api.get("16dba3bc-f3fa-4775-afdc-237e12c72f6a");
-      assertEquals(router, new ParseRouterTest().expected());
-   }
-
-   public void testGetReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertNull(api.get("16dba3bc-f3fa-4775-afdc-237e12c72f6a"));
-   }
-
-   public void testCreateReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").method("POST")
-            .payload(payloadFromStringWithContentType("{\"router\":{\"name\":\"test\",\"external_gateway_info\":{\"network_id\":\"1234567890\"}}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"router\":{\"id\":\"12345\",\"tenant_id\":\"6789\",\"external_gateway_info\":{\"network_id\":\"1234567890\"}}}", APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      Router router = api.create(CreateRouterOptions.builder().name("test").externalGatewayInfo(ExternalGatewayInfo.builder().networkId("1234567890").build()).build());
-      assertEquals(router, Router.builder().id("12345").tenantId("6789").externalGatewayInfo(ExternalGatewayInfo.builder().networkId("1234567890").build()).build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers").method("POST")
-            .payload(payloadFromStringWithContentType("{\"router\":{\"name\":\"another-test\",\"external_gateway_info\":{\"network_id\":\"1234567890\"}}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.create(CreateRouterOptions.builder().name("another-test").externalGatewayInfo(ExternalGatewayInfo.builder().networkId("1234567890").build()).build());
-   }
-
-   public void testUpdateReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"router\":{\"name\":\"another-test\",\"admin_state_up\":true}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertTrue(api.update("12345", UpdateRouterOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testUpdateReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"router\":{\"name\":\"another-test\",\"admin_state_up\":true}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertFalse(api.update("12345", UpdateRouterOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testDeleteReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      assertTrue(api.delete("12345"));
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testDeleteReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.delete("12345");
-   }
-
-   public void testAddInterfaceForSubnetReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/add_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\",\"port_id\":\"987654321\"}", MediaType.APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      RouterInterface routerInterface = api.addInterfaceForSubnet("12345", "1234567890");
-      assertEquals(routerInterface, RouterInterface.builder().subnetId("1234567890").portId("987654321").build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testAddInterfaceForSubnetReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/add_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.addInterfaceForSubnet("12345", "1234567890");
-   }
-
-   public void testAddInterfaceForPortReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/add_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port_id\":\"987654321\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\",\"port_id\":\"987654321\"}", MediaType.APPLICATION_JSON)).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      RouterInterface routerInterface = api.addInterfaceForPort("12345", "987654321");
-      assertEquals(routerInterface, RouterInterface.builder().subnetId("1234567890").portId("987654321").build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testAddInterfaceForPortReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/add_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.addInterfaceForPort("12345", "1234567890");
-   }
-
-   public void testRemoveInterfaceForSubnetReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/remove_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.removeInterfaceForSubnet("12345", "1234567890");
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testRemoveInterfaceForSubnetReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/remove_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.removeInterfaceForSubnet("12345", "1234567890");
-   }
-
-   public void testRemoveInterfaceForPortReturns2xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/remove_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.removeInterfaceForPort("12345", "1234567890");
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testRemoveInterfaceForPortReturns4xx() {
-      RouterApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/routers/12345/remove_router_interface").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port_id\":\"1234567890\"}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getRouterExtensionForZone(ZONE).get();
-
-      api.removeInterfaceForPort("12345", "1234567890");
-   }
-
-   protected Set<Router> listOfRouters() {
-      return ImmutableSet.of(
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         Router.builder().state(State.ACTIVE).name("wibble").tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         Router.builder().state(State.ACTIVE).name("wibble").tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         Router.builder().state(State.ACTIVE).name("wibble").tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         Router.builder().state(State.ACTIVE).name("wibble").tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         Router.builder().state(State.ACTIVE).name("jclouds-test").tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
deleted file mode 100644
index e51a8c4..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
+++ /dev/null
@@ -1,190 +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_0.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_0.domain.ExternalGatewayInfo;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Router;
-import org.jclouds.openstack.neutron.v2_0.domain.RouterInterface;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
-import org.jclouds.openstack.neutron.v2_0.features.PortApi;
-import org.jclouds.openstack.neutron.v2_0.features.SubnetApi;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiLiveTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateRouterOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateRouterOptions;
-import org.testng.annotations.Test;
-
-/**
- * Tests parsing and Guice wiring of RouterApi
- *
- */
-@Test(groups = "live", testName = "RouterApiLiveTest")
-public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
-
-   public void testGetAndListRouters() {
-      for (String zone : api.getConfiguredZones()) {
-         Set<? extends ReferenceWithName> references = api.getRouterExtensionForZone(zone).get().list().concat().toSet();
-         Set<? extends Router> routers = api.getRouterExtensionForZone(zone).get().listInDetail().concat().toSet();
-
-         assertNotNull(references);
-         assertNotNull(routers);
-         assertEquals(references.size(), routers.size());
-
-         for (Router router : routers) {
-            assertNotNull(router.getName());
-            assertTrue(references.contains(ReferenceWithName.builder().id(router.getId()).tenantId(router.getTenantId()).name(router.getName()).build()));
-
-            Router retrievedRouter = api.getRouterExtensionForZone(zone).get().get(router.getId());
-            assertEquals(router, retrievedRouter);
-         }
-      }
-   }
-
-   public void testCreateUpdateAndDeleteRouter() {
-      for (String zone : api.getConfiguredZones()) {
-         RouterApi routerApi = api.getRouterExtensionForZone(zone).get();
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-
-         Network network = networkApi.create(CreateNetworkOptions.builder().name("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
-         assertNotNull(network);
-
-         Subnet subnet = subnetApi.create(network.getId(), 4, "192.168.0.0/16");
-         assertNotNull(subnet);
-
-         Router ref = routerApi.create(CreateRouterOptions.builder().name("jclouds-router-test")
-            .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build());
-         assertNotNull(ref);
-
-         Router router = routerApi.get(ref.getId());
-
-         assertEquals(router.getId(), ref.getId());
-         assertEquals(router.getName(), "jclouds-router-test");
-         assertEquals(router.getExternalGatewayInfo().getNetworkId(), network.getId());
-         assertTrue(routerApi.update(router.getId(), UpdateRouterOptions.builder().name("jclouds-router-test-rename").build()));
-
-         router = routerApi.get(ref.getId());
-
-         assertEquals(router.getId(), ref.getId());
-         assertEquals(router.getName(), "jclouds-router-test-rename");
-
-         ReferenceWithName ref2 = routerApi.create(CreateRouterOptions.builder().name("jclouds-router-test2")
-            .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build());
-         assertNotNull(ref2);
-
-         assertTrue(routerApi.delete(ref.getId()));
-         assertTrue(routerApi.delete(ref2.getId()));
-         assertTrue(subnetApi.delete(subnet.getId()));
-         assertTrue(networkApi.delete(network.getId()));
-      }
-   }
-
-   public void testCreateAndDeleteRouterInterfaceForSubnet() {
-      for (String zone : api.getConfiguredZones()) {
-         RouterApi routerApi = api.getRouterExtensionForZone(zone).get();
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-
-         Network network = networkApi.create(CreateNetworkOptions.builder().name("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
-         assertNotNull(network);
-
-         Subnet subnet = subnetApi.create(network.getId(), 4, "192.168.0.0/16");
-         assertNotNull(subnet);
-
-         Network network2 = networkApi.create(CreateNetworkOptions.builder().name("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build());
-         assertNotNull(network2);
-
-         Subnet subnet2 = subnetApi.create(network2.getId(), 4, "192.169.0.0/16");
-         assertNotNull(subnet2);
-
-         Router router = routerApi.create(CreateRouterOptions.builder().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 zone : api.getConfiguredZones()) {
-         RouterApi routerApi = api.getRouterExtensionForZone(zone).get();
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         PortApi portApi = api.getPortApiForZone(zone);
-
-         Network network = networkApi.create(CreateNetworkOptions.builder().name("jclouds-network-test").external(true).networkType(NetworkType.LOCAL).build());
-         assertNotNull(network);
-
-         Subnet subnet = subnetApi.create(network.getId(), 4, "192.168.0.0/16");
-         assertNotNull(subnet);
-
-         Network network2 = networkApi.create(CreateNetworkOptions.builder().name("jclouds-network-test2").external(true).networkType(NetworkType.LOCAL).build());
-         assertNotNull(network2);
-
-         Subnet subnet2 = subnetApi.create(network2.getId(), 4, "192.169.0.0/16");
-         assertNotNull(subnet2);
-
-         Port port = portApi.create(network.getId());
-         assertNotNull(port);
-
-         Port port2 = portApi.create(network2.getId());
-         assertNotNull(port2);
-
-         Router router = routerApi.create(CreateRouterOptions.builder().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/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
deleted file mode 100644
index 2d2b09c..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
+++ /dev/null
@@ -1,245 +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_0.features;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Set;
-
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkNetwork;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiExpectTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.parse.ParseNetworkTest;
-import org.jclouds.rest.AuthorizationException;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Tests parsing and Guice wiring of NetworkApi
- *
- */
-@Test(groups = "unit", testName = "NetworkApiExpectTest")
-public class NetworkApiExpectTest extends BaseNeutronApiExpectTest {
-
-   private static final String ZONE = "region-a.geo-1";
-
-   public void testListReferencesReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_networks.json", APPLICATION_JSON)).build())
-         .getNetworkApiForZone(ZONE);
-
-      Set<? extends ReferenceWithName> references = api.list().concat().toSet();
-      assertEquals(references, listOfReferencesWithNames());
-   }
-
-   public void testListReferencesReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertTrue(api.list().concat().isEmpty());
-   }
-
-   public void testListReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_networks.json", APPLICATION_JSON)).build())
-         .getNetworkApiForZone(ZONE);
-
-      Set<? extends Network> nets = api.listInDetail().concat().toSet();
-      assertEquals(nets, listOfNetworks());
-   }
-
-   public void testListReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertTrue(api.listInDetail().concat().isEmpty());
-   }
-
-   public void testGetReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/network.json", APPLICATION_JSON)).build())
-         .getNetworkApiForZone(ZONE);
-
-      Network net = api.get("16dba3bc-f3fa-4775-afdc-237e12c72f6a");
-      assertEquals(net, new ParseNetworkTest().expected());
-   }
-
-   public void testGetReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertNull(api.get("16dba3bc-f3fa-4775-afdc-237e12c72f6a"));
-   }
-
-   public void testCreateReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").method("POST")
-            .payload(payloadFromStringWithContentType("{\"network\":{\"name\":\"another-test\",\"router:external\":true,\"provider:network_type\":\"local\"}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"network\":{\"id\":\"12345\",\"tenant_id\":\"6789\",\"router:external\":true,\"provider:network_type\":\"local\"}}", APPLICATION_JSON)).build())
-         .getNetworkApiForZone(ZONE);
-
-      Network net = api.create(CreateNetworkOptions.builder().name("another-test").external(true).networkType(NetworkType.LOCAL).build());
-      assertEquals(net, Network.builder().id("12345").tenantId("6789").external(true).networkType(NetworkType.LOCAL).build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").method("POST")
-            .payload(payloadFromStringWithContentType("{\"network\":{\"name\":\"another-test\",\"provider:network_type\":\"local\"}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getNetworkApiForZone(ZONE);
-
-      api.create(CreateNetworkOptions.builder().name("another-test").networkType(NetworkType.LOCAL).build());
-   }
-
-   public void testCreateBulkReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").method("POST")
-            .payload(payloadFromStringWithContentType("{\"networks\":[{\"name\":\"test\",\"provider:network_type\":\"local\"},{\"name\":\"test-2\",\"provider:network_type\":\"local\"}]}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"networks\":[{\"id\":\"1\",\"tenant_id\":\"1\",\"name\":\"test\",\"provider:network_type\":\"local\"},{\"id\":\"2\",\"tenant_id\":\"1\",\"name\":\"test-2\",\"provider:network_type\":\"local\"}]}", APPLICATION_JSON)).build())
-         .getNetworkApiForZone(ZONE);
-
-      Set<? extends ReferenceWithName> nets = api.createBulk(
-         CreateNetworkBulkOptions.builder().networks(
-            ImmutableList.of(
-               BulkNetwork.builder().networkType(NetworkType.LOCAL).name("test").build(),
-               BulkNetwork.builder().networkType(NetworkType.LOCAL).name("test-2").build()
-            )
-         ).build()
-      ).toSet();
-      assertEquals(nets, createBulkReturns2xxResponse());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateBulkReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks").method("POST")
-            .payload(payloadFromStringWithContentType("{\"networks\":[{\"name\":\"test\",\"provider:network_type\":\"local\"},{\"name\":\"test-2\",\"provider:network_type\":\"local\"}]}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getNetworkApiForZone(ZONE);
-
-      api.createBulk(
-         CreateNetworkBulkOptions.builder().networks(
-            ImmutableList.of(
-               BulkNetwork.builder().networkType(NetworkType.LOCAL).name("test").build(),
-               BulkNetwork.builder().networkType(NetworkType.LOCAL).name("test-2").build()
-            )
-         ).build()
-      );
-   }
-
-   public void testUpdateReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"network\":{\"name\":\"another-test\",\"admin_state_up\":true}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertTrue(api.update("12345", UpdateNetworkOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testUpdateReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"network\":{\"name\":\"another-test\",\"admin_state_up\":true}}", MediaType.APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertFalse(api.update("12345", UpdateNetworkOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testDeleteReturns2xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getNetworkApiForZone(ZONE);
-
-      assertTrue(api.delete("12345"));
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testDeleteReturns4xx() {
-      NetworkApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/networks/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getNetworkApiForZone(ZONE);
-
-      api.delete("12345");
-   }
-
-   protected Set<Network> listOfNetworks() {
-      return ImmutableSet.of(
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         Network.builder().name("wibble").tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         Network.builder().name("wibble").tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         Network.builder().name("wibble").tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         Network.builder().name("wibble").tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         Network.builder().name("jclouds-test").tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-   protected Set<Network> createBulkReturns2xxResponse() {
-      return ImmutableSet.of(
-         Network.builder().id("1").tenantId("1").name("test").networkType(NetworkType.LOCAL).build(),
-         Network.builder().id("2").tenantId("1").name("test-2").networkType(NetworkType.LOCAL).build()
-      );
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
deleted file mode 100644
index 938e353..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
+++ /dev/null
@@ -1,121 +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_0.features;
-
-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_0.domain.BulkNetwork;
-import org.jclouds.openstack.neutron.v2_0.domain.Network;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiLiveTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.util.PredicateUtil;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
-
-/**
- * Tests parsing and Guice wiring of NetworkApi
- *
- */
-@Test(groups = "live", testName = "NetworkApiLiveTest", singleThreaded = true)
-public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
-
-   public void testGetAndListNetworks() {
-      for (String zone : api.getConfiguredZones()) {
-         Set<? extends ReferenceWithName> references = api.getNetworkApiForZone(zone).list().concat().toSet();
-         Set<? extends Network> networks = api.getNetworkApiForZone(zone).listInDetail().concat().toSet();
-
-         assertNotNull(references);
-         assertNotNull(networks);
-         assertEquals(references.size(), networks.size());
-
-         for (Network network : networks) {
-            assertNotNull(network.getName());
-            assertTrue(references.contains(ReferenceWithName.builder().id(network.getId()).tenantId(network.getTenantId()).name(network.getName()).build()));
-
-            Network retrievedNetwork = api.getNetworkApiForZone(zone).get(network.getId());
-            assertEquals(network, retrievedNetwork);
-         }
-      }
-   }
-
-   public void testCreateUpdateAndDeleteNetwork() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         Network net = networkApi.create(CreateNetworkOptions.builder().name("jclouds-test").networkType(NetworkType.LOCAL).build());
-         Network test = networkApi.create();
-         assertNotNull(net);
-
-         Network network = networkApi.get(net.getId());
-
-         assertEquals(network.getId(), net.getId());
-         assertEquals(network.getName(), "jclouds-test");
-         assertEquals(network.getNetworkType(), NetworkType.LOCAL);
-         assertTrue(network.getSubnets().isEmpty());
-         assertTrue(networkApi.update(net.getId(), UpdateNetworkOptions.builder().name("jclouds-live-test").build()));
-
-         network = networkApi.get(net.getId());
-
-         assertEquals(network.getId(), net.getId());
-         assertEquals(network.getName(), "jclouds-live-test");
-         assertTrue(network.getSubnets().isEmpty());
-
-         Network net2 = networkApi.create(CreateNetworkOptions.builder().name("jclouds-test2").networkType(NetworkType.LOCAL).build());
-         assertNotNull(net2);
-
-         assertTrue(networkApi.delete(net.getId()));
-         assertTrue(networkApi.delete(net2.getId()));
-         assertTrue(networkApi.delete(test.getId()));
-      }
-   }
-
-   public void testBulkCreateNetwork() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         Set<? extends Network> nets = networkApi.createBulk(
-            CreateNetworkBulkOptions.builder().networks(
-               ImmutableList.of(
-                  BulkNetwork.builder().networkType(NetworkType.LOCAL).name("jclouds-live-test-1").adminStateUp(true).build(),
-                  BulkNetwork.builder().networkType(NetworkType.LOCAL).name("jclouds-live-test-2").adminStateUp(false).build(),
-                  BulkNetwork.builder().networkType(NetworkType.LOCAL).name("jclouds-live-test-3").adminStateUp(false).build()
-               )
-            ).build()
-         ).toSet();
-         Set<? extends Network> existingNets = networkApi.listInDetail().concat().toSet();
-
-         assertNotNull(nets);
-         assertTrue(!nets.isEmpty());
-         assertEquals(nets.size(), 3);
-
-         for (Network net : nets) {
-            Predicate<Network> idEqualsPredicate = PredicateUtil.createIdEqualsPredicate(net.getId());
-            assertEquals(1, Sets.filter(existingNets, idEqualsPredicate).size());
-            assertTrue(networkApi.delete(net.getId()));
-         }
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
deleted file mode 100644
index 7f5338d..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
+++ /dev/null
@@ -1,245 +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_0.features;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Set;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkPort;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.State;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiExpectTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions;
-import org.jclouds.openstack.neutron.v2_0.parse.ParsePortTest;
-import org.jclouds.rest.AuthorizationException;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Tests parsing and Guice wiring of PortApi
- *
- */
-@Test(groups = "unit", testName = "PortApiExpectTest")
-public class PortApiExpectTest extends BaseNeutronApiExpectTest {
-
-   private static final String ZONE = "region-a.geo-1";
-
-   public void testListReferencesReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_ports.json", APPLICATION_JSON)).build())
-         .getPortApiForZone(ZONE);
-
-      Set<? extends ReferenceWithName> references = api.list().concat().toSet();
-      assertEquals(references, listOfReferencesWithNames());
-   }
-
-   public void testListReferencesReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getPortApiForZone(ZONE);
-
-      assertTrue(api.list().concat().isEmpty());
-   }
-
-   public void testListReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_ports.json", APPLICATION_JSON)).build())
-         .getPortApiForZone(ZONE);
-
-      Set<? extends Port> ports = api.listInDetail().concat().toSet();
-      assertEquals(ports, listOfPorts());
-   }
-
-   public void testListReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getPortApiForZone(ZONE);
-
-      assertTrue(api.listInDetail().concat().isEmpty());
-   }
-
-   public void testGetReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/624312ff-d14b-4ba3-9834-1c78d23d574d").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/port.json", APPLICATION_JSON)).build())
-         .getPortApiForZone(ZONE);
-
-      Port port = api.get("624312ff-d14b-4ba3-9834-1c78d23d574d");
-      assertEquals(port, new ParsePortTest().expected());
-   }
-
-   public void testGetReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/624312ff-d14b-4ba3-9834-1c78d23d574d").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getPortApiForZone(ZONE);
-
-      assertNull(api.get("624312ff-d14b-4ba3-9834-1c78d23d574d"));
-   }
-
-   public void testCreateReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").method("POST")
-            .payload(payloadFromStringWithContentType("{\"port\":{\"network_id\":\"1\",\"name\":\"test-port\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"port\":{\"id\":\"1\",\"tenant_id\":\"1\",\"network_id\":\"1\",\"name\":\"test-port\"}}", APPLICATION_JSON)).build())
-         .getPortApiForZone(ZONE);
-
-      Port port = api.create("1", CreatePortOptions.builder().name("test-port").build());
-      assertEquals(port, Port.builder().id("1").tenantId("1").name("test-port").networkId("1").build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").method("POST")
-            .payload(payloadFromStringWithContentType("{\"port\":{\"network_id\":\"1\",\"name\":\"test-port\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getPortApiForZone(ZONE);
-
-      api.create("1", CreatePortOptions.builder().name("test-port").build());
-   }
-
-   public void testCreateBulkReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").method("POST")
-            .payload(payloadFromStringWithContentType("{\"ports\":[{\"network_id\":\"1\",\"name\":\"test-port-1\"},{\"network_id\":\"2\",\"name\":\"test-port-2\"}]}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200)
-            .payload(payloadFromStringWithContentType("{\"ports\":[{\"id\":\"1\",\"tenant_id\":\"1\",\"network_id\":\"1\",\"name\":\"test-port-1\"},{\"id\":\"2\",\"tenant_id\":\"1\",\"network_id\":\"2\",\"name\":\"test-port-2\"}]}", APPLICATION_JSON)).build())
-         .getPortApiForZone(ZONE);
-
-      Set<? extends ReferenceWithName> ports = api.createBulk(
-         CreatePortBulkOptions.builder().ports(
-            ImmutableList.of(
-               BulkPort.builder().networkId("1").name("test-port-1").build(),
-               BulkPort.builder().networkId("2").name("test-port-2").build()
-            )
-         ).build()
-      ).toSet();
-      assertEquals(ports, createBulkReturns2xxResponse());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateBulkReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports").method("POST")
-            .payload(payloadFromStringWithContentType("{\"ports\":[{\"network_id\":\"1\",\"name\":\"test-port-1\"},{\"network_id\":\"2\",\"name\":\"test-port-2\"}]}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getPortApiForZone(ZONE);
-
-      api.createBulk(
-         CreatePortBulkOptions.builder().ports(
-            ImmutableList.of(
-               BulkPort.builder().networkId("1").name("test-port-1").build(),
-               BulkPort.builder().networkId("2").name("test-port-2").build()
-            )
-         ).build()
-      );
-   }
-
-   public void testUpdateReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port\":{\"name\":\"another-test\",\"admin_state_up\":true}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getPortApiForZone(ZONE);
-
-      assertTrue(api.update("12345", UpdatePortOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testUpdateReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"port\":{\"name\":\"another-test\",\"admin_state_up\":true}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getPortApiForZone(ZONE);
-
-      assertFalse(api.update("12345", UpdatePortOptions.builder().name("another-test").adminStateUp(true).build()));
-   }
-
-   public void testDeleteReturns2xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getPortApiForZone(ZONE);
-
-      assertTrue(api.delete("12345"));
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testDeleteReturns4xx() {
-      PortApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/ports/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getPortApiForZone(ZONE);
-
-      api.delete("12345");
-   }
-
-   protected Set<Port> listOfPorts() {
-      return ImmutableSet.of(
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("wibble").tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("wibble").tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("wibble").tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("wibble").tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         Port.builder().state(State.ACTIVE).networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-   protected Set<Port> createBulkReturns2xxResponse() {
-      return ImmutableSet.of(
-         Port.builder().id("1").tenantId("1").name("test-port-1").networkId("1").build(),
-         Port.builder().id("2").tenantId("1").name("test-port-2").networkId("2").build()
-      );
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
deleted file mode 100644
index 3b6f93a..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
+++ /dev/null
@@ -1,157 +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_0.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Set;
-
-import org.jclouds.openstack.neutron.v2_0.domain.BulkPort;
-import org.jclouds.openstack.neutron.v2_0.domain.IP;
-import org.jclouds.openstack.neutron.v2_0.domain.NetworkType;
-import org.jclouds.openstack.neutron.v2_0.domain.Port;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiLiveTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateNetworkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreatePortOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdatePortOptions;
-import org.jclouds.openstack.neutron.v2_0.util.PredicateUtil;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
-
-/**
- * Tests PortApi in combination with the Network & SubnetApi
- *
- */
-@Test(groups = "live", testName = "PortApiLiveTest", singleThreaded = true)
-public class PortApiLiveTest extends BaseNeutronApiLiveTest {
-
-   public void testGetAndListPorts() {
-      for (String zone : api.getConfiguredZones()) {
-         Set<? extends ReferenceWithName> references = api.getPortApiForZone(zone).list().concat().toSet();
-         Set<? extends Port> ports = api.getPortApiForZone(zone).listInDetail().concat().toSet();
-
-         assertNotNull(references);
-         assertNotNull(ports);
-         assertEquals(references.size(), ports.size());
-
-         for (Port port : ports) {
-            assertNotNull(port.getName());
-            assertTrue(references.contains(ReferenceWithName.builder().id(port.getId()).tenantId(port.getTenantId()).name(port.getName()).build()));
-
-            Port retrievedPort = api.getPortApiForZone(zone).get(port.getId());
-            assertEquals(port, retrievedPort);
-         }
-      }
-   }
-
-   public void testCreateUpdateAndDeletePort() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         PortApi portApi = api.getPortApiForZone(zone);
-         String networkId = networkApi.create(CreateNetworkOptions.builder().name("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
-         String ipv4SubnetId = subnetApi.create(networkId, 4, "198.51.100.0/24", CreateSubnetOptions.builder().name("JClouds-Live-IPv4-Subnet").build()).getId();
-         String ipv6SubnetId = subnetApi.create(networkId, 6, "a1ca:1e1:c:107d::/96", CreateSubnetOptions.builder().name("JClouds-Live-IPv6-Subnet").build()).getId();
-
-         assertNotNull(networkId);
-         assertNotNull(ipv4SubnetId);
-         assertNotNull(ipv6SubnetId);
-
-         String ipv4PortId = portApi.create(networkId, CreatePortOptions.builder().name("JClouds-Live-IPv4-Port").fixedIps(getFixedAddresses(ipv4SubnetId)).build()).getId();
-         String ipv6PortId = portApi.create(networkId, CreatePortOptions.builder().name("JClouds-Live-IPv6-Port").fixedIps(getFixedAddresses(ipv6SubnetId)).build()).getId();
-
-         assertNotNull(ipv4PortId);
-         assertNotNull(ipv6PortId);
-
-         Port ipv4Port = portApi.get(ipv4PortId);
-         assertNotNull(ipv4Port);
-         assertEquals(ipv4Port.getId(), ipv4PortId);
-         assertEquals(ipv4Port.getName(), "JClouds-Live-IPv4-Port");
-
-         Port ipv6Port = portApi.get(ipv6PortId);
-         assertNotNull(ipv6Port);
-         assertEquals(ipv6Port.getId(), ipv6PortId);
-         assertEquals(ipv6Port.getName(), "JClouds-Live-IPv6-Port");
-
-         assertTrue(portApi.update(ipv4PortId, UpdatePortOptions.builder().name("Updated").build()));
-         Port updatedIpv4Port = portApi.get(ipv4PortId);
-         assertEquals(updatedIpv4Port.getName(), "Updated");
-
-         assertTrue(portApi.delete(ipv4PortId));
-         assertTrue(portApi.delete(ipv6PortId));
-         assertTrue(subnetApi.delete(ipv4SubnetId));
-         assertTrue(subnetApi.delete(ipv6SubnetId));
-         assertTrue(networkApi.delete(networkId));
-      }
-   }
-
-   public void testBulkCreatePort() {
-      for (String zone : api.getConfiguredZones()) {
-         NetworkApi networkApi = api.getNetworkApiForZone(zone);
-         SubnetApi subnetApi = api.getSubnetApiForZone(zone);
-         PortApi portApi = api.getPortApiForZone(zone);
-
-         String networkId = networkApi.create(CreateNetworkOptions.builder().name("JClouds-Live-Network").networkType(NetworkType.LOCAL).build()).getId();
-         String ipv4SubnetId = subnetApi.create(networkId, 4, "198.51.100.0/24", CreateSubnetOptions.builder().name("JClouds-Live-IPv4-Subnet").build()).getId();
-         String ipv6SubnetId = subnetApi.create(networkId, 6, "a1ca:1e1:c:107d::/96", CreateSubnetOptions.builder().name("JClouds-Live-IPv6-Subnet").build()).getId();
-
-         assertNotNull(networkId);
-         assertNotNull(ipv4SubnetId);
-         assertNotNull(ipv6SubnetId);
-
-         Set<? extends Port> ports = portApi.createBulk(
-            CreatePortBulkOptions.builder().ports(
-               ImmutableSet.of(
-                  BulkPort.builder().networkId(networkId).name("JClouds-Live-IPv4-Subnet-1").fixedIps(getFixedAddresses(ipv4SubnetId)).build(),
-                  BulkPort.builder().networkId(networkId).name("JClouds-Live-IPv4-Subnet-2").fixedIps(getFixedAddresses(ipv4SubnetId)).build(),
-                  BulkPort.builder().networkId(networkId).name("JClouds-Live-IPv6-Subnet-1").fixedIps(getFixedAddresses(ipv6SubnetId)).build(),
-                  BulkPort.builder().networkId(networkId).name("JClouds-Live-IPv6-Subnet-2").fixedIps(getFixedAddresses(ipv6SubnetId)).build()
-               )
-            ).build()
-         ).toSet();
-         Set<? extends Port> existingPorts = portApi.listInDetail().concat().toSet();
-
-         assertNotNull(ports);
-         assertFalse(ports.isEmpty());
-         assertEquals(ports.size(), 4);
-
-         for (Port port : ports) {
-            Predicate<Port> idEqualsPredicate = PredicateUtil.createIdEqualsPredicate(port.getId());
-            assertEquals(1, Sets.filter(existingPorts, idEqualsPredicate).size());
-            assertTrue(portApi.delete(port.getId()));
-         }
-         assertTrue(subnetApi.delete(ipv4SubnetId));
-         assertTrue(subnetApi.delete(ipv6SubnetId));
-         assertTrue(networkApi.delete(networkId));
-      }
-   }
-
-   public Set<IP> getFixedAddresses(String subnetId) {
-      return ImmutableSet.of(
-         IP.builder().subnetId(subnetId).build()
-      );
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/83b104d9/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
deleted file mode 100644
index bb40fc3..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
+++ /dev/null
@@ -1,253 +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_0.features;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Set;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet;
-import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
-import org.jclouds.openstack.neutron.v2_0.domain.Subnet;
-import org.jclouds.openstack.neutron.v2_0.internal.BaseNeutronApiExpectTest;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetBulkOptions;
-import org.jclouds.openstack.neutron.v2_0.options.CreateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.options.UpdateSubnetOptions;
-import org.jclouds.openstack.neutron.v2_0.parse.ParseSubnetTest;
-import org.jclouds.rest.AuthorizationException;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Tests parsing and Guice wiring of SubnetApi
- */
-@Test(groups = "unit", testName = "SubnetApiExpectTest")
-public class SubnetApiExpectTest extends BaseNeutronApiExpectTest {
-
-   private static final String ZONE = "region-a.geo-1";
-
-   public void testListReferencesReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_subnets.json", APPLICATION_JSON)).build())
-         .getSubnetApiForZone(ZONE);
-
-      Set<? extends ReferenceWithName> references = api.list().concat().toSet();
-      assertEquals(references, listOfReferencesWithNames());
-   }
-
-   public void testListReferencesReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").addQueryParam("fields", "id", "tenant_id", "name").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertTrue(api.list().concat().isEmpty());
-   }
-
-   public void testListReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/list_subnets.json", APPLICATION_JSON)).build())
-         .getSubnetApiForZone(ZONE);
-
-      Set<? extends Subnet> subnets = api.listInDetail().concat().toSet();
-      assertEquals(subnets, listOfSubnets());
-   }
-
-   public void testListReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertTrue(api.listInDetail().concat().isEmpty());
-   }
-
-   public void testGetReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/624312ff-d14b-4ba3-9834-1c78d23d574d").build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromResourceWithContentType("/subnet.json", APPLICATION_JSON)).build())
-         .getSubnetApiForZone(ZONE);
-
-      Subnet subnet = api.get("624312ff-d14b-4ba3-9834-1c78d23d574d");
-      assertEquals(subnet, new ParseSubnetTest().expected());
-   }
-
-   public void testGetReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/624312ff-d14b-4ba3-9834-1c78d23d574d").build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertNull(api.get("624312ff-d14b-4ba3-9834-1c78d23d574d"));
-   }
-
-   public void testCreateReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").method("POST")
-            .payload(payloadFromStringWithContentType("{\"subnet\":{\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType("{\"subnet\":{\"id\":\"12345\",\"tenant_id\":\"6789\",\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}}", APPLICATION_JSON)).build())
-         .getSubnetApiForZone(ZONE);
-
-      Subnet net = api.create("1234567890", 4, "10.0.3.0/24", CreateSubnetOptions.builder().name("subnet-test").build());
-      assertEquals(net, Subnet.builder().id("12345").tenantId("6789").name("subnet-test").networkId("1234567890").ipVersion(4).cidr("10.0.3.0/24").build());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").method("POST")
-            .payload(payloadFromStringWithContentType("{\"subnet\":{\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getSubnetApiForZone(ZONE);
-
-      api.create("1234567890", 4, "10.0.3.0/24", CreateSubnetOptions.builder().name("subnet-test").build());
-   }
-
-   public void testCreateBulkReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").method("POST")
-            .payload(payloadFromStringWithContentType(
-               "{\"subnets\":[" +
-                  "{\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}," +
-                  "{\"network_id\":\"9876543210\",\"ip_version\":4,\"cidr\":\"192.168.3.0/24\",\"name\":\"subnet-test-2\"}" +
-                  "]}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).payload(payloadFromStringWithContentType(
-            "{\"subnets\":[" +
-               "{\"id\":\"1\",\"tenant_id\":\"1\",\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}," +
-               "{\"id\":\"2\",\"tenant_id\":\"1\",\"network_id\":\"9876543210\",\"ip_version\":4,\"cidr\":\"192.168.3.0/24\",\"name\":\"subnet-test-2\"}" +
-               "]}", APPLICATION_JSON)).build())
-         .getSubnetApiForZone(ZONE);
-
-      Set<? extends Subnet> nets = api.createBulk(
-         CreateSubnetBulkOptions.builder().subnets(
-            ImmutableList.of(
-               BulkSubnet.builder().networkId("1234567890").ipVersion(4).cidr("10.0.3.0/24").name("subnet-test").build(),
-               BulkSubnet.builder().networkId("9876543210").ipVersion(4).cidr("192.168.3.0/24").name("subnet-test-2").build()
-            )
-         ).build()
-      ).toSet();
-      assertEquals(nets, createBulkReturns2xxResponse());
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateBulkReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets").method("POST")
-            .payload(payloadFromStringWithContentType(
-               "{\"subnets\":[" +
-                  "{\"network_id\":\"1234567890\",\"ip_version\":4,\"cidr\":\"10.0.3.0/24\",\"name\":\"subnet-test\"}," +
-                  "{\"network_id\":\"9876543210\",\"ip_version\":4,\"cidr\":\"192.168.3.0/24\",\"name\":\"subnet-test-2\"}" +
-                  "]}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(401).build())
-         .getSubnetApiForZone(ZONE);
-
-      api.createBulk(
-         CreateSubnetBulkOptions.builder().subnets(
-            ImmutableList.of(
-               BulkSubnet.builder().networkId("1234567890").ipVersion(4).cidr("10.0.3.0/24").name("subnet-test").build(),
-               BulkSubnet.builder().networkId("9876543210").ipVersion(4).cidr("192.168.3.0/24").name("subnet-test-2").build()
-            )
-         ).build()
-      );
-   }
-
-   public void testUpdateReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet\":{\"name\":\"another-test\",\"gateway_ip\":\"13.13.13.13\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertTrue(api.update("12345", UpdateSubnetOptions.builder().name("another-test").gatewayIp("13.13.13.13").build()));
-   }
-
-   public void testUpdateReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/12345").method("PUT")
-            .payload(payloadFromStringWithContentType("{\"subnet\":{\"name\":\"another-test\",\"gateway_ip\":\"13.13.13.13\"}}", APPLICATION_JSON)).build(),
-         HttpResponse.builder().statusCode(404).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertFalse(api.update("12345", UpdateSubnetOptions.builder().name("another-test").gatewayIp("13.13.13.13").build()));
-   }
-
-   public void testDeleteReturns2xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(200).build())
-         .getSubnetApiForZone(ZONE);
-
-      assertTrue(api.delete("12345"));
-   }
-
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testDeleteReturns4xx() {
-      SubnetApi api = requestsSendResponses(
-         keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-         authenticatedGET().endpoint(endpoint + "/subnets/12345").method("DELETE").build(),
-         HttpResponse.builder().statusCode(403).build())
-         .getSubnetApiForZone(ZONE);
-
-      api.delete("12345");
-   }
-
-   protected Set<Subnet> listOfSubnets() {
-      return ImmutableSet.of(
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("16dba3bc-f3fa-4775-afdc-237e12c72f6a").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("wibble").tenantId("1234567890").id("1a104cf5-cb18-4d35-9407-2fd2646d9d0b").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("31083ae2-420d-48b2-ac98-9f7a4fd8dbdc").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("49c6d6fa-ff2a-459d-b975-75a8d31c9a89").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("wibble").tenantId("1234567890").id("5cb3d6f4-62cb-41c9-b964-ba7d9df79e4e").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("5d51d012-3491-4db7-b1b5-6f254015015d").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("wibble").tenantId("1234567890").id("5f9cf7dc-22ca-4097-8e49-1cc8b23faf17").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("6319ecad-6bff-48b2-9b53-02ede8cb7588").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("6ba4c788-661f-49ab-9bf8-5f10cbbb2f57").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("74ed170b-5069-4353-ab38-9719766dc57e").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("wibble").tenantId("1234567890").id("b71fcac1-e864-4031-8c5b-edbecd9ece36").build(),
-         Subnet.builder().ipVersion(4).cidr("10.0.3.0/24").networkId("1234567890").name("jclouds-test").tenantId("1234567890").id("c7681895-d84d-4650-9ca0-82c72036b855").build()
-      );
-   }
-
-   protected Set<Subnet> createBulkReturns2xxResponse() {
-      return ImmutableSet.of(
-         Subnet.builder().id("1").tenantId("1").name("subnet-test").networkId("1234567890").ipVersion(4).cidr("10.0.3.0/24").build(),
-         Subnet.builder().id("2").tenantId("1").name("subnet-test-2").networkId("9876543210").ipVersion(4).cidr("192.168.3.0/24").build()
-      );
-   }
-}


[23/50] [abbrv] jclouds git commit: Use Guice multibindings to configure the aliases

Posted by na...@apache.org.
Use Guice multibindings to configure the aliases


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f5a7a6f1
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f5a7a6f1
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f5a7a6f1

Branch: refs/heads/master
Commit: f5a7a6f1d4bf9e8e13f3c88ea3218016a5f994f9
Parents: b02114b
Author: Ignasi Barrera <na...@apache.org>
Authored: Mon Mar 23 23:35:55 2015 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Mon Mar 23 23:35:55 2015 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml                  |  5 ++++
 .../neutron/v2/config/NeutronHttpApiModule.java | 25 ++++++++++----------
 .../v2_0/config/NeutronHttpApiModule.java       | 16 +++++--------
 3 files changed, 23 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5a7a6f1/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 42b3796..15e0225 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -71,6 +71,11 @@
       <artifactId>jclouds-core</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
+    <!-- for the extension namespaces -->
+    <dependency>
+      <groupId>com.google.inject.extensions</groupId>
+      <artifactId>guice-multibindings</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-core</artifactId>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5a7a6f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index e7b33c6..4252467 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -16,6 +16,8 @@
  */
 package org.jclouds.openstack.neutron.v2.config;
 
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneHttpApiModule.aliasBinder;
+
 import java.net.URI;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
@@ -41,9 +43,8 @@ import org.jclouds.rest.functions.ImplicitOptionalConverter;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
 import com.google.inject.Provides;
+import com.google.inject.multibindings.MapBinder;
 
 /**
  * Configures the Neutron connection.
@@ -57,19 +58,17 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
       bind(DateAdapter.class).to(Iso8601DateAdapter.class);
       bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
       super.configure();
+      bindAliases();
    }
 
-   @Provides
-   @Singleton
-   public Multimap<URI, URI> aliases() {
-       return ImmutableMultimap.<URI, URI>builder()
-          .put(URI.create(ExtensionNamespaces.L3_ROUTER),
-               URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"))
-          .put(URI.create(ExtensionNamespaces.SECURITY_GROUPS),
-               URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"))
-          .put(URI.create(ExtensionNamespaces.LBAAS),
-                  URI.create("http://docs.openstack.org/networking/ext/lbaas/api/v1.0"))
-          .build();
+   private void bindAliases() {
+      MapBinder<URI, URI> aliases = aliasBinder(binder());
+      aliases.addBinding(URI.create(ExtensionNamespaces.L3_ROUTER)).toInstance(
+            URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"));
+      aliases.addBinding(URI.create(ExtensionNamespaces.SECURITY_GROUPS)).toInstance(
+            URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"));
+      aliases.addBinding(URI.create(ExtensionNamespaces.LBAAS)).toInstance(
+            URI.create("http://docs.openstack.org/networking/ext/lbaas/api/v1.0"));
    }
 
    @Provides

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5a7a6f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
index fe3d74c..b46262e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
@@ -16,11 +16,14 @@
  */
 package org.jclouds.openstack.neutron.v2_0.config;
 
-import java.net.URI;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneHttpApiModule.aliasBinder;
+
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
+
 import javax.inject.Provider;
 import javax.inject.Singleton;
+
 import org.jclouds.http.HttpErrorHandler;
 import org.jclouds.http.annotation.ClientError;
 import org.jclouds.http.annotation.Redirection;
@@ -34,11 +37,10 @@ import org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamesp
 import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.config.HttpApiModule;
 import org.jclouds.rest.functions.ImplicitOptionalConverter;
+
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
 import com.google.inject.Provides;
 
 /**
@@ -52,17 +54,11 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
       bind(DateAdapter.class).to(Iso8601DateAdapter.class);
       bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
       super.configure();
+      aliasBinder(binder());
    }
    
    @Provides
    @Singleton
-   public Multimap<URI, URI> aliases() {
-       return ImmutableMultimap.<URI, URI>builder()
-          .build();
-   }
-
-   @Provides
-   @Singleton
    public LoadingCache<String, Set<? extends Extension>> provideExtensionsByZone(final Provider<NeutronApi> quantumApi) {
       return CacheBuilder.newBuilder().expireAfterWrite(23, TimeUnit.HOURS)
             .build(new CacheLoader<String, Set<? extends Extension>>() {


[21/50] [abbrv] jclouds git commit: Use AutoService for creation of Service Loader Metadata

Posted by na...@apache.org.
Use AutoService for creation of Service Loader Metadata


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/cc6ff3b8
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/cc6ff3b8
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/cc6ff3b8

Branch: refs/heads/master
Commit: cc6ff3b84e856fd518b4298e1e323c5e4886e3f9
Parents: 0bc9fcf
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Mon Nov 24 10:58:58 2014 -0800
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Wed Dec 3 09:50:08 2014 -0800

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/cc6ff3b8/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 52e2b24..42b3796 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -102,9 +102,9 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-        <groupId>com.google.auto.value</groupId>
-        <artifactId>auto-value</artifactId>
-        <scope>provided</scope>
+      <groupId>com.google.auto.service</groupId>
+      <artifactId>auto-service</artifactId>
+      <scope>provided</scope>
     </dependency>
   </dependencies>
 


[47/50] [abbrv] jclouds git commit: [Openstack-Neutron] move SecurityGroupApi from extensions to features

Posted by na...@apache.org.
[Openstack-Neutron] move SecurityGroupApi from extensions to features


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/64d84c12
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/64d84c12
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/64d84c12

Branch: refs/heads/master
Commit: 64d84c12b0f1ced3689cc57d1b910ad431932d16
Parents: c20afbe
Author: Andrea Turli <an...@gmail.com>
Authored: Tue Nov 21 12:34:12 2017 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Tue Dec 12 09:47:11 2017 +0100

----------------------------------------------------------------------
 .../openstack/neutron/v2/NeutronApi.java        |  18 +-
 .../neutron/v2/extensions/SecurityGroupApi.java | 190 ---------
 .../neutron/v2/features/SecurityGroupApi.java   | 184 +++++++++
 .../v2/functions/RulesToPagedIterable.java      |   4 +-
 .../SecurityGroupsToPagedIterable.java          |   4 +-
 .../v2/extensions/SecurityGroupApiLiveTest.java | 103 -----
 .../v2/extensions/SecurityGroupApiMockTest.java | 413 -------------------
 .../v2/features/SecurityGroupApiLiveTest.java   | 103 +++++
 .../v2/features/SecurityGroupApiMockTest.java   | 394 ++++++++++++++++++
 9 files changed, 692 insertions(+), 721 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
index 6eb3f53..97530f8 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
@@ -24,7 +24,7 @@ import javax.ws.rs.Path;
 import org.jclouds.location.Region;
 import org.jclouds.openstack.neutron.v2.extensions.FloatingIPApi;
 import org.jclouds.openstack.neutron.v2.extensions.RouterApi;
-import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
+import org.jclouds.openstack.neutron.v2.features.SecurityGroupApi;
 import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
 import org.jclouds.openstack.neutron.v2.extensions.FWaaSApi;
 import org.jclouds.openstack.neutron.v2.features.NetworkApi;
@@ -83,34 +83,30 @@ public interface NeutronApi extends Closeable {
    PortApi getPortApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
-    * Provides access to Router features.
-    *
-    * <h3>NOTE</h3>
-    * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
-    * to determine if it is present.
+    * Provides access to SecurityGroup features.
     */
    @Delegate
-   Optional<RouterApi> getRouterApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
+   SecurityGroupApi getSecurityGroupApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
-    * Provides access to Floating IP features.
+    * Provides access to Router features.
     *
     * <h3>NOTE</h3>
     * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
     * to determine if it is present.
     */
    @Delegate
-   Optional<FloatingIPApi> getFloatingIPApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
+   Optional<RouterApi> getRouterApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
-    * Provides access to SecurityGroup features.
+    * Provides access to Floating IP features.
     *
     * <h3>NOTE</h3>
     * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
     * to determine if it is present.
     */
    @Delegate
-   Optional<SecurityGroupApi> getSecurityGroupApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
+   Optional<FloatingIPApi> getFloatingIPApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 
    /**
     * Provides access to LBaaS features.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
deleted file mode 100644
index 4986343..0000000
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
+++ /dev/null
@@ -1,190 +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.extensions;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks;
-import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import org.jclouds.collect.PagedIterable;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.neutron.v2.domain.Rule;
-import org.jclouds.openstack.neutron.v2.domain.Rules;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
-import org.jclouds.openstack.neutron.v2.fallbacks.EmptyRulesFallback;
-import org.jclouds.openstack.neutron.v2.fallbacks.EmptySecurityGroupsFallback;
-import org.jclouds.openstack.neutron.v2.functions.ParseRules;
-import org.jclouds.openstack.neutron.v2.functions.ParseSecurityGroups;
-import org.jclouds.openstack.neutron.v2.functions.RulesToPagedIterable;
-import org.jclouds.openstack.neutron.v2.functions.SecurityGroupsToPagedIterable;
-import org.jclouds.openstack.v2_0.ServiceType;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.openstack.v2_0.services.Extension;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Transform;
-import org.jclouds.rest.annotations.WrapWith;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Provides access to Security Group extension operations for the OpenStack Networking (Neutron) v2 API.
- * <p/>
- * Security groups and security group rules allows administrators and tenants the ability to specify the type of
- * traffic and direction (ingress/egress) that is allowed to pass through a port. A security group is a container for
- * security group rules.
- */
-@Beta
-@RequestFilters(AuthenticateRequest.class)
-@Consumes(MediaType.APPLICATION_JSON)
-@Produces(MediaType.APPLICATION_JSON)
-@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.SECURITY_GROUPS, name = "security-group", alias = "security-group")
-public interface SecurityGroupApi {
-   /**
-    * Groups
-    */
-
-   /**
-    * @return all security groups currently defined in Neutron for the current tenant.
-    */
-   @Path("/security-groups")
-   @Named("security-group:list")
-   @GET
-   @ResponseParser(ParseSecurityGroups.class)
-   @Transform(SecurityGroupsToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<SecurityGroup> listSecurityGroups();
-
-   /**
-    * @return all security groups currently defined in Neutron for the current tenant.
-    */
-   @Path("/security-groups")
-   @Named("security-group:list")
-   @GET
-   @ResponseParser(ParseSecurityGroups.class)
-   @Fallback(EmptySecurityGroupsFallback.class)
-   SecurityGroups listSecurityGroups(PaginationOptions options);
-
-   /**
-    * @param id the id of the security group to return
-    * @return SecurityGroup or null if not found.
-    */
-   @Path("/security-groups/{id}")
-   @Named("security-group:get")
-   @GET
-   @SelectJson("security_group")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   SecurityGroup getSecurityGroup(@PathParam("id") String id);
-
-   /**
-    * Creates a new SecurityGroup.
-    *
-    * @param securityGroup Describes the security group to be created.
-    * @return a reference of the newly-created security group
-    */
-   @Path("/security-groups")
-   @Named("secuity-group:create")
-   @POST
-   @SelectJson("security_group")
-   SecurityGroup create(@WrapWith("security_group") SecurityGroup.CreateSecurityGroup securityGroup);
-
-   /**
-    * Deletes the specified Security Group.
-    *
-    * @param id the id of the security group to delete
-    * @return true if delete was successful, false if not
-    */
-   @Path("/security-groups/{id}")
-   @Named("security-group:delete")
-   @DELETE
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean deleteSecurityGroup(@PathParam("id") String id);
-
-   /**
-    * Rules
-    */
-
-   /**
-    * @return all security groups rules currently defined in Neutron for the current tenant.
-    */
-   @Path("/security-group-rules")
-   @Named("security-group-rule:list")
-   @GET
-   @ResponseParser(ParseRules.class)
-   @Transform(RulesToPagedIterable.class)
-   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
-   PagedIterable<Rule> listRules();
-
-   /**
-    * @return all security groups rules currently defined in Neutron for the current tenant.
-    */
-   @Path("/security-group-rules")
-   @Named("security-group-rule:list")
-   @GET
-   @ResponseParser(ParseRules.class)
-   @Fallback(EmptyRulesFallback.class)
-   Rules listRules(PaginationOptions options);
-
-   /**
-    * @param id the id of the security group rule to return.
-    * @return SecurityGroupRule or null if not found.
-    */
-   @Path("/security-group-rules/{id}")
-   @Named("security-group-rule:get")
-   @GET
-   @SelectJson("security_group_rule")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
-   @Nullable
-   Rule get(@PathParam("id") String id);
-
-   /**
-    * Creates a new Security Group Rule.
-    *
-    * @param securityGroupRule Describes the security group rule to be created.
-    * @return a reference of the newly-created security group rule.
-    */
-   @Path("/security-group-rules")
-   @Named("security-group-rule:create")
-   @POST
-   @SelectJson("security_group_rule")
-   Rule create(@WrapWith("security_group_rule") Rule.CreateRule securityGroupRule);
-
-   /**
-    * Deletes the specified Security Group Rule.
-    *
-    * @param id the id of the security group rule to delete.
-    * @return true if delete was successful, false if not.
-    */
-   @Path("/security-group-rules/{id}")
-   @Named("security-group-rule:delete")
-   @DELETE
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
-   boolean deleteRule(@PathParam("id") String id);
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
new file mode 100644
index 0000000..4b9803c
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
@@ -0,0 +1,184 @@
+/*
+ * 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 javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.Rule;
+import org.jclouds.openstack.neutron.v2.domain.Rules;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptyRulesFallback;
+import org.jclouds.openstack.neutron.v2.fallbacks.EmptySecurityGroupsFallback;
+import org.jclouds.openstack.neutron.v2.functions.ParseRules;
+import org.jclouds.openstack.neutron.v2.functions.ParseSecurityGroups;
+import org.jclouds.openstack.neutron.v2.functions.RulesToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.SecurityGroupsToPagedIterable;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to Security Group extension operations for the OpenStack Networking (Neutron) v2 API.
+ * <p/>
+ * Security groups and security group rules allows administrators and tenants the ability to specify the type of
+ * traffic and direction (ingress/egress) that is allowed to pass through a port. A security group is a container for
+ * security group rules.
+ */
+@Beta
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.APPLICATION_JSON)
+public interface SecurityGroupApi {
+
+   /**
+    * @return all security groups currently defined in Neutron for the current tenant.
+    */
+   @Path("/security-groups")
+   @Named("security-group:list")
+   @GET
+   @ResponseParser(ParseSecurityGroups.class)
+   @Transform(SecurityGroupsToPagedIterable.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<SecurityGroup> listSecurityGroups();
+
+   /**
+    * @return all security groups currently defined in Neutron for the current tenant.
+    */
+   @Path("/security-groups")
+   @Named("security-group:list")
+   @GET
+   @ResponseParser(ParseSecurityGroups.class)
+   @Fallback(EmptySecurityGroupsFallback.class)
+   SecurityGroups listSecurityGroups(PaginationOptions options);
+
+   /**
+    * @param id the id of the security group to return
+    * @return SecurityGroup or null if not found.
+    */
+   @Path("/security-groups/{id}")
+   @Named("security-group:get")
+   @GET
+   @SelectJson("security_group")
+   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Nullable
+   SecurityGroup getSecurityGroup(@PathParam("id") String id);
+
+   /**
+    * Creates a new SecurityGroup.
+    *
+    * @param securityGroup Describes the security group to be created.
+    * @return a reference of the newly-created security group
+    */
+   @Path("/security-groups")
+   @Named("secuity-group:create")
+   @POST
+   @SelectJson("security_group")
+   SecurityGroup create(@WrapWith("security_group") SecurityGroup.CreateSecurityGroup securityGroup);
+
+   /**
+    * Deletes the specified Security Group.
+    *
+    * @param id the id of the security group to delete
+    * @return true if delete was successful, false if not
+    */
+   @Path("/security-groups/{id}")
+   @Named("security-group:delete")
+   @DELETE
+   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   boolean deleteSecurityGroup(@PathParam("id") String id);
+
+   /**
+    * Rules
+    */
+
+   /**
+    * @return all security groups rules currently defined in Neutron for the current tenant.
+    */
+   @Path("/security-group-rules")
+   @Named("security-group-rule:list")
+   @GET
+   @ResponseParser(ParseRules.class)
+   @Transform(RulesToPagedIterable.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   PagedIterable<Rule> listRules();
+
+   /**
+    * @return all security groups rules currently defined in Neutron for the current tenant.
+    */
+   @Path("/security-group-rules")
+   @Named("security-group-rule:list")
+   @GET
+   @ResponseParser(ParseRules.class)
+   @Fallback(EmptyRulesFallback.class)
+   Rules listRules(PaginationOptions options);
+
+   /**
+    * @param id the id of the security group rule to return.
+    * @return SecurityGroupRule or null if not found.
+    */
+   @Path("/security-group-rules/{id}")
+   @Named("security-group-rule:get")
+   @GET
+   @SelectJson("security_group_rule")
+   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Nullable
+   Rule get(@PathParam("id") String id);
+
+   /**
+    * Creates a new Security Group Rule.
+    *
+    * @param securityGroupRule Describes the security group rule to be created.
+    * @return a reference of the newly-created security group rule.
+    */
+   @Path("/security-group-rules")
+   @Named("security-group-rule:create")
+   @POST
+   @SelectJson("security_group_rule")
+   Rule create(@WrapWith("security_group_rule") Rule.CreateRule securityGroupRule);
+
+   /**
+    * Deletes the specified Security Group Rule.
+    *
+    * @param id the id of the security group rule to delete.
+    * @return true if delete was successful, false if not.
+    */
+   @Path("/security-group-rules/{id}")
+   @Named("security-group-rule:delete")
+   @DELETE
+   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   boolean deleteRule(@PathParam("id") String id);
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/RulesToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/RulesToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/RulesToPagedIterable.java
index d664cd6..e4283c2 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/RulesToPagedIterable.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/RulesToPagedIterable.java
@@ -24,7 +24,7 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.domain.Rule;
-import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
+import org.jclouds.openstack.neutron.v2.features.SecurityGroupApi;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import com.google.common.base.Function;
@@ -46,7 +46,7 @@ public class RulesToPagedIterable extends
    @Override
    protected Function<Object, IterableWithMarker<Rule>> markerToNextForArg0(Optional<Object> arg0) {
       String region = arg0.isPresent() ? arg0.get().toString() : null;
-      final SecurityGroupApi securityGroupApi = api.getSecurityGroupApi(region).get();
+      final SecurityGroupApi securityGroupApi = api.getSecurityGroupApi(region);
       return new Function<Object, IterableWithMarker<Rule>>() {
 
          @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/SecurityGroupsToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/SecurityGroupsToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/SecurityGroupsToPagedIterable.java
index 15c7c14..ddb4240 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/SecurityGroupsToPagedIterable.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/SecurityGroupsToPagedIterable.java
@@ -24,7 +24,7 @@ import org.jclouds.collect.IterableWithMarker;
 import org.jclouds.collect.internal.Arg0ToPagedIterable;
 import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
-import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
+import org.jclouds.openstack.neutron.v2.features.SecurityGroupApi;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import com.google.common.base.Function;
@@ -46,7 +46,7 @@ public class SecurityGroupsToPagedIterable extends
    @Override
    protected Function<Object, IterableWithMarker<SecurityGroup>> markerToNextForArg0(Optional<Object> arg0) {
       String region = arg0.isPresent() ? arg0.get().toString() : null;
-      final SecurityGroupApi securityGroupApi = api.getSecurityGroupApi(region).get();
+      final SecurityGroupApi securityGroupApi = api.getSecurityGroupApi(region);
       return new Function<Object, IterableWithMarker<SecurityGroup>>() {
 
          @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
deleted file mode 100644
index c02ed49..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
+++ /dev/null
@@ -1,103 +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.extensions;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.openstack.neutron.v2.domain.Rule;
-import org.jclouds.openstack.neutron.v2.domain.RuleDirection;
-import org.jclouds.openstack.neutron.v2.domain.RuleEthertype;
-import org.jclouds.openstack.neutron.v2.domain.RuleProtocol;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
-import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest;
-import org.testng.annotations.Test;
-
-/**
- * Tests parsing and Guice wiring of RouterApi
- */
-@Test(groups = "live", testName = "SecurityGroupApiLiveTest")
-public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
-
-   /**
-    * Smoke test for the Security Group extension for Neutron
-    */
-   public void testCreateUpdateAndDeleteSecurityGroup() {
-      for (String region : api.getConfiguredRegions()) {
-         SecurityGroupApi sgApi = null;
-         Rule rule = null;
-         SecurityGroup securityGroup = null;
-
-         try {
-            sgApi = api.getSecurityGroupApi(region).get();
-
-            securityGroup = sgApi.create(
-                  SecurityGroup.createBuilder().name("jclouds-test").description("jclouds test security group")
-                        .build());
-            assertNotNull(securityGroup);
-
-            rule = sgApi.create(
-                  Rule.createBuilder(RuleDirection.INGRESS, securityGroup.getId())
-                        .ethertype(RuleEthertype.IPV6)
-                        .portRangeMax(90)
-                        .portRangeMin(80)
-                        .protocol(RuleProtocol.TCP)
-                        .build());
-
-            assertNotNull(rule);
-
-            // Refresh
-            securityGroup = sgApi.getSecurityGroup(securityGroup.getId());
-
-            assertEquals(securityGroup.getName(), "jclouds-test");
-            assertEquals(securityGroup.getDescription(), "jclouds test security group");
-
-            assertEquals(securityGroup.getRules().size(), 1);
-
-            Rule newSecGroupRule = null;
-
-            for (Rule sgr : securityGroup.getRules()) {
-               if (sgr.getId().equals(rule.getId())) {
-                  newSecGroupRule = sgr;
-                  break;
-               }
-            }
-            assertNotNull(newSecGroupRule, "Did not find the new rule in the group.");
-
-            assertEquals(rule, newSecGroupRule);
-
-            assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
-            assertEquals(rule.getProtocol(), RuleProtocol.TCP);
-            assertEquals(rule.getPortRangeMax().intValue(), 90);
-            assertEquals(rule.getPortRangeMin().intValue(), 80);
-            assertEquals(rule.getDirection(), RuleDirection.INGRESS);
-         } finally {
-            if (sgApi != null) {
-               try {
-                  if (rule != null) {
-                     assertTrue(sgApi.deleteRule(rule.getId()));
-                  }
-               } finally {
-                  assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
-               }
-            }
-         }
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
deleted file mode 100644
index 682232e..0000000
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiMockTest.java
+++ /dev/null
@@ -1,413 +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.extensions;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-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.Rule;
-import org.jclouds.openstack.neutron.v2.domain.RuleDirection;
-import org.jclouds.openstack.neutron.v2.domain.RuleEthertype;
-import org.jclouds.openstack.neutron.v2.domain.RuleProtocol;
-import org.jclouds.openstack.neutron.v2.domain.Rules;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
-import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
-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 SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
-
-   public void testCreateSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_create_response.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroup.CreateSecurityGroup createSecurityGroup = SecurityGroup.createBuilder().name("new-webservers")
-               .description("security group for webservers")
-               .build();
-
-         SecurityGroup securityGroup = api.create(createSecurityGroup);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-groups", "/security_group_create_request.json");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroup);
-         assertEquals(securityGroup.getId(), "2076db17-a522-4506-91de-c6dd8e837028");
-         assertEquals(securityGroup.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
-         assertEquals(securityGroup.getName(), "new-webservers");
-         assertEquals(securityGroup.getDescription(), "security group for webservers");
-
-         Rule sgr0 = securityGroup.getRules().get(0);
-         Rule sgr1 = securityGroup.getRules().get(1);
-
-         assertEquals(sgr0.getId(), "38ce2d8e-e8f1-48bd-83c2-d33cb9f50c3d");
-         assertEquals(sgr1.getId(), "565b9502-12de-4ffd-91e9-68885cff6ae1");
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testCreateSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_rule_create_response.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rule.CreateRule createSecurityGroupRule = Rule.createBuilder(
-               RuleDirection.INGRESS, "a7734e61-b545-452d-a3cd-0189cbd9747a")
-               .portRangeMin(80)
-               .portRangeMax(80)
-               .ethertype(RuleEthertype.IPV4)
-               .protocol(RuleProtocol.TCP)
-               .remoteGroupId("85cc3048-abc3-43cc-89b3-377341426ac5")
-               .build();
-
-         Rule rule = api.create(createSecurityGroupRule);
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-group-rules", "/security_group_rule_create_request.json");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rule);
-         assertEquals(rule.getId(), "2bc0accf-312e-429a-956e-e4407625eb62");
-         assertEquals(rule.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
-         assertEquals(rule.getDirection(), RuleDirection.INGRESS);
-         assertEquals(rule.getPortRangeMax().intValue(), 80);
-         assertEquals(rule.getPortRangeMin().intValue(), 80);
-         assertEquals(rule.getEthertype(), RuleEthertype.IPV4);
-         assertEquals(rule.getProtocol(), RuleProtocol.TCP);
-         assertEquals(rule.getRemoteGroupId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
-         assertEquals(rule.getSecurityGroupId(), "a7734e61-b545-452d-a3cd-0189cbd9747a");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testListSpecificPageSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged1.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroups securityGroups = api.listSecurityGroups(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroups);
-         assertEquals(securityGroups.size(), 2);
-         // Ensures the full collection is parsed and ordering is preserved.
-         assertEquals(securityGroups.first().get().getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
-         assertEquals(securityGroups.get(1).getId(), "85cc3048-abc3-43cc-89b3-377341426ac52");
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testListSpecificPageSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged1.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rules rules = api.listRules(PaginationOptions.Builder.limit(2).marker("abcdefg"));
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?limit=2&marker=abcdefg");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rules);
-         assertEquals(rules.size(), 4);
-         // Ensures the full collection is parsed and ordering is preserved.
-         assertEquals(rules.first().get().getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
-         assertEquals(rules.get(3).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c");
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testListPagedSecurityGroups() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged1.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged2.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<SecurityGroup> securityGroups = api.listSecurityGroups().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 4);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroups);
-         assertEquals(securityGroups.size(), 4);
-         // Ensures ordering is preserved and both pages are parsed.
-         assertEquals(securityGroups.get(0).getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
-         assertEquals(securityGroups.get(3).getId(), "85cc3048-abc3-43cc-89b3-377341426ac524");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testListPagedSecurityGroupRules() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged1.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged2.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         // Note: Lazy! Have to actually look at the collection.
-         List<Rule> rules = api.listRules().concat().toList();
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 4);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rules);
-         assertEquals(rules.size(), 8);
-         // Ensures both pages are tested and ordering is preserved.
-         assertEquals(rules.get(0).getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
-         assertEquals(rules.get(7).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c2");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testGetSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_get_response.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         SecurityGroup securityGroup = api.getSecurityGroup("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups/12345");
-
-         /*
-          * Check response
-          */
-         assertNotNull(securityGroup);
-         assertEquals(securityGroup.getName(), "default");
-         assertEquals(securityGroup.getDescription(), "default");
-         assertEquals(securityGroup.getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
-         assertEquals(securityGroup.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
-         Rule sgr = securityGroup.getRules().get(0);
-         assertEquals(sgr.getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testGetSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201).setBody(stringFromResource("/security_group_rule_get_response.json"))));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         Rule rule = api.get("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules/12345");
-
-         /*
-          * Check response
-          */
-         assertNotNull(rule);
-         assertEquals(rule.getDirection(), RuleDirection.EGRESS);
-         assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
-         assertEquals(rule.getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
-         assertEquals(rule.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
-         assertEquals(rule.getSecurityGroupId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteSecurityGroup() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         boolean result = api.deleteSecurityGroup("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-groups/12345");
-
-         /*
-          * Check response
-          */
-         assertTrue(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-
-   public void testDeleteSecurityGroupRule() throws IOException, InterruptedException, URISyntaxException {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/extension_list.json"))));
-      server.enqueue(addCommonHeaders(
-            new MockResponse().setResponseCode(201)));
-
-      try {
-         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
-         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne").get();
-
-         boolean result = api.deleteRule("12345");
-
-         /*
-          * Check request
-          */
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server, uriApiVersion + "");
-         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-group-rules/12345");
-
-         /*
-          * Check response
-          */
-         assertTrue(result);
-      } finally {
-         server.shutdown();
-      }
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
new file mode 100644
index 0000000..2cb30fc
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
@@ -0,0 +1,103 @@
+/*
+ * 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.assertTrue;
+
+import org.jclouds.openstack.neutron.v2.domain.Rule;
+import org.jclouds.openstack.neutron.v2.domain.RuleDirection;
+import org.jclouds.openstack.neutron.v2.domain.RuleEthertype;
+import org.jclouds.openstack.neutron.v2.domain.RuleProtocol;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
+import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest;
+import org.testng.annotations.Test;
+
+/**
+ * Tests parsing and Guice wiring of RouterApi
+ */
+@Test(groups = "live", testName = "SecurityGroupApiLiveTest")
+public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
+
+   /**
+    * Smoke test for the Security Group extension for Neutron
+    */
+   public void testCreateUpdateAndDeleteSecurityGroup() {
+      for (String region : api.getConfiguredRegions()) {
+         SecurityGroupApi sgApi = null;
+         Rule rule = null;
+         SecurityGroup securityGroup = null;
+
+         try {
+            sgApi = api.getSecurityGroupApi(region);
+
+            securityGroup = sgApi.create(
+                  SecurityGroup.createBuilder().name("jclouds-test").description("jclouds test security group")
+                        .build());
+            assertNotNull(securityGroup);
+
+            rule = sgApi.create(
+                  Rule.createBuilder(RuleDirection.INGRESS, securityGroup.getId())
+                        .ethertype(RuleEthertype.IPV6)
+                        .portRangeMax(90)
+                        .portRangeMin(80)
+                        .protocol(RuleProtocol.TCP)
+                        .build());
+
+            assertNotNull(rule);
+
+            // Refresh
+            securityGroup = sgApi.getSecurityGroup(securityGroup.getId());
+
+            assertEquals(securityGroup.getName(), "jclouds-test");
+            assertEquals(securityGroup.getDescription(), "jclouds test security group");
+
+            assertEquals(securityGroup.getRules().size(), 1);
+
+            Rule newSecGroupRule = null;
+
+            for (Rule sgr : securityGroup.getRules()) {
+               if (sgr.getId().equals(rule.getId())) {
+                  newSecGroupRule = sgr;
+                  break;
+               }
+            }
+            assertNotNull(newSecGroupRule, "Did not find the new rule in the group.");
+
+            assertEquals(rule, newSecGroupRule);
+
+            assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
+            assertEquals(rule.getProtocol(), RuleProtocol.TCP);
+            assertEquals(rule.getPortRangeMax().intValue(), 90);
+            assertEquals(rule.getPortRangeMin().intValue(), 80);
+            assertEquals(rule.getDirection(), RuleDirection.INGRESS);
+         } finally {
+            if (sgApi != null) {
+               try {
+                  if (rule != null) {
+                     assertTrue(sgApi.deleteRule(rule.getId()));
+                  }
+               } finally {
+                  assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
+               }
+            }
+         }
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/64d84c12/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiMockTest.java
new file mode 100644
index 0000000..39bb8c5
--- /dev/null
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiMockTest.java
@@ -0,0 +1,394 @@
+/*
+ * 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 com.google.common.collect.Iterables.size;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+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.Rule;
+import org.jclouds.openstack.neutron.v2.domain.RuleDirection;
+import org.jclouds.openstack.neutron.v2.domain.RuleEthertype;
+import org.jclouds.openstack.neutron.v2.domain.RuleProtocol;
+import org.jclouds.openstack.neutron.v2.domain.Rules;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
+import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiMockTest;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.testng.annotations.Test;
+
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+
+/**
+ * Tests SecurityGroupApi Guice wiring and parsing
+ *
+ */
+@Test
+public class SecurityGroupApiMockTest extends BaseNeutronApiMockTest {
+
+   public void testCreateSecurityGroup() 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("/security_group_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         SecurityGroup.CreateSecurityGroup createSecurityGroup = SecurityGroup.createBuilder().name("new-webservers")
+               .description("security group for webservers")
+               .build();
+
+         SecurityGroup securityGroup = api.create(createSecurityGroup);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-groups", "/security_group_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(securityGroup);
+         assertEquals(securityGroup.getId(), "2076db17-a522-4506-91de-c6dd8e837028");
+         assertEquals(securityGroup.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
+         assertEquals(securityGroup.getName(), "new-webservers");
+         assertEquals(securityGroup.getDescription(), "security group for webservers");
+
+         Rule sgr0 = securityGroup.getRules().get(0);
+         Rule sgr1 = securityGroup.getRules().get(1);
+
+         assertEquals(sgr0.getId(), "38ce2d8e-e8f1-48bd-83c2-d33cb9f50c3d");
+         assertEquals(sgr1.getId(), "565b9502-12de-4ffd-91e9-68885cff6ae1");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testCreateSecurityGroupRule() 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("/security_group_rule_create_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         Rule.CreateRule createSecurityGroupRule = Rule.createBuilder(
+               RuleDirection.INGRESS, "a7734e61-b545-452d-a3cd-0189cbd9747a")
+               .portRangeMin(80)
+               .portRangeMax(80)
+               .ethertype(RuleEthertype.IPV4)
+               .protocol(RuleProtocol.TCP)
+               .remoteGroupId("85cc3048-abc3-43cc-89b3-377341426ac5")
+               .build();
+
+         Rule rule = api.create(createSecurityGroupRule);
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "POST", uriApiVersion + "/security-group-rules", "/security_group_rule_create_request.json");
+
+         /*
+          * Check response
+          */
+         assertNotNull(rule);
+         assertEquals(rule.getId(), "2bc0accf-312e-429a-956e-e4407625eb62");
+         assertEquals(rule.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
+         assertEquals(rule.getDirection(), RuleDirection.INGRESS);
+         assertEquals(rule.getPortRangeMax().intValue(), 80);
+         assertEquals(rule.getPortRangeMin().intValue(), 80);
+         assertEquals(rule.getEthertype(), RuleEthertype.IPV4);
+         assertEquals(rule.getProtocol(), RuleProtocol.TCP);
+         assertEquals(rule.getRemoteGroupId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
+         assertEquals(rule.getSecurityGroupId(), "a7734e61-b545-452d-a3cd-0189cbd9747a");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageSecurityGroup() 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("/security_group_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         SecurityGroups securityGroups = api.listSecurityGroups(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(securityGroups);
+         assertEquals(size(securityGroups), 2);
+         // Ensures the full collection is parsed and ordering is preserved.
+         assertEquals(securityGroups.first().get().getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
+         assertEquals(securityGroups.get(1).getId(), "85cc3048-abc3-43cc-89b3-377341426ac52");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListSpecificPageSecurityGroupRule() 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("/security_group_rule_list_response_paged1.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         Rules rules = api.listRules(PaginationOptions.Builder.limit(2).marker("abcdefg"));
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?limit=2&marker=abcdefg");
+
+         /*
+          * Check response
+          */
+         assertNotNull(rules);
+         assertEquals(rules.size(), 4);
+         // Ensures the full collection is parsed and ordering is preserved.
+         assertEquals(rules.first().get().getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
+         assertEquals(rules.get(3).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedSecurityGroups() 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("/security_group_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<SecurityGroup> securityGroups = api.listSecurityGroups().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+
+         /*
+          * Check response
+          */
+         assertNotNull(securityGroups);
+         assertEquals(securityGroups.size(), 4);
+         // Ensures ordering is preserved and both pages are parsed.
+         assertEquals(securityGroups.get(0).getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
+         assertEquals(securityGroups.get(3).getId(), "85cc3048-abc3-43cc-89b3-377341426ac524");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testListPagedSecurityGroupRules() 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("/security_group_rule_list_response_paged1.json"))));
+      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(200).setBody(stringFromResource("/security_group_rule_list_response_paged2.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         // Note: Lazy! Have to actually look at the collection.
+         List<Rule> rules = api.listRules().concat().toList();
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 3);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules");
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718");
+
+         /*
+          * Check response
+          */
+         assertNotNull(rules);
+         assertEquals(rules.size(), 8);
+         // Ensures both pages are tested and ordering is preserved.
+         assertEquals(rules.get(0).getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
+         assertEquals(rules.get(7).getId(), "f7d45c89-008e-4bab-88ad-d6811724c51c2");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetSecurityGroup() 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("/security_group_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         SecurityGroup securityGroup = api.getSecurityGroup("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-groups/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(securityGroup);
+         assertEquals(securityGroup.getName(), "default");
+         assertEquals(securityGroup.getDescription(), "default");
+         assertEquals(securityGroup.getId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
+         assertEquals(securityGroup.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
+         Rule sgr = securityGroup.getRules().get(0);
+         assertEquals(sgr.getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testGetSecurityGroupRule() 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("/security_group_rule_get_response.json"))));
+
+      try {
+         NeutronApi neutronApi = api(server.getUrl("/").toString(), "openstack-neutron", overrides);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         Rule rule = api.get("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "GET", uriApiVersion + "/security-group-rules/12345");
+
+         /*
+          * Check response
+          */
+         assertNotNull(rule);
+         assertEquals(rule.getDirection(), RuleDirection.EGRESS);
+         assertEquals(rule.getEthertype(), RuleEthertype.IPV6);
+         assertEquals(rule.getId(), "3c0e45ff-adaf-4124-b083-bf390e5482ff");
+         assertEquals(rule.getTenantId(), "e4f50856753b4dc6afee5fa6b9b6c550");
+         assertEquals(rule.getSecurityGroupId(), "85cc3048-abc3-43cc-89b3-377341426ac5");
+
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteSecurityGroup() 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);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         boolean result = api.deleteSecurityGroup("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-groups/12345");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+
+   public void testDeleteSecurityGroupRule() 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);
+         SecurityGroupApi api = neutronApi.getSecurityGroupApi("RegionOne");
+
+         boolean result = api.deleteRule("12345");
+
+         /*
+          * Check request
+          */
+         assertEquals(server.getRequestCount(), 2);
+         assertAuthentication(server);
+         assertRequest(server.takeRequest(), "DELETE", uriApiVersion + "/security-group-rules/12345");
+
+         /*
+          * Check response
+          */
+         assertTrue(result);
+      } finally {
+         server.shutdown();
+      }
+   }
+}


[45/50] [abbrv] jclouds git commit: JCLOUDS-1225: Address Guava 18 Objects changes

Posted by na...@apache.org.
JCLOUDS-1225: Address Guava 18 Objects changes

Fixed with:

find -name \*.java | xargs sed -i 's/Objects.[Tt]oStringHelper/More&/g'
find -name \*.java | xargs sed -i 's/Objects.firstNonNull/More&/g'
find -name \*.java | xargs sed -i 's/^\(import com.google.common.base.\)\(Objects.*\)/\1More\2\n\1\2/g'
find -name \*.java | xargs java -jar google-java-format-1.3-all-deps.jar -i --fix-imports-only --skip-sorting-imports


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/6b8a8133
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/6b8a8133
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/6b8a8133

Branch: refs/heads/master
Commit: 6b8a81335d80fc1aaea2b40714f67abd0915b068
Parents: d03f061
Author: Andrew Gaul <ga...@apache.org>
Authored: Thu Aug 24 18:31:07 2017 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Aug 24 18:31:07 2017 -0700

----------------------------------------------------------------------
 .../org/jclouds/openstack/neutron/v2/domain/AddressPair.java    | 5 +++--
 .../org/jclouds/openstack/neutron/v2/domain/AllocationPool.java | 5 +++--
 .../openstack/neutron/v2/domain/ExternalGatewayInfo.java        | 3 ++-
 .../jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java    | 5 +++--
 .../org/jclouds/openstack/neutron/v2/domain/FloatingIP.java     | 3 ++-
 .../java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java | 5 +++--
 .../main/java/org/jclouds/openstack/neutron/v2/domain/IP.java   | 5 +++--
 .../java/org/jclouds/openstack/neutron/v2/domain/Network.java   | 3 ++-
 .../org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java | 5 +++--
 .../main/java/org/jclouds/openstack/neutron/v2/domain/Port.java | 3 ++-
 .../java/org/jclouds/openstack/neutron/v2/domain/Router.java    | 3 ++-
 .../jclouds/openstack/neutron/v2/domain/RouterInterface.java    | 5 +++--
 .../main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java | 3 ++-
 .../org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java  | 3 ++-
 .../java/org/jclouds/openstack/neutron/v2/domain/Subnet.java    | 3 ++-
 .../openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java     | 3 ++-
 .../neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java         | 5 +++--
 .../jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java    | 3 ++-
 .../org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java  | 3 ++-
 .../openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java        | 5 +++--
 .../neutron/v2/domain/lbaas/v1/SessionPersistence.java          | 5 +++--
 .../org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java   | 3 ++-
 22 files changed, 54 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
index e2d888c..289efe5 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AddressPair.java
@@ -24,6 +24,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -88,8 +89,8 @@ public class AddressPair  {
       return Objects.equal(this.macAddress, that.macAddress) && Objects.equal(this.ipAddress, that.ipAddress);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("macAddress", macAddress).add("ipAddress", ipAddress);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("macAddress", macAddress).add("ipAddress", ipAddress);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
index 6d20999..335bfb5 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/AllocationPool.java
@@ -20,6 +20,7 @@ import java.beans.ConstructorProperties;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -72,8 +73,8 @@ public class AllocationPool {
       return Objects.equal(this.start, that.start) && Objects.equal(this.end, that.end);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("start", start).add("end", end);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("start", start).add("end", end);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
index 9f538a5..dd89a2f 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExternalGatewayInfo.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -90,7 +91,7 @@ public class ExternalGatewayInfo {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("networkId", networkId)
             .add("enableSnat", enableSnat)
             .toString();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
index cdc448e..3cfe064 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/ExtraDhcpOption.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -89,8 +90,8 @@ public class ExtraDhcpOption {
             && Objects.equal(this.optionValue, that.optionValue);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("id", id).add("optionName", optionName).add("optionValue", optionValue);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("optionName", optionName).add("optionValue", optionValue);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
index 9c1540c..be61ad3 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -153,7 +154,7 @@ public class FloatingIP {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("routerId", routerId)
             .add("tenantId", tenantId)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
index 6ff0ddc..0d7cf4c 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/HostRoute.java
@@ -22,8 +22,9 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.base.MoreObjects.ToStringHelper;
 
 /**
  * A Neutron Subnet Host Route
@@ -73,7 +74,7 @@ public class HostRoute {
    }
 
    protected ToStringHelper string() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("destinationCidr", destinationCidr).add("nextHop", nextHop);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
index 53c83ca..cb4264a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IP.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -71,8 +72,8 @@ public class IP {
       return Objects.equal(this.ipAddress, that.ipAddress) && Objects.equal(this.subnetId, that.subnetId);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("ipAddress", ipAddress).add("subnetId", subnetId);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("ipAddress", ipAddress).add("subnetId", subnetId);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
index ac40019..c269593 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -24,6 +24,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -338,7 +339,7 @@ public class Network {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("subnets", subnets)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
index 4096e51..8add465 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/NetworkSegment.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -89,8 +90,8 @@ public class NetworkSegment {
             && Objects.equal(this.segmentationId, that.segmentationId);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("networkType", networkType).add("physicalNetwork", physicalNetwork)
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("networkType", networkType).add("physicalNetwork", physicalNetwork)
             .add("segmentationId", segmentationId);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
index a9ab61e..f22d2fa 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
@@ -24,6 +24,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -427,7 +428,7 @@ public class Port {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("vifType", vifType)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
index 0b06531..7330c9b 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -161,7 +162,7 @@ public class Router {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("status", status)
             .add("name", name)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
index ff30dae..710c0bf 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/RouterInterface.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -75,8 +76,8 @@ public class RouterInterface {
       return Objects.equal(this.subnetId, that.subnetId) && Objects.equal(this.portId, that.portId);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("subnetId", subnetId).add("portId", portId);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("subnetId", subnetId).add("portId", portId);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
index e72a3e9..ae4b913 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -195,7 +196,7 @@ public class Rule {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("tenantId", tenantId)
             .add("direction", direction)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
index 5008c02..6a1b8b7 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 
@@ -121,7 +122,7 @@ public class SecurityGroup {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("tenantId", tenantId)
             .add("name", name)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
index 6e0cfc0..1f05709 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableSet;
 
@@ -243,7 +244,7 @@ public class Subnet {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this)
+      return MoreObjects.toStringHelper(this)
             .add("id", id)
             .add("name", name)
             .add("networkId", networkId)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
index 593690d..29ec991 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitor.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 
@@ -225,7 +226,7 @@ public class HealthMonitor {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("type", type)
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("type", type)
             .add("delay", delay).add("timeout", timeout).add("maxRetries", maxRetries).add("httpMethod", httpMethod)
             .add("urlPath", urlPath).add("expectedCodes", expectedCodes).add("pools", pools)
             .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
index 64e3aea..ad8d468 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/HealthMonitorStatus.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -87,8 +88,8 @@ public class HealthMonitorStatus {
             && Objects.equal(this.statusDescription, that.statusDescription);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("id", id).add("status", status)
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
             .add("statusDescription", statusDescription);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
index da53e23..bff6cfe 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Member.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -178,7 +179,7 @@ public class Member {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("poolId", poolId)
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("poolId", poolId)
             .add("address", address).add("protocolPort", protocolPort).add("weight", weight)
             .add("adminStateUp", adminStateUp).add("status", status).add("statusDescription", statusDescription)
             .toString();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
index c1aa88d..5139141 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/Pool.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -257,7 +258,7 @@ public class Pool {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("vipId", vipId)
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("vipId", vipId)
             .add("name", name).add("description", description).add("subnetId", subnetId).add("protocol", protocol)
             .add("provider", provider).add("lbMethod", lbMethod).add("healthMonitors", healthMonitors)
             .add("healthMonitorsStatus", healthMonitorsStatus).add("members", members)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
index 869eb81..07989e7 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/PoolStatus.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -87,8 +88,8 @@ public class PoolStatus {
             && Objects.equal(this.statusDescription, that.statusDescription);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("id", id).add("status", status)
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("id", id).add("status", status)
             .add("statusDescription", statusDescription);
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
index b1c49dd..c984ac4 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/SessionPersistence.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -73,8 +74,8 @@ public class SessionPersistence {
       return Objects.equal(this.type, that.type) && Objects.equal(this.cookieName, that.cookieName);
    }
 
-   protected Objects.ToStringHelper string() {
-      return Objects.toStringHelper(this).add("type", type).add("cookieName", cookieName);
+   protected MoreObjects.ToStringHelper string() {
+      return MoreObjects.toStringHelper(this).add("type", type).add("cookieName", cookieName);
    }
 
    @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6b8a8133/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
index ae62625..d3539a9 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/lbaas/v1/VIP.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.jclouds.javax.annotation.Nullable;
 
+import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 
 /**
@@ -250,7 +251,7 @@ public class VIP {
 
    @Override
    public String toString() {
-      return Objects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
+      return MoreObjects.toStringHelper(this).add("id", id).add("tenantId", tenantId).add("name", name)
             .add("description", description).add("subnetId", subnetId).add("address", address).add("portId", portId)
             .add("protocol", protocol).add("protocolPort", protocolPort).add("poolId", poolId)
             .add("sessionPersistence", sessionPersistence).add("connectionLimit", connectionLimit)


[16/50] [abbrv] jclouds git commit: Removed use of diamond operator in tests.

Posted by na...@apache.org.
Removed use of diamond operator in tests.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d30f3541
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d30f3541
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d30f3541

Branch: refs/heads/master
Commit: d30f3541508b71e472358622e331bcf09c9e8a69
Parents: bec0a92
Author: Adrian Cole <ad...@gmail.com>
Authored: Sat Oct 25 13:50:06 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sat Oct 25 14:18:29 2014 -0700

----------------------------------------------------------------------
 .../v2/extensions/lbaas/v1/LBaaSApiLiveTest.java       | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/d30f3541/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
index 64275e0..5d83d25 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
@@ -24,7 +24,6 @@ import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import org.jclouds.logging.Logger;
@@ -54,17 +53,15 @@ import org.testng.annotations.Test;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
 
-/**
- * Tests parsing and Guice wiring of RouterApi
- */
 @Test(groups = "live", testName = "LBaaSApiLiveTest")
 public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
 
    private Logger logger = getLoggingModule().createLoggerFactory().getLogger(LBaaSApiLiveTest.class.getName());
 
-   private Map<String, Network> networks;
-   private Map<String, Subnet> subnets;
+   private Map<String, Network> networks = Maps.newLinkedHashMap();
+   private Map<String, Subnet> subnets = Maps.newLinkedHashMap();
 
    public void testLBaaSPresence() throws Exception {
       for (String region : api.getConfiguredRegions()) {
@@ -84,8 +81,6 @@ public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
 
    @BeforeClass
    public void createSubnets() {
-      networks = new HashMap<>();
-      subnets = new HashMap<>();
       for (String region : api.getConfiguredRegions()) {
          Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
          if (!lbaasApiExtension.isPresent()) {
@@ -122,8 +117,6 @@ public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
             }
          }
       }
-      networks = null;
-      subnets = null;
    }
 
    public void testCreateUpdateAndDeletePool() {


[50/50] [abbrv] jclouds git commit: Update pom.xml after promoting Neutron

Posted by na...@apache.org.
Update pom.xml after promoting Neutron


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/3ac9279a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/3ac9279a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/3ac9279a

Branch: refs/heads/master
Commit: 3ac9279acbaa626b9d8a62b090f4c43a1ce5ffd1
Parents: ef67919
Author: Ignasi Barrera <na...@apache.org>
Authored: Wed Jan 17 08:30:49 2018 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jan 17 08:30:49 2018 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/README.md |  2 --
 apis/openstack-neutron/pom.xml   | 30 +++++++-----------------------
 apis/pom.xml                     |  1 +
 3 files changed, 8 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/3ac9279a/apis/openstack-neutron/README.md
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/README.md b/apis/openstack-neutron/README.md
index b3a1c1a..9fb21d2 100644
--- a/apis/openstack-neutron/README.md
+++ b/apis/openstack-neutron/README.md
@@ -3,5 +3,3 @@ OpenStack Neutron
 
 Neutron is a virtual network service for Openstack.
 
-Production ready?
-Yes

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3ac9279a/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 1446d98..fe1363e 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -23,13 +23,10 @@
     <groupId>org.apache.jclouds</groupId>
     <artifactId>jclouds-project</artifactId>
     <version>2.1.0-SNAPSHOT</version>
-    <relativePath />
+    <relativePath>../../project/pom.xml</relativePath>
   </parent>
-
-  <!-- TODO: when out of labs, switch to org.jclouds.api -->
-  <groupId>org.apache.jclouds.labs</groupId>
+  <groupId>org.apache.jclouds.api</groupId>
   <artifactId>openstack-neutron</artifactId>
-  <version>2.1.0-SNAPSHOT</version>
   <name>jclouds openstack-neutron api</name>
   <description>jclouds components to access an implementation of OpenStack Neutron</description>
   <packaging>bundle</packaging>
@@ -47,29 +44,16 @@
     <jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
   </properties>
 
-  <repositories>
-    <repository>
-      <id>apache-snapshots</id>
-      <url>https://repository.apache.org/content/repositories/snapshots</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots>
-        <enabled>true</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.jclouds.api</groupId>
       <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-core</artifactId>
-      <version>${project.parent.version}</version>
+      <version>${project.version}</version>
     </dependency>
     <!-- for the extension namespaces -->
     <dependency>
@@ -79,21 +63,21 @@
     <dependency>
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-core</artifactId>
-      <version>${project.parent.version}</version>
+      <version>${project.version}</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.jclouds.api</groupId>
       <artifactId>openstack-keystone</artifactId>
-      <version>${project.parent.version}</version>
+      <version>${project.version}</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.jclouds.driver</groupId>
       <artifactId>jclouds-slf4j</artifactId>
-      <version>${project.parent.version}</version>
+      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/3ac9279a/apis/pom.xml
----------------------------------------------------------------------
diff --git a/apis/pom.xml b/apis/pom.xml
index cb401ab..a871e00 100644
--- a/apis/pom.xml
+++ b/apis/pom.xml
@@ -44,6 +44,7 @@
     <module>openstack-keystone</module>
     <module>openstack-nova-ec2</module>
     <module>openstack-nova</module>
+    <module>openstack-neutron</module>
     <module>openstack-swift</module>
     <module>openstack-trove</module>
     <module>rackspace-clouddns</module>


[40/50] [abbrv] jclouds git commit: Adds more information about the neutron extensions. Name can already be used for automatic resolution. Needed because namespace is being deprecated. Alias should also be added at some point.

Posted by na...@apache.org.
Adds more information about the neutron extensions. Name can already be used for automatic resolution. Needed because namespace is being deprecated. Alias should also be added at some point.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/288235f2
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/288235f2
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/288235f2

Branch: refs/heads/master
Commit: 288235f2d5f7b6c8350a5340828d241d4cdd989f
Parents: 01ca342
Author: Zack Shoylev <za...@rackspace.com>
Authored: Mon Feb 8 14:34:26 2016 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue Feb 9 08:28:58 2016 -0600

----------------------------------------------------------------------
 .../openstack/neutron/v2/config/NeutronHttpApiModule.java    | 8 ++++----
 .../jclouds/openstack/neutron/v2/extensions/FWaaSApi.java    | 4 +++-
 .../openstack/neutron/v2/extensions/FloatingIPApi.java       | 2 +-
 .../jclouds/openstack/neutron/v2/extensions/RouterApi.java   | 5 ++++-
 .../openstack/neutron/v2/extensions/SecurityGroupApi.java    | 2 +-
 5 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/288235f2/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index 64bd2d6..8a03d54 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -62,12 +62,12 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
    }
 
    private void bindAliases() {
-      MapBinder<URI, URI> aliases = namespaceAliasBinder(binder());
-      aliases.addBinding(URI.create(ExtensionNamespaces.L3_ROUTER)).toInstance(
+      MapBinder<URI, URI> namespaceAliases = namespaceAliasBinder(binder());
+      namespaceAliases.addBinding(URI.create(ExtensionNamespaces.L3_ROUTER)).toInstance(
             URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"));
-      aliases.addBinding(URI.create(ExtensionNamespaces.SECURITY_GROUPS)).toInstance(
+      namespaceAliases.addBinding(URI.create(ExtensionNamespaces.SECURITY_GROUPS)).toInstance(
             URI.create("http://docs.openstack.org/ext/securitygroups/api/v2.0"));
-      aliases.addBinding(URI.create(ExtensionNamespaces.LBAAS)).toInstance(
+      namespaceAliases.addBinding(URI.create(ExtensionNamespaces.LBAAS)).toInstance(
             URI.create("http://docs.openstack.org/networking/ext/lbaas/api/v1.0"));
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/288235f2/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
index 68bc807..35307b1 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
@@ -67,12 +67,14 @@ import com.google.common.annotations.Beta;
  *
  * @see <a href=
  *      "http://specs.openstack.org/openstack/neutron-specs/specs/api/firewall_as_a_service__fwaas_.html">api doc</a>
+ * @see <a href=
+ *      "http://git.openstack.org/cgit/openstack/neutron-fwaas/tree/neutron_fwaas/extensions/firewall.py">extension info</a>
  */
 @Beta
 @Path("/fw")
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
-@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.FWAAS)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.FWAAS, name = "Firewall service", alias = "fwaas")
 public interface FWaaSApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/288235f2/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
index 98da377..ffd5c9e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -61,7 +61,7 @@ import com.google.common.annotations.Beta;
 @Path("/floatingips")
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
-@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER, name = "Neutron L3 Router", alias = "router")
 public interface FloatingIPApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/288235f2/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index 6cddbdc..b79553d 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -61,12 +61,15 @@ import com.google.common.annotations.Beta;
  *
  * @see <a href=
  *      "http://docs.openstack.org/api/openstack-network/2.0/content/router_ext.html">api doc</a>
+ *
+ * @see <a href=
+ * "https://github.com/openstack/neutron/tree/master/neutron/extensions">neutron extensions</a>
  */
 @Beta
 @Path("/routers")
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
-@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.L3_ROUTER, name = "Neutron L3 Router", alias = "router")
 public interface RouterApi {
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/288235f2/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
index 6e049c0..4986343 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApi.java
@@ -64,7 +64,7 @@ import com.google.common.annotations.Beta;
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.APPLICATION_JSON)
-@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.SECURITY_GROUPS)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.SECURITY_GROUPS, name = "security-group", alias = "security-group")
 public interface SecurityGroupApi {
    /**
     * Groups


[17/50] [abbrv] jclouds git commit: Fixes the versioning issue in live tests as well as other stability issues

Posted by na...@apache.org.
Fixes the versioning issue in live tests as well as other stability issues


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0748364e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0748364e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0748364e

Branch: refs/heads/master
Commit: 0748364eb1c0c975bcf2f7a41893dd7681943356
Parents: d30f354
Author: Zack Shoylev <za...@rackspace.com>
Authored: Tue Oct 28 19:52:40 2014 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Thu Oct 30 16:03:37 2014 -0500

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml                   |  2 +-
 .../neutron/v2/extensions/RouterApiLiveTest.java |  4 ++--
 .../neutron/v2/extensions/RouterApiMockTest.java |  6 +++++-
 .../v2/extensions/lbaas/v1/LBaaSApiLiveTest.java |  6 +++++-
 .../v2_0/features/NetworkApiLiveTest.java        |  2 +-
 .../neutron/v2_0/features/PortApiLiveTest.java   |  2 +-
 .../v2_0/features/SubnetApiExpectTest.java       | 19 ++++++++++---------
 .../neutron/v2_0/features/SubnetApiLiveTest.java |  2 +-
 .../test/resources/router_create_request.json    |  3 ++-
 .../test/resources/router_create_response.json   |  3 ++-
 10 files changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 0a661ef..17e5623 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -38,7 +38,7 @@
     <!-- keystone endpoint -->
     <test.openstack-neutron.endpoint>http://localhost:5000/v2.0/</test.openstack-neutron.endpoint>
     <!-- keystone version -->
-    <test.openstack-neutron.api-version>2.0</test.openstack-neutron.api-version>
+    <test.openstack-neutron.api-version>v2.0</test.openstack-neutron.api-version>
     <test.openstack-neutron.build-version />
     <test.openstack-neutron.identity>FIXME_IDENTITY</test.openstack-neutron.identity>
     <test.openstack-neutron.credential>FIXME_CREDENTIALS</test.openstack-neutron.credential>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
index 2a006e8..046aec7 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiLiveTest.java
@@ -56,7 +56,7 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
          assertNotNull(subnet);
 
          Router router = routerApi.create(Router.createBuilder().name("jclouds-router-test")
-            .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).build()).build());
+            .externalGatewayInfo(ExternalGatewayInfo.builder().networkId(network.getId()).enableSnat(true).build()).build());
          assertNotNull(router);
 
          /* List and Get test */
@@ -72,7 +72,7 @@ public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
 
          assertEquals(routerGet.getName(), router.getName());
          assertEquals(routerGet.getId(), router.getId());
-         assertEquals(routerGet.getExternalGatewayInfo(), router.getExternalGatewayInfo());
+         assertEquals(routerGet.getExternalGatewayInfo().getNetworkId(), router.getExternalGatewayInfo().getNetworkId());
 
          Router routerUpdate = routerApi.update(router.getId(), Router.updateBuilder().name("jclouds-router-test-rename").build());
          assertNotNull(routerUpdate);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
index b829799..dab3b78 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/RouterApiMockTest.java
@@ -60,7 +60,10 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          RouterApi api = neutronApi.getRouterApi("RegionOne").get();
 
          Router.CreateRouter createRouter = Router.createBuilder().name("another_router").adminStateUp(Boolean.TRUE)
-               .externalGatewayInfo(ExternalGatewayInfo.builder().networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b").build())
+               .externalGatewayInfo(ExternalGatewayInfo.builder()
+                     .networkId("8ca37218-28ff-41cb-9b10-039601ea7e6b")
+                     .enableSnat(true)
+                     .build())
                .build();
 
          Router router = api.create(createRouter);
@@ -79,6 +82,7 @@ public class RouterApiMockTest extends BaseNeutronApiMockTest {
          assertNotNull(router);
          assertEquals(router.getName(), "another_router");
          assertEquals(router.getExternalGatewayInfo().getNetworkId(), "8ca37218-28ff-41cb-9b10-039601ea7e6b");
+         assertEquals(router.getExternalGatewayInfo().getEnableSnat().booleanValue(), true);
          assertEquals(router.getStatus(), NetworkStatus.ACTIVE);
          assertEquals(router.getAdminStateUp(), Boolean.TRUE);
          assertEquals(router.getId(), "8604a0de-7f6b-409a-a47c-a1cc7bc77b2e");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
index 5d83d25..90564b9 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApiLiveTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import org.jclouds.logging.Logger;
 import org.jclouds.openstack.neutron.v2.domain.Network;
@@ -54,6 +55,7 @@ import org.testng.annotations.Test;
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.Uninterruptibles;
 
 @Test(groups = "live", testName = "LBaaSApiLiveTest")
 public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
@@ -213,7 +215,7 @@ public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
       }
    }
 
-   public void testCreateUpdateAndDeleteMember() {
+   public void testCreateUpdateAndDeleteMember() throws InterruptedException {
       for (String region : api.getConfiguredRegions()) {
          Optional<LBaaSApi> lbaasApiExtension = api.getLBaaSApi(region);
          if (!lbaasApiExtension.isPresent()) {
@@ -252,6 +254,8 @@ public class LBaaSApiLiveTest extends BaseNeutronApiLiveTest {
             assertNull(member.getStatusDescription());
 
             // List and Get
+            Thread.sleep(5000);
+            Uninterruptibles.sleepUninterruptibly(5, TimeUnit.SECONDS);
             Members members = lbaasApi.listMembers(PaginationOptions.Builder.queryParameters(ImmutableMap.of("tenant_id", subnet.getTenantId()).asMultimap()));
             assertNotNull(members);
             assertFalse(members.isEmpty());

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
index cc72b1c..938e353 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
@@ -41,7 +41,7 @@ import com.google.common.collect.Sets;
  * Tests parsing and Guice wiring of NetworkApi
  *
  */
-@Test(groups = "live", testName = "NetworkApiLiveTest")
+@Test(groups = "live", testName = "NetworkApiLiveTest", singleThreaded = true)
 public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
 
    public void testGetAndListNetworks() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
index 76f3734..3b6f93a 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
@@ -45,7 +45,7 @@ import com.google.common.collect.Sets;
  * Tests PortApi in combination with the Network & SubnetApi
  *
  */
-@Test(groups = "live", testName = "PortApiLiveTest")
+@Test(groups = "live", testName = "PortApiLiveTest", singleThreaded = true)
 public class PortApiLiveTest extends BaseNeutronApiLiveTest {
 
    public void testGetAndListPorts() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
index 0cab1dd..bb40fc3 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
@@ -16,8 +16,14 @@
  */
 package org.jclouds.openstack.neutron.v2_0.features;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.Set;
+
 import org.jclouds.http.HttpResponse;
 import org.jclouds.openstack.neutron.v2_0.domain.BulkSubnet;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
@@ -30,13 +36,8 @@ import org.jclouds.openstack.neutron.v2_0.parse.ParseSubnetTest;
 import org.jclouds.rest.AuthorizationException;
 import org.testng.annotations.Test;
 
-import java.util.Set;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 
 /**
  * Tests parsing and Guice wiring of SubnetApi

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
index b463339..a2bf3ec 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
@@ -45,7 +45,7 @@ import com.google.common.collect.Sets;
  * Tests subnet api in combination with the network api
  *
  */
-@Test(groups = "live", testName = "SubnetApiLiveTest")
+@Test(groups = "live", testName = "SubnetApiLiveTest", singleThreaded = true)
 public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
 
    public void testGetAndListSubnets() {

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/resources/router_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/router_create_request.json b/apis/openstack-neutron/src/test/resources/router_create_request.json
index 106e5d4..9992028 100644
--- a/apis/openstack-neutron/src/test/resources/router_create_request.json
+++ b/apis/openstack-neutron/src/test/resources/router_create_request.json
@@ -2,7 +2,8 @@
     "router": {
         "name": "another_router",
         "external_gateway_info": {
-            "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b"
+            "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b",
+            "enable_snat":true
         },
         "admin_state_up": true
     }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0748364e/apis/openstack-neutron/src/test/resources/router_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/router_create_response.json b/apis/openstack-neutron/src/test/resources/router_create_response.json
index d851d76..a9c1286 100644
--- a/apis/openstack-neutron/src/test/resources/router_create_response.json
+++ b/apis/openstack-neutron/src/test/resources/router_create_response.json
@@ -2,7 +2,8 @@
     "router": {
         "status": "ACTIVE",
         "external_gateway_info": {
-            "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b"
+            "network_id": "8ca37218-28ff-41cb-9b10-039601ea7e6b",
+            "enable_snat":true
         },
         "name": "another_router",
         "admin_state_up": true,


[07/50] [abbrv] jclouds git commit: Support LBaaS v1

Posted by na...@apache.org.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/extension_list_with_lbaas_v1_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/extension_list_with_lbaas_v1_response.json b/apis/openstack-neutron/src/test/resources/extension_list_with_lbaas_v1_response.json
new file mode 100644
index 0000000..9f85e1e
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/extension_list_with_lbaas_v1_response.json
@@ -0,0 +1,140 @@
+{
+    "extensions": [
+        {
+            "updated": "2013-01-20T00:00:00-00:00",
+            "name": "Neutron Service Type Management",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
+            "alias": "service-type",
+            "description": "API for retrieving service providers for Neutron advanced services"
+        },
+        {
+            "updated": "2012-10-05T10:00:00-00:00",
+            "name": "security-group",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/securitygroups/api/v2.0",
+            "alias": "security-group",
+            "description": "The security groups extension."
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "L3 Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/l3_agent_scheduler/api/v1.0",
+            "alias": "l3_agent_scheduler",
+            "description": "Schedule routers among l3 agents"
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "Loadbalancer Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/lbaas_agent_scheduler/api/v1.0",
+            "alias": "lbaas_agent_scheduler",
+            "description": "Schedule pools among lbaas agents"
+        },
+        {
+            "updated": "2013-03-28T10:00:00-00:00",
+            "name": "Neutron L3 Configurable external gateway mode",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/ext-gw-mode/api/v1.0",
+            "alias": "ext-gw-mode",
+            "description": "Extension of the router abstraction for specifying whether SNAT should occur on the external gateway"
+        },
+        {
+            "updated": "2014-02-03T10:00:00-00:00",
+            "name": "Port Binding",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/binding/api/v1.0",
+            "alias": "binding",
+            "description": "Expose port bindings of a virtual port to external application"
+        },
+        {
+            "updated": "2012-09-07T10:00:00-00:00",
+            "name": "Provider Network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/provider/api/v1.0",
+            "alias": "provider",
+            "description": "Expose mapping of virtual networks to physical networks"
+        },
+        {
+            "updated": "2013-02-03T10:00:00-00:00",
+            "name": "agent",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
+            "alias": "agent",
+            "description": "The agent management extension."
+        },
+        {
+            "updated": "2012-07-29T10:00:00-00:00",
+            "name": "Quota management support",
+            "links": [],
+            "namespace": "http://docs.openstack.org/network/ext/quotas-sets/api/v2.0",
+            "alias": "quotas",
+            "description": "Expose functions for quotas management per tenant"
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "DHCP Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/dhcp_agent_scheduler/api/v1.0",
+            "alias": "dhcp_agent_scheduler",
+            "description": "Schedule networks among dhcp agents"
+        },
+        {
+            "updated": "2013-06-27T10:00:00-00:00",
+            "name": "Multi Provider Network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/multi-provider/api/v1.0",
+            "alias": "multi-provider",
+            "description": "Expose mapping of virtual networks to multiple physical networks"
+        },
+        {
+            "updated": "2013-01-14T10:00:00-00:00",
+            "name": "Neutron external network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/external_net/api/v1.0",
+            "alias": "external-net",
+            "description": "Adds external network attribute to network resource."
+        },
+        {
+            "updated": "2012-07-20T10:00:00-00:00",
+            "name": "Neutron L3 Router",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/router/api/v1.0",
+            "alias": "router",
+            "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway."
+        },
+        {
+            "updated": "2013-07-23T10:00:00-00:00",
+            "name": "Allowed Address Pairs",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/allowedaddresspairs/api/v2.0",
+            "alias": "allowed-address-pairs",
+            "description": "Provides allowed address pairs"
+        },
+        {
+            "updated": "2013-03-17T12:00:00-00:00",
+            "name": "Neutron Extra DHCP opts",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/extra_dhcp_opt/api/v1.0",
+            "alias": "extra_dhcp_opt",
+            "description": "Extra options configuration for DHCP. For example PXE boot options to DHCP clients can be specified (e.g. tftp-server, server-ip-address, bootfile-name)"
+        },
+        {
+            "updated": "2012-10-07T10:00:00-00:00",
+            "name": "LoadBalancing service",
+            "links": [],
+            "namespace": "http://wiki.openstack.org/neutron/LBaaS/API_1.0",
+            "alias": "lbaas",
+            "description": "Extension for LoadBalancing service"
+        },
+        {
+            "updated": "2013-02-01T10:00:00-00:00",
+            "name": "Neutron Extra Route",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/extraroutes/api/v1.0",
+            "alias": "extraroute",
+            "description": "Extra routes configuration for L3 router"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/extension_list_without_lbaas_v1_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/extension_list_without_lbaas_v1_response.json b/apis/openstack-neutron/src/test/resources/extension_list_without_lbaas_v1_response.json
new file mode 100644
index 0000000..7f4a7c1
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/extension_list_without_lbaas_v1_response.json
@@ -0,0 +1,132 @@
+{
+    "extensions": [
+        {
+            "updated": "2013-01-20T00:00:00-00:00",
+            "name": "Neutron Service Type Management",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0",
+            "alias": "service-type",
+            "description": "API for retrieving service providers for Neutron advanced services"
+        },
+        {
+            "updated": "2012-10-05T10:00:00-00:00",
+            "name": "security-group",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/securitygroups/api/v2.0",
+            "alias": "security-group",
+            "description": "The security groups extension."
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "L3 Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/l3_agent_scheduler/api/v1.0",
+            "alias": "l3_agent_scheduler",
+            "description": "Schedule routers among l3 agents"
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "Loadbalancer Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/lbaas_agent_scheduler/api/v1.0",
+            "alias": "lbaas_agent_scheduler",
+            "description": "Schedule pools among lbaas agents"
+        },
+        {
+            "updated": "2013-03-28T10:00:00-00:00",
+            "name": "Neutron L3 Configurable external gateway mode",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/ext-gw-mode/api/v1.0",
+            "alias": "ext-gw-mode",
+            "description": "Extension of the router abstraction for specifying whether SNAT should occur on the external gateway"
+        },
+        {
+            "updated": "2014-02-03T10:00:00-00:00",
+            "name": "Port Binding",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/binding/api/v1.0",
+            "alias": "binding",
+            "description": "Expose port bindings of a virtual port to external application"
+        },
+        {
+            "updated": "2012-09-07T10:00:00-00:00",
+            "name": "Provider Network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/provider/api/v1.0",
+            "alias": "provider",
+            "description": "Expose mapping of virtual networks to physical networks"
+        },
+        {
+            "updated": "2013-02-03T10:00:00-00:00",
+            "name": "agent",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/agent/api/v2.0",
+            "alias": "agent",
+            "description": "The agent management extension."
+        },
+        {
+            "updated": "2012-07-29T10:00:00-00:00",
+            "name": "Quota management support",
+            "links": [],
+            "namespace": "http://docs.openstack.org/network/ext/quotas-sets/api/v2.0",
+            "alias": "quotas",
+            "description": "Expose functions for quotas management per tenant"
+        },
+        {
+            "updated": "2013-02-07T10:00:00-00:00",
+            "name": "DHCP Agent Scheduler",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/dhcp_agent_scheduler/api/v1.0",
+            "alias": "dhcp_agent_scheduler",
+            "description": "Schedule networks among dhcp agents"
+        },
+        {
+            "updated": "2013-06-27T10:00:00-00:00",
+            "name": "Multi Provider Network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/multi-provider/api/v1.0",
+            "alias": "multi-provider",
+            "description": "Expose mapping of virtual networks to multiple physical networks"
+        },
+        {
+            "updated": "2013-01-14T10:00:00-00:00",
+            "name": "Neutron external network",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/external_net/api/v1.0",
+            "alias": "external-net",
+            "description": "Adds external network attribute to network resource."
+        },
+        {
+            "updated": "2012-07-20T10:00:00-00:00",
+            "name": "Neutron L3 Router",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/router/api/v1.0",
+            "alias": "router",
+            "description": "Router abstraction for basic L3 forwarding between L2 Neutron networks and access to external networks via a NAT gateway."
+        },
+        {
+            "updated": "2013-07-23T10:00:00-00:00",
+            "name": "Allowed Address Pairs",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/allowedaddresspairs/api/v2.0",
+            "alias": "allowed-address-pairs",
+            "description": "Provides allowed address pairs"
+        },
+        {
+            "updated": "2013-03-17T12:00:00-00:00",
+            "name": "Neutron Extra DHCP opts",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/extra_dhcp_opt/api/v1.0",
+            "alias": "extra_dhcp_opt",
+            "description": "Extra options configuration for DHCP. For example PXE boot options to DHCP clients can be specified (e.g. tftp-server, server-ip-address, bootfile-name)"
+        },
+        {
+            "updated": "2013-02-01T10:00:00-00:00",
+            "name": "Neutron Extra Route",
+            "links": [],
+            "namespace": "http://docs.openstack.org/ext/neutron/extraroutes/api/v1.0",
+            "alias": "extraroute",
+            "description": "Extra routes configuration for L3 router"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_request.json
new file mode 100644
index 0000000..7d3b6a4
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_request.json
@@ -0,0 +1,8 @@
+{
+    "health_monitor": {
+        "delay": 1,
+        "max_retries": 1,
+        "type": "HTTP",
+        "timeout": 1
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_response.json
new file mode 100644
index 0000000..1a0dbce
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_create_response.json
@@ -0,0 +1,16 @@
+{
+    "health_monitor": {
+        "status": "PENDING_CREATE",
+        "admin_state_up": true,
+        "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
+        "delay": 1,
+        "expected_codes": "200",
+        "max_retries": 1,
+        "http_method": "GET",
+        "timeout": 1,
+        "pools": [],
+        "url_path": "/",
+        "type": "HTTP",
+        "id": "b624decf-d5d3-4c66-9a3d-f047e7786181"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_get_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_get_response.json
new file mode 100644
index 0000000..fc162dc
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_get_response.json
@@ -0,0 +1,16 @@
+{
+    "health_monitor": {
+        "status": "ACTIVE",
+        "admin_state_up": true,
+        "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
+        "delay": 5,
+        "expected_codes": "200",
+        "max_retries": 2,
+        "http_method": "GET",
+        "timeout": 2,
+        "url_path": "/",
+        "type": "HTTP",
+        "pools": [],
+        "id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged1.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged1.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged1.json
new file mode 100644
index 0000000..3856187
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged1.json
@@ -0,0 +1,20 @@
+{
+    "health_monitors": [
+        {
+            "status": "ACTIVE",
+            "admin_state_up": true,
+            "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
+            "delay": 10,
+            "max_retries": 1,
+            "timeout": 1,
+            "type": "PING",
+            "id": "466c8345-28d8-4f84-a246-e04380b0461d"
+        }
+    ],
+    "health_monitors_links": [
+        {
+            "href": "/v2.0/lb/health_monitors.json?marker=396f12f8-521e-4b91-8e21-2e003500433a",
+            "rel": "next"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged2.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged2.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged2.json
new file mode 100644
index 0000000..703b123
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_list_response_paged2.json
@@ -0,0 +1,23 @@
+{
+    "health_monitors": [
+        {
+            "status": "ACTIVE",
+            "admin_state_up": true,
+            "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
+            "delay": 5,
+            "expected_codes": "200",
+            "max_retries": 2,
+            "http_method": "GET",
+            "timeout": 2,
+            "url_path": "/",
+            "type": "HTTP",
+            "id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+        }
+    ],
+    "health_monitors_links": [
+        {
+            "href": "/v2.0/lb/health_monitors.json?marker=396f12f8-521e-4b91-8e21-2e003500433a",
+            "rel": "previous"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_request.json
new file mode 100644
index 0000000..cfb9c2e
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_request.json
@@ -0,0 +1,11 @@
+{
+    "health_monitor": {
+        "delay": 1,
+        "max_retries": 1,
+        "timeout": 1,
+        "http_method": "HEAD",
+        "url_path": "/index.html",
+        "expected_codes": "201",
+        "admin_state_up": false
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_response.json
new file mode 100644
index 0000000..95bdf43
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/health_monitor_update_response.json
@@ -0,0 +1,16 @@
+{
+    "health_monitor": {
+        "status": "ACTIVE",
+        "admin_state_up": false,
+        "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
+        "delay": 1,
+        "expected_codes": "201",
+        "max_retries": 1,
+        "http_method": "HEAD",
+        "timeout": 1,
+        "pools": [],
+        "url_path": "/index.html",
+        "type": "HTTP",
+        "id": "466c8345-28d8-4f84-a246-e04380b0461d"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_request.json
new file mode 100644
index 0000000..20645b8
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_request.json
@@ -0,0 +1,6 @@
+{
+    "member": {
+        "protocol_port": 80,
+        "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_response.json
new file mode 100644
index 0000000..cb74c42
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_create_response.json
@@ -0,0 +1,12 @@
+{
+    "member": {
+        "status": "PENDING_CREATE",
+        "protocol_port": 80,
+        "weight": 1,
+        "admin_state_up": true,
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+        "address": "10.0.0.5",
+        "id":"48a471ea-64f1-4eb6-9be7-dae6bbe40a0f"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_get_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_get_response.json
new file mode 100644
index 0000000..a7302b3
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_get_response.json
@@ -0,0 +1,12 @@
+{
+    "member": {
+        "status": "ACTIVE",
+        "protocol_port": 80,
+        "weight": 1,
+        "admin_state_up": true,
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+        "address": "10.0.0.5",
+        "id":"48a471ea-64f1-4eb6-9be7-dae6bbe40a0f"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged1.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged1.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged1.json
new file mode 100644
index 0000000..b793ad4
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged1.json
@@ -0,0 +1,20 @@
+{
+    "members": [
+        {
+            "status": "ACTIVE",
+            "protocol_port": 80,
+            "weight": 1,
+            "admin_state_up": true,
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+            "address": "10.0.0.5",
+            "id":"48a471ea-64f1-4eb6-9be7-dae6bbe40a0f"
+        }
+    ],
+    "members_links": [
+        {
+            "href": "/v2.0/lb/members.json?marker=396f12f8-521e-4b91-8e21-2e003500433a",
+            "rel": "next"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged2.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged2.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged2.json
new file mode 100644
index 0000000..c707ae4
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_list_response_paged2.json
@@ -0,0 +1,20 @@
+{
+    "members": [
+        {
+            "status": "ACTIVE",
+            "protocol_port": 80,
+            "weight": 1,
+            "admin_state_up": true,
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+            "address": "10.0.0.5",
+            "id":"701b531b-111a-4f21-ad85-4795b7b12af6"
+        }
+    ],
+    "members_links": [
+        {
+            "href": "/v2.0/lb/members.json?marker=86ae12f8-521e-4b91-8e21-2e0035005fdc",
+            "rel": "previous"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_request.json
new file mode 100644
index 0000000..4d7ac67
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_request.json
@@ -0,0 +1,7 @@
+{
+    "member": {
+        "weight": 2,
+        "admin_state_up": false,
+        "pool_id": "new_pool_id"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_response.json
new file mode 100644
index 0000000..1d14b9e
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/member_update_response.json
@@ -0,0 +1,12 @@
+{
+    "member": {
+        "status": "ACTIVE",
+        "protocol_port": 80,
+        "weight": 2,
+        "admin_state_up": false,
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "pool_id": "new_pool_id",
+        "address": "10.0.0.5",
+        "id":"48a471ea-64f1-4eb6-9be7-dae6bbe40a0f"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_request.json
new file mode 100644
index 0000000..c3b2dd4
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_request.json
@@ -0,0 +1,5 @@
+{
+    "health_monitor": {
+        "id":"5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_response.json
new file mode 100644
index 0000000..3e0459d
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_associate_health_monitor_response.json
@@ -0,0 +1,4 @@
+{
+    "health_monitor": {
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_request.json
new file mode 100644
index 0000000..077a14b
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_request.json
@@ -0,0 +1,8 @@
+{
+    "pool": {
+        "subnet_id":"8032909d-47a1-4715-90af-5153ffe39861",
+        "lb_method":"ROUND_ROBIN",
+        "protocol":"TCP",
+        "name":"NewPool"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_response.json
new file mode 100644
index 0000000..3cc5cf7
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_create_response.json
@@ -0,0 +1,18 @@
+{
+    "pool": {
+        "status": "PENDING_CREATE",
+        "lb_method": "ROUND_ROBIN",
+        "protocol": "TCP",
+        "provider": "HAPROXY",
+        "description": "",
+        "health_monitors": [],
+        "health_monitors_status": [],
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "admin_state_up": true,
+        "name": "NewPool",
+        "members": [],
+        "id": "a224402b-794b-4c0c-9d08-d95640a6f5a1",
+        "vip_id": null
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_get_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_get_response.json
new file mode 100644
index 0000000..00ecef5
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_get_response.json
@@ -0,0 +1,35 @@
+{
+    "pool": {
+        "status": "ACTIVE",
+        "lb_method": "ROUND_ROBIN",
+        "protocol": "HTTP",
+        "provider": "HAPROXY",
+        "description": "",
+        "health_monitors": [
+            "466c8345-28d8-4f84-a246-e04380b0461d",
+            "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+        ],
+        "health_monitors_status": [
+            {
+                "status": "ACTIVE",
+                "monitor_id": "466c8345-28d8-4f84-a246-e04380b0461d",
+                "status_dezcription": null
+            },
+            {
+                "status": "ACTIVE",
+                "monitor_id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7",
+                "status_dezcription": null
+            }
+        ],
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "admin_state_up": true,
+        "name": "app_pool",
+        "members": [
+            "701b531b-111a-4f21-ad85-4795b7b12af6",
+            "beb53b4d-230b-4abd-8118-575b8fa006ef"
+        ],
+        "id": "72741b06-df4d-4715-b142-276b6bce75ab",
+        "vip_id": "4ec89087-d057-4e2c-911f-60a3b47ee304"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged1.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged1.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged1.json
new file mode 100644
index 0000000..b10ce38
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged1.json
@@ -0,0 +1,46 @@
+{
+    "pools": [
+        {
+            "status": "ACTIVE",
+            "lb_method": "ROUND_ROBIN",
+            "protocol": "HTTP",
+            "description": "",
+            "health_monitors": [
+                "466c8345-28d8-4f84-a246-e04380b0461d",
+                "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+            ],
+            "health_monitors_status": [
+                {
+                    "status": "ACTIVE",
+                    "monitor_id": "466c8345-28d8-4f84-a246-e04380b0461d",
+                    "status_dezcription": null
+                },
+                {
+                    "status": "ACTIVE",
+                    "monitor_id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7",
+                    "status_dezcription": null
+                }
+            ],
+            "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "admin_state_up": true,
+            "name": "app_pool",
+            "members": [
+                "701b531b-111a-4f21-ad85-4795b7b12af6",
+                "beb53b4d-230b-4abd-8118-575b8fa006ef"
+            ],
+            "id":"72741b06-df4d-4715-b142-276b6bce75ab",
+            "vip_id":"4ec89087-d057-4e2c-911f-60a3b47ee304"
+        }
+    ],
+    "pools_links": [
+        {
+            "href": "/v2.0/lb/pools.json?marker=71c1e68c-171a-4aa2-aca5-50ea153a3718",
+            "rel": "next"
+        },
+        {
+            "href": "/v2.0/lb/pools.json?marker=396f12f8-521e-4b91-8e21-2e003500433a&page_reverse=True",
+            "rel": "previous"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged2.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged2.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged2.json
new file mode 100644
index 0000000..dbe902e
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_list_response_paged2.json
@@ -0,0 +1,42 @@
+{
+    "pools": [
+        {
+            "status": "ACTIVE",
+            "lb_method": "ROUND_ROBIN",
+            "protocol": "TCP",
+            "description": "",
+            "health_monitors": [
+                "466c8345-28d8-4f84-a246-e04380b0461d",
+                "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+            ],
+            "health_monitors_status": [
+                {
+                    "status": "ACTIVE",
+                    "monitor_id": "466c8345-28d8-4f84-a246-e04380b0461d",
+                    "status_dezcription": null
+                },
+                {
+                    "status": "ACTIVE",
+                    "monitor_id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7",
+                    "status_dezcription": null
+                }
+            ],
+            "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "admin_state_up": true,
+            "name": "app_pool2",
+            "members": [
+                "701b531b-111a-4f21-ad85-4795b7b12af6",
+                "beb53b4d-230b-4abd-8118-575b8fa006ef"
+            ],
+            "id":"72741b06-df4d-4715-b142-276b6bce75ab_2",
+            "vip_id":"4ec89087-d057-4e2c-911f-60a3b47ee304"
+        }
+    ],
+    "pools_links": [
+        {
+            "href": "/v2.0/lb/pools.json?marker=396f12f8-521e-4b91-8e21-2e003500433a&page_reverse=True",
+            "rel": "previous"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_request.json
new file mode 100644
index 0000000..a54b680
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_request.json
@@ -0,0 +1,11 @@
+{
+    "pool": {
+        "name": "new_name",
+        "description": "new description",
+        "lb_method": "NEW_LB_METHOD",
+        "health_monitors": [
+            "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+        ],
+        "admin_state_up": false
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_response.json
new file mode 100644
index 0000000..9159529
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/pool_update_response.json
@@ -0,0 +1,29 @@
+{
+    "pool": {
+        "status": "ACTIVE",
+        "lb_method":"NEW_LB_METHOD",
+        "protocol": "HTTP",
+        "provider": "HAPROXY",
+        "description": "new description",
+        "health_monitors": [
+            "5d4b5228-33b0-4e60-b225-9b727c1a20e7"
+        ],
+        "health_monitors_status": [
+            {
+                "status": "ACTIVE",
+                "monitor_id": "5d4b5228-33b0-4e60-b225-9b727c1a20e7",
+                "status_dezcription": null
+            }
+        ],
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "admin_state_up": false,
+        "name": "new_name",
+        "members": [
+            "701b531b-111a-4f21-ad85-4795b7b12af6",
+            "beb53b4d-230b-4abd-8118-575b8fa006ef"
+        ],
+        "id": "72741b06-df4d-4715-b142-276b6bce75ab",
+        "vip_id": "4ec89087-d057-4e2c-911f-60a3b47ee304"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_request.json
new file mode 100644
index 0000000..6d159e1
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_request.json
@@ -0,0 +1,9 @@
+{
+    "vip": {
+        "protocol": "HTTP",
+        "name": "NewVip",
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "pool_id": "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
+        "protocol_port":80
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_response.json
new file mode 100644
index 0000000..7dc958c
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_create_response.json
@@ -0,0 +1,17 @@
+{
+    "vip": {
+        "status": "PENDING_CREATE",
+        "protocol": "HTTP",
+        "description": "",
+        "admin_state_up": true,
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "connection_limit": -1,
+        "pool_id": "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
+        "address": "10.0.0.11",
+        "protocol_port": 80,
+        "port_id": "f7e6fe6a-b8b5-43a8-8215-73456b32e0f5",
+        "id": "c987d2be-9a3c-4ac9-a046-e8716b1350e2",
+        "name": "NewVip"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_get_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_get_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_get_response.json
new file mode 100644
index 0000000..c237b39
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_get_response.json
@@ -0,0 +1,21 @@
+{
+    "vip": {
+        "status": "ACTIVE",
+        "protocol": "HTTP",
+        "description": "",
+        "admin_state_up": true,
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "connection_limit": 1000,
+        "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+        "session_persistence": {
+            "cookie_name": "MyAppCookie",
+            "type": "APP_COOKIE"
+        },
+        "address": "10.0.0.10",
+        "protocol_port": 80,
+        "port_id": "b5a743d6-056b-468b-862d-fb13a9aa694e",
+        "id": "4ec89087-d057-4e2c-911f-60a3b47ee304",
+        "name": "my-vip"
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged1.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged1.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged1.json
new file mode 100644
index 0000000..eaabe2c
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged1.json
@@ -0,0 +1,29 @@
+{
+    "vips": [
+        {
+            "status": "ACTIVE",
+            "protocol": "HTTP",
+            "description": "",
+            "admin_state_up": true,
+            "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "connection_limit": 1000,
+            "pool_id": "72741b06-df4d-4715-b142-276b6bce75ab",
+            "session_persistence": {
+                "cookie_name": "MyAppCookie",
+                "type": "APP_COOKIE"
+            },
+            "address": "10.0.0.10",
+            "protocol_port": 80,
+            "port_id": "b5a743d6-056b-468b-862d-fb13a9aa694e",
+            "id": "4ec89087-d057-4e2c-911f-60a3b47ee304",
+            "name": "my-vip1"
+        }
+    ],
+    "vips_links": [
+        {
+            "href": "/v2.0/lb/vips.json?marker=396f12f8-521e-4b91-8e21-2e003500433a",
+            "rel": "next"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged2.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged2.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged2.json
new file mode 100644
index 0000000..74c46a9
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_list_response_paged2.json
@@ -0,0 +1,29 @@
+{
+    "vips": [
+        {
+            "status": "ACTIVE",
+            "protocol": "HTTPS",
+            "description": "",
+            "admin_state_up": true,
+            "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+            "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+            "connection_limit": 100,
+            "pool_id": "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
+            "session_persistence": {
+                "cookie_name": null,
+                "type": "HTTP_COOKIE"
+            },
+            "address": "10.0.0.11",
+            "protocol_port": 80,
+            "port_id": "f7e6fe6a-b8b5-43a8-8215-73456b32e0f5",
+            "id": "c987d2be-9a3c-4ac9-a046-e8716b1350e2",
+            "name": "my-vip2"
+        }
+    ],
+    "vips_links": [
+        {
+            "href": "/v2.0/lb/vips.json?marker=ABCDEFf8-521e-4b91-8e21-2e003500433a",
+            "rel": "previous"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_request.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_request.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_request.json
new file mode 100644
index 0000000..8d185a3
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_request.json
@@ -0,0 +1,13 @@
+{
+    "vip": {
+        "name": "new-name",
+        "description": "new description",
+        "pool_id": "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
+        "session_persistence": {
+            "cookie_name": "MyNewAppCookie",
+            "type": "APP_COOKIE"
+        },
+        "connection_limit": 50,
+        "admin_state_up": false
+    }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/0c82ed9f/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_response.json
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_response.json b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_response.json
new file mode 100644
index 0000000..1502be2
--- /dev/null
+++ b/apis/openstack-neutron/src/test/resources/lbaas/v1/vip_update_response.json
@@ -0,0 +1,21 @@
+{
+    "vip": {
+        "status": "PENDING_UPDATE",
+        "protocol": "HTTP",
+        "description": "new description",
+        "admin_state_up": false,
+        "subnet_id": "8032909d-47a1-4715-90af-5153ffe39861",
+        "tenant_id": "83657cfcdfe44cd5920adaf26c48ceea",
+        "connection_limit": 50,
+        "pool_id": "61b1f87a-7a21-4ad3-9dda-7f81d249944f",
+        "session_persistence": {
+            "cookie_name": "MyNewAppCookie",
+            "type": "APP_COOKIE"
+        },
+        "address": "10.0.0.11",
+        "protocol_port": 80,
+        "port_id": "f7e6fe6a-b8b5-43a8-8215-73456b32e0f5",
+        "id": "c987d2be-9a3c-4ac9-a046-e8716b1350e2",
+        "name": "new-name"
+    }
+}


[27/50] [abbrv] jclouds git commit: Enables live tests for neutron security groups. Makes tests more robust.

Posted by na...@apache.org.
Enables live tests for neutron security groups. Makes tests more robust.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/0128e91d
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/0128e91d
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/0128e91d

Branch: refs/heads/master
Commit: 0128e91dc055f17302be4b3160999c4419e74d24
Parents: 44c5053
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Feb 27 07:00:59 2015 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Fri Apr 3 13:53:14 2015 -0500

----------------------------------------------------------------------
 .../v2/extensions/SecurityGroupApiLiveTest.java   | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/0128e91d/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
index a7ef1a6..c02ed49 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/extensions/SecurityGroupApiLiveTest.java
@@ -53,7 +53,7 @@ public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
             assertNotNull(securityGroup);
 
             rule = sgApi.create(
-                  Rule.createBuilder(RuleDirection.EGRESS, securityGroup.getId())
+                  Rule.createBuilder(RuleDirection.INGRESS, securityGroup.getId())
                         .ethertype(RuleEthertype.IPV6)
                         .portRangeMax(90)
                         .portRangeMin(80)
@@ -68,7 +68,7 @@ public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
             assertEquals(securityGroup.getName(), "jclouds-test");
             assertEquals(securityGroup.getDescription(), "jclouds test security group");
 
-            assertEquals(securityGroup.getRules().size(), 3);
+            assertEquals(securityGroup.getRules().size(), 1);
 
             Rule newSecGroupRule = null;
 
@@ -86,12 +86,16 @@ public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
             assertEquals(rule.getProtocol(), RuleProtocol.TCP);
             assertEquals(rule.getPortRangeMax().intValue(), 90);
             assertEquals(rule.getPortRangeMin().intValue(), 80);
-            assertEquals(rule.getDirection(), RuleDirection.EGRESS);
+            assertEquals(rule.getDirection(), RuleDirection.INGRESS);
          } finally {
-            try {
-               assertTrue(sgApi.deleteRule(rule.getId()));
-            } finally {
-               assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
+            if (sgApi != null) {
+               try {
+                  if (rule != null) {
+                     assertTrue(sgApi.deleteRule(rule.getId()));
+                  }
+               } finally {
+                  assertTrue(sgApi.deleteSecurityGroup(securityGroup.getId()));
+               }
             }
          }
       }


[35/50] [abbrv] jclouds git commit: add FWaaS extension to openstack-neutron

Posted by na...@apache.org.
add FWaaS extension to openstack-neutron


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/289cce04
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/289cce04
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/289cce04

Branch: refs/heads/master
Commit: 289cce042a81782f3ef5f4128ba3482f59d72007
Parents: 83b104d
Author: Andrea Turli <an...@gmail.com>
Authored: Tue Jun 9 17:25:25 2015 +0200
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Thu Jul 2 15:00:36 2015 -0500

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml                  |   5 +
 .../openstack/neutron/v2/NeutronApi.java        |  11 +
 .../neutron/v2/domain/CreateFirewall.java       | 120 +++
 .../neutron/v2/domain/CreateFirewallPolicy.java | 142 +++
 .../neutron/v2/domain/CreateFirewallRule.java   | 231 +++++
 .../openstack/neutron/v2/domain/Firewall.java   |  47 +
 .../neutron/v2/domain/FirewallPolicies.java     |  36 +
 .../neutron/v2/domain/FirewallPolicy.java       |  48 +
 .../neutron/v2/domain/FirewallRule.java         |  52 +
 .../neutron/v2/domain/FirewallRules.java        |  36 +
 .../openstack/neutron/v2/domain/Firewalls.java  |  36 +
 .../openstack/neutron/v2/domain/IpVersion.java  |  50 +
 .../neutron/v2/domain/UpdateFirewall.java       |  68 ++
 .../neutron/v2/domain/UpdateFirewallPolicy.java |  80 ++
 .../neutron/v2/domain/UpdateFirewallRule.java   | 100 ++
 .../v2/extensions/ExtensionNamespaces.java      |   4 +
 .../neutron/v2/extensions/FWaaSApi.java         | 253 +++++
 .../FirewallPolicyToPagedIterable.java          |  63 ++
 .../functions/FirewallRuleToPagedIterable.java  |  63 ++
 .../v2/functions/FirewallToPagedIterable.java   |  63 ++
 .../v2/functions/ParseFirewallPolicies.java     |  38 +
 .../v2/functions/ParseFirewallRules.java        |  38 +
 .../neutron/v2/functions/ParseFirewalls.java    |  38 +
 .../neutron/v2/extensions/FWaaSApiLiveTest.java | 199 ++++
 .../neutron/v2/extensions/FWaaSApiMockTest.java | 984 +++++++++++++++++++
 .../v2/features/ExtensionApiMockTest.java       |   2 +-
 .../src/test/resources/extension_list.json      | 262 +++--
 .../test/resources/firewall_create_request.json |   6 +
 .../resources/firewall_create_response.json     |  11 +
 .../test/resources/firewall_get_response.json   |  11 +
 .../test/resources/firewall_list_response.json  |  13 +
 .../firewall_policy_create_request.json         |   8 +
 .../firewall_policy_create_response.json        |  11 +
 .../resources/firewall_policy_get_response.json |  14 +
 .../firewall_policy_insert_rule_request.json    |   1 +
 .../firewall_policy_insert_rule_response.json   |  10 +
 .../firewall_policy_list_response.json          | 255 +++++
 .../resources/firewall_rule_create_request.json |  12 +
 .../firewall_rule_create_response.json          |  19 +
 .../resources/firewall_rule_get_response.json   |  19 +
 .../resources/firewall_rule_update_request.json |   6 +
 .../firewall_rule_update_response.json          |  19 +
 .../test/resources/firewall_update_request.json |   5 +
 .../resources/firewall_update_response.json     |  11 +
 .../src/test/resources/logback.xml              |  43 +-
 45 files changed, 3371 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 15e0225..42da458 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -111,6 +111,11 @@
       <artifactId>auto-service</artifactId>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.auto.value</groupId>
+      <artifactId>auto-value</artifactId>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
 
   <profiles>

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
index 4dca71b..6eb3f53 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
@@ -26,6 +26,7 @@ import org.jclouds.openstack.neutron.v2.extensions.FloatingIPApi;
 import org.jclouds.openstack.neutron.v2.extensions.RouterApi;
 import org.jclouds.openstack.neutron.v2.extensions.SecurityGroupApi;
 import org.jclouds.openstack.neutron.v2.extensions.lbaas.v1.LBaaSApi;
+import org.jclouds.openstack.neutron.v2.extensions.FWaaSApi;
 import org.jclouds.openstack.neutron.v2.features.NetworkApi;
 import org.jclouds.openstack.neutron.v2.features.PortApi;
 import org.jclouds.openstack.neutron.v2.features.SubnetApi;
@@ -120,4 +121,14 @@ public interface NeutronApi extends Closeable {
     */
    @Delegate
    Optional<LBaaSApi> getLBaaSApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
+
+   /**
+    * Provides access to FWaaS features.
+    *
+    * <h3>NOTE</h3>
+    * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
+    * to determine if it is present.
+    */
+   @Delegate
+   Optional<FWaaSApi> getFWaaSApi(@EndpointParam(parser = VersionAwareRegionToEndpoint.class) String region);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewall.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewall.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewall.java
new file mode 100644
index 0000000..9c65419
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewall.java
@@ -0,0 +1,120 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+/**
+ * Representation of creation options for an OpenStack Neutron Firewall.
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class CreateFirewall {
+
+   /**
+    * @see Builder#tenantId(String)
+    */
+   @Nullable public abstract String getTenantId();
+
+   /**
+    * @see Builder#name(String)
+    */
+   @Nullable public abstract String getName();
+
+   /**
+    * @see Builder#description(String)
+    */
+   @Nullable public abstract String getDescription();
+
+   /**
+    * @see Builder#adminStateUp(Boolean)
+    */
+   @Nullable public abstract Boolean getAdminStateUp();
+
+   /**
+    * @see Builder#firewallPolicyId(String)
+    */
+   @Nullable public abstract String getFirewallPolicyId();
+
+   @SerializedNames({ "tenant_id", "name", "description", "admin_state_up", "firewall_policy_id"})
+   public static CreateFirewall create(String tenantId, String name, String description, Boolean adminStateUp, String firewallPolicyId) {
+      return builder().tenantId(tenantId).name(name).description(description).adminStateUp(adminStateUp)
+              .firewallPolicyId(firewallPolicyId).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_CreateFirewall.Builder();
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+
+      /**
+       *
+       * @param tenantId Owner of the firewall. Only admin users can specify a tenant_id other than its own.
+       * @return The CreateFirewall builder.
+       */
+      public abstract Builder tenantId(String tenantId);
+
+      /**
+       *
+       * @param name Human readable name for the firewall (255 characters limit).
+       * @return The CreateFirewall builder.
+       */
+      public abstract Builder name(String name);
+
+      /**
+       *
+       * @param description Human readable description for the firewall (1024 characters limit).
+       * @return The CreateFirewall builder.
+       */
+      public abstract Builder description(String description);
+
+      /**
+       *
+       * @param adminStateUp The administrative state of the firewall. If False (down), the firewall does not forward any packets.
+       * @return The CreateFirewall builder.
+       */
+      public abstract Builder adminStateUp(Boolean adminStateUp);
+
+      /**
+       *
+       * @param firewallPolicyId The firewall policy uuid that this firewall is associated with. This firewall implements the rules contained in the
+       *                         firewall policy represented by this uuid.
+       *
+       * @return The CreateFirewall builder.
+       */
+      public abstract Builder firewallPolicyId(String firewallPolicyId);
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract Boolean getAdminStateUp();
+      @Nullable public abstract String getFirewallPolicyId();
+
+      public abstract CreateFirewall build();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallPolicy.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallPolicy.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallPolicy.java
new file mode 100644
index 0000000..6418c0d
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallPolicy.java
@@ -0,0 +1,142 @@
+/*
+ * 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.domain;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableList;
+
+/**
+ * Representation of creation options for an OpenStack Neutron Firewall Policy.
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class CreateFirewallPolicy {
+
+   /**
+    * @see Builder#tenantId(String)
+    */
+   @Nullable public abstract String getTenantId();
+
+   /**
+    * @see Builder#name(String)
+    */
+   @Nullable public abstract String getName();
+
+   /**
+    * @see Builder#description(String)
+    */
+   @Nullable public abstract String getDescription();
+
+   /**
+    * @see Builder#shared(Boolean)
+    */
+   @Nullable public abstract Boolean getShared();
+
+   /**
+    * @see Builder#firewallRules(java.util.List)
+    */
+   @Nullable public abstract List<String> getFirewallRules();
+
+   /**
+    * @see Builder#audited(Boolean)
+    */
+   @Nullable public abstract Boolean getAudited();
+
+   @SerializedNames({"tenant_id", "name", "description", "shared", "firewall_rules", "audited"})
+   private static CreateFirewallPolicy create(String tenantId, String name, String description, Boolean shared, List<String> firewallRules, Boolean audited) {
+      return builder().tenantId(tenantId).name(name).description(description).shared(shared).firewallRules(firewallRules).audited(audited).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_CreateFirewallPolicy.Builder().shared(false).audited(false);
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+
+      /**
+       *
+       * @param tenantId Owner of the firewall. Only admin users can specify a tenant_id other than its own.
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder tenantId(String tenantId);
+
+      /**
+       *
+       * @param name Human readable name for the firewall (255 characters limit).
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder name(String name);
+
+      /**
+       *
+       * @param description Human readable description for the firewall (1024 characters limit).
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder description(String description);
+
+      /**
+       *
+       * @param shared When set to True makes this firewall policy visible to tenants other than its owner and
+       *               can be used to associate with firewalls not owned by its tenant.
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder shared(Boolean shared);
+
+      /**
+       *
+       * @param firewallRules This is an ordered list of firewall rule uuids.
+       *                      The firewall applies the rules in the order in which they appear in this list.
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder firewallRules(List<String> firewallRules);
+
+      /**
+       *
+       * @param audited When set to True by the policy owner indicates that the firewall policy has been audited. This attribute is meant to aid in the
+       *                firewall policy audit work flows. Each time the firewall policy or the associated firewall rules are changed, this attribute is set
+       *                to False and must be explicitly set to True through an update operation.
+       * @return The CreateFirewallPolicy builder.
+       */
+      public abstract Builder audited(Boolean audited);
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract Boolean getShared();
+      @Nullable public abstract List<String> getFirewallRules();
+      @Nullable public abstract Boolean getAudited();
+
+      abstract CreateFirewallPolicy autoBuild();
+
+      public CreateFirewallPolicy build() {
+         firewallRules(getFirewallRules() != null ? ImmutableList.copyOf(getFirewallRules()) : ImmutableList.<String>of());
+         return autoBuild();
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallRule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallRule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallRule.java
new file mode 100644
index 0000000..0e7bdbe
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/CreateFirewallRule.java
@@ -0,0 +1,231 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+/**
+ * Representation of creation options for an OpenStack Neutron Firewall Rule.
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class CreateFirewallRule {
+
+   /**
+    * @see Builder#tenantId(String)
+    */
+   @Nullable public abstract String getTenantId();
+   /**
+    * @see Builder#name(String)
+    */
+   @Nullable public abstract String getName();
+   /**
+    * @see Builder#description(String)
+    */
+   @Nullable public abstract String getDescription();
+   /**
+    * @see Builder#firewallPolicyId(String)
+    */
+   @Nullable public abstract String getFirewallPolicyId();
+   /**
+    * @see Builder#shared(Boolean)
+    */
+   @Nullable public abstract Boolean getShared();
+   /**
+    * @see Builder#protocol(String)
+    */
+   @Nullable public abstract String getProtocol();
+   /**
+    * @see Builder#ipVersion(IpVersion)
+    */
+   @Nullable public abstract IpVersion getIpVersion();
+   /**
+    * @see Builder#sourceIpAddress(String)
+    */
+   @Nullable public abstract String getSourceIpAddress();
+   /**
+    * @see Builder#destinationIpAddress(String)
+    */
+   @Nullable public abstract String getDestinationIpAddress();
+   /**
+    * @see Builder#sourcePort(String)
+    */
+   @Nullable public abstract String getSourcePort();
+   /**
+    * @see Builder#destinationPort(String)
+    */
+   @Nullable public abstract String getDestinationPort();
+   /**
+    * see Builder#position(Integer)
+    */
+   @Nullable public abstract Integer getPosition();
+   /**
+    * @see Builder#action(String)
+    */
+   @Nullable public abstract String getAction();
+   /**
+    * @see Builder#enabled(Boolean)
+    */
+   @Nullable public abstract Boolean getEnabled();
+
+   @SerializedNames({ "tenant_id", "name", "description", "firewall_policy_id", "shared", "protocol", "ip_version", "source_ip_address",
+           "destination_ip_address", "source_port", "destination_port", "position", "action", "enabled"})
+   public static CreateFirewallRule create(String tenantId, String name, String description, String firewallPolicyId, Boolean shared, String protocol,
+                                     IpVersion ipVersion, String sourceIpAddress, String destinationIpAddress, String sourcePort, String destinationPort, int position,
+                                     String action, Boolean enabled) {
+      return builder().tenantId(tenantId).name(name).description(description).firewallPolicyId(firewallPolicyId).shared(shared)
+              .protocol(protocol).ipVersion(ipVersion).sourceIpAddress(sourceIpAddress).destinationIpAddress(destinationIpAddress).sourcePort(sourcePort)
+              .destinationPort(destinationPort).position(position).action(action).enabled(enabled).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_CreateFirewallRule.Builder();
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+
+      /**
+       *
+       * @param tenantId Owner of the firewall. Only admin users can specify a tenant_id other than its own.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder tenantId(String tenantId);
+
+      /**
+       *
+       * @param name Human readable name for the firewall (255 characters limit).
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder name(String name);
+
+      /**
+       *
+       * @param description Human readable description for the firewall (1024 characters limit).
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder description(String description);
+
+      /**
+       *
+       * @param shared When set to True makes this firewall policy visible to tenants other than its owner and
+       *               can be used to associate with firewalls not owned by its tenant.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder shared(Boolean shared);
+
+      /**
+       *
+       * @param firewallPolicyId This is a read-only attribute that gets populated with the uuid of the firewall policy when this firewall rule is associated
+       *                         with a firewall policy. A firewall rule can be associated with only one firewall policy at a time. However, the association
+       *                         can be changed to a different firewall policy.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder firewallPolicyId(String firewallPolicyId);
+
+      /**
+       *
+       * @param protocol IP protocol (icmp, tcp, udp, None).
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder protocol(String protocol);
+
+      /**
+       *
+       * @param ipVersion IP version (4, 6).
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder ipVersion(IpVersion ipVersion);
+
+      /**
+       *
+       * @param sourceIpAddress Source IP address or CIDR.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder sourceIpAddress(String sourceIpAddress);
+
+      /**
+       *
+       * @param destinationIpAddress Destination IP address or CIDR.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder destinationIpAddress(String destinationIpAddress);
+
+      /**
+       *
+       * @param sourcePort Source port number or a range.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder sourcePort(String sourcePort);
+
+      /**
+       *
+       * @param destinationPort Destination port number or a range.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder destinationPort(String destinationPort);
+
+      /**
+       *
+       * @param position This is a read-only attribute that gets assigned to this rule when the rule is associated with a firewall policy. It indicates the
+       *                 position of this rule in that firewall policy.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder position(Integer position);
+
+      /**
+       *
+       * @param action Action to be performed on the traffic matching the rule (allow, deny).
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder action(String action);
+
+      /**
+       *
+       * @param enabled When set to False, disables this rule in the firewall policy. Facilitates selectively turning off rules without having to
+       *                disassociate the rule from the firewall policy.
+       * @return The CreateFirewallRule builder.
+       */
+      public abstract Builder enabled(Boolean enabled);
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract Boolean getShared();
+      @Nullable public abstract String getFirewallPolicyId();
+      @Nullable public abstract String getProtocol();
+      @Nullable public abstract IpVersion getIpVersion();
+      @Nullable public abstract String getSourceIpAddress();
+      @Nullable public abstract String getDestinationIpAddress();
+      @Nullable public abstract String getSourcePort();
+      @Nullable public abstract String getDestinationPort();
+      @Nullable public abstract Integer getPosition();
+      @Nullable public abstract String getAction();
+      @Nullable public abstract Boolean getEnabled();
+
+      public abstract CreateFirewallRule build();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewall.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewall.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewall.java
new file mode 100644
index 0000000..e9e8e6e
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewall.java
@@ -0,0 +1,47 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+/**
+ * A Firewall
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class Firewall {
+
+   public abstract String getId();
+   public abstract String getTenantId();
+   @Nullable public abstract String getName();
+   @Nullable public abstract String getDescription();
+   @Nullable public abstract Boolean isAdminStateUp();
+   public abstract String getStatus();
+   @Nullable public abstract String getFirewallPolicyId();
+
+   @SerializedNames({"id", "tenant_id", "name", "description", "admin_state_up", "status", "firewall_policy_id"})
+   public static Firewall create(String id, String tenantId, String name, String description, Boolean adminStateUp, String status, String firewallPolicyId) {
+      return new AutoValue_Firewall(id, tenantId, name, description, adminStateUp, status, firewallPolicyId);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicies.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicies.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicies.java
new file mode 100644
index 0000000..1dbf429
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicies.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of FirewallPolicies
+ */
+public class FirewallPolicies extends PaginatedCollection<FirewallPolicy> {
+   public static final FirewallPolicies EMPTY = new FirewallPolicies(ImmutableSet.<FirewallPolicy> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({"firewall_policies", "firewall_policies_links"})
+   protected FirewallPolicies(Iterable<FirewallPolicy> firewallPolicies, Iterable<Link> firewallPoliciesLinks) {
+      super(firewallPolicies, firewallPoliciesLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicy.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicy.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicy.java
new file mode 100644
index 0000000..d0f2fec
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallPolicy.java
@@ -0,0 +1,48 @@
+/*
+ * 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.domain;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+/**
+ * A firewall policy
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api doc</a>
+ */
+@AutoValue
+public abstract class FirewallPolicy {
+
+   public abstract String getId();
+   public abstract String getTenantId();
+   public abstract String getName();
+   @Nullable public abstract String getDescription();
+   public abstract boolean isShared();
+   @Nullable public abstract List<String> getFirewallRules();
+   public abstract boolean isAudited();
+
+   @SerializedNames({"id", "tenant_id", "name", "description", "shared", "firewall_rules", "audited"})
+   private static FirewallPolicy create(String id, String tenantId, String name, String description, boolean shared, List<String> firewallRules, boolean audited) {
+      return new AutoValue_FirewallPolicy(id, tenantId, name, description, shared, firewallRules, audited);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRule.java
new file mode 100644
index 0000000..0bc23de
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRule.java
@@ -0,0 +1,52 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class FirewallRule {
+
+   public abstract String getId();
+   public abstract String getTenantId();
+   public abstract String getName();
+   @Nullable public abstract String getDescription();
+   @Nullable public abstract String getFirewallPolicyId();
+   public abstract boolean isShared();
+   @Nullable public abstract String getProtocol();
+   @Nullable public abstract IpVersion getIpVersion();
+   @Nullable public abstract String getSourceIpAddress();
+   @Nullable public abstract String getDestinationIpAddress();
+   @Nullable public abstract String getSourcePort();
+   @Nullable public abstract String getDestinationPort();
+   @Nullable public abstract Integer getPosition(); // for AutoValue.builder
+   @Nullable public abstract String getAction();
+   public abstract boolean isEnabled();
+
+   @SerializedNames({"id", "tenant_id", "name", "description", "firewall_policy_id", "shared", "protocol", "ip_version", "source_ip_address",
+           "destination_ip_address", "source_port", "destination_port", "position", "action", "enabled"})
+   public static FirewallRule create(String id, String tenantId, String name, String description, String firewallPolicyId, boolean shared, String protocol,
+                          IpVersion ipVersion, String sourceIpAddress, String destinationIpAddress, String sourcePort, String destinationPort, int position,
+                          String action, boolean enabled) {
+      return new AutoValue_FirewallRule(id, tenantId, name, description, firewallPolicyId, shared, protocol, ipVersion, sourceIpAddress,
+              destinationIpAddress, sourcePort, destinationPort, position, action, enabled);
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRules.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRules.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRules.java
new file mode 100644
index 0000000..79281b8
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FirewallRules.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of FirewallRules
+ */
+public class FirewallRules extends PaginatedCollection<FirewallRule> {
+   public static final FirewallRules EMPTY = new FirewallRules(ImmutableSet.<FirewallRule> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({"firewall_rules", "firewall_rules_links"})
+   protected FirewallRules(Iterable<FirewallRule> firewallRules, Iterable<Link> firewallRulesLinks) {
+      super(firewallRules, firewallRulesLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewalls.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewalls.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewalls.java
new file mode 100644
index 0000000..739e0e2
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Firewalls.java
@@ -0,0 +1,36 @@
+/*
+ * 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.domain;
+
+import java.beans.ConstructorProperties;
+
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * A collection of Firewalls
+ */
+public class Firewalls extends PaginatedCollection<Firewall> {
+   public static final Firewalls EMPTY = new Firewalls(ImmutableSet.<Firewall> of(), ImmutableSet.<Link> of());
+
+   @ConstructorProperties({"firewalls", "firewalls_links"})
+   protected Firewalls(Iterable<Firewall> firewalls, Iterable<Link> firewallsLinks) {
+      super(firewalls, firewallsLinks);
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IpVersion.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IpVersion.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IpVersion.java
new file mode 100644
index 0000000..c1be347
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/IpVersion.java
@@ -0,0 +1,50 @@
+/*
+ * 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.domain;
+
+public enum IpVersion {
+
+   IPV4(4),
+   IPV6(6),
+   UNRECOGNIZED(Integer.MAX_VALUE);;
+
+   private final int version;
+
+   IpVersion(int version) {
+      this.version = version;
+   }
+
+   public int version() {
+      return this.version;
+   }
+
+   public static IpVersion fromValue(String value) {
+      try {
+         int statusCode = Integer.parseInt(value);
+         switch (statusCode) {
+            case 4:
+               return IpVersion.IPV4;
+            case 6:
+               return IpVersion.IPV6;
+            default:
+               return IpVersion.IPV4;
+         }
+      } catch (NumberFormatException e) {
+         return IpVersion.UNRECOGNIZED;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewall.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewall.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewall.java
new file mode 100644
index 0000000..10f5cab
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewall.java
@@ -0,0 +1,68 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+
+/**
+ * Representation of update options for an OpenStack Neutron Firewall.
+ *
+ * @see <a
+ * href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ * doc</a>
+ */
+@AutoValue
+public abstract class UpdateFirewall {
+
+   @Nullable public abstract String getTenantId();
+   @Nullable public abstract String getName();
+   @Nullable public abstract String getDescription();
+   @Nullable public abstract Boolean getAdminStateUp();
+   @Nullable public abstract String getFirewallPolicyId();
+
+   @SerializedNames({"tenant_id", "name", "description", "admin_state_up", "firewall_policy_id"})
+   public static UpdateFirewall create(String tenantId, String name, String description, Boolean adminStateUp, String firewallPolicyId) {
+      return builder().tenantId(tenantId).name(name).description(description).adminStateUp(adminStateUp).firewallPolicyId(firewallPolicyId).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_UpdateFirewall.Builder();
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+      public abstract Builder tenantId(String tenantId);
+      public abstract Builder name(String name);
+      public abstract Builder description(String description);
+      public abstract Builder adminStateUp(Boolean adminStateUp);
+      public abstract Builder firewallPolicyId(String firewallPolicyId);
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract Boolean getAdminStateUp();
+      @Nullable public abstract String getFirewallPolicyId();
+
+      public abstract UpdateFirewall build();
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallPolicy.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallPolicy.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallPolicy.java
new file mode 100644
index 0000000..3791b34
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallPolicy.java
@@ -0,0 +1,80 @@
+/*
+ * 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.domain;
+
+import java.util.List;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableList;
+
+/**
+ * Representation of update options for an OpenStack Neutron Firewall Policy.
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class UpdateFirewallPolicy {
+
+   @Nullable public abstract String getTenantId();
+   @Nullable public abstract String getName();
+   @Nullable public abstract String getDescription();
+   @Nullable public abstract Boolean getShared();
+   @Nullable public abstract List<String> getFirewallRules();
+   @Nullable public abstract Boolean getAudited();
+
+   @SerializedNames({"tenant_id", "name", "description", "shared", "firewall_rules", "audited"})
+   private static UpdateFirewallPolicy create(String tenantId, String name, String description, Boolean shared, List<String> firewallRules, Boolean audited) {
+      return builder().tenantId(tenantId).name(name).description(description).shared(shared).firewallRules(firewallRules).audited(audited).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_UpdateFirewallPolicy.Builder().shared(false).audited(false);
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+      public abstract Builder tenantId(String tenantId);
+      public abstract Builder name(String name);
+      public abstract Builder description(String description);
+      public abstract Builder shared(Boolean shared);
+      public abstract Builder firewallRules(List<String> firewallRules);
+      public abstract Builder audited(Boolean audited);
+
+      abstract UpdateFirewallPolicy autoBuild();
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract Boolean getShared();
+      @Nullable public abstract List<String> getFirewallRules();
+      @Nullable public abstract Boolean getAudited();
+
+      public UpdateFirewallPolicy build() {
+         firewallRules(getFirewallRules() != null ? ImmutableList.copyOf(getFirewallRules()) : ImmutableList.<String>of());
+         return autoBuild();
+      }
+
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallRule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallRule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallRule.java
new file mode 100644
index 0000000..b66e902
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/UpdateFirewallRule.java
@@ -0,0 +1,100 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+/**
+ * Representation of update options for an OpenStack Neutron Firewall Rule.
+ *
+ * @see <a
+ *      href="http://docs.openstack.org/admin-guide-cloud/content/fwaas_api_abstractions.html">api
+ *      doc</a>
+ */
+@AutoValue
+public abstract class UpdateFirewallRule {
+
+   @Nullable public abstract String getTenantId();
+   @Nullable public abstract String getName();
+   @Nullable public abstract String getDescription();
+   @Nullable public abstract String getFirewallPolicyId();
+   @Nullable public abstract Boolean getShared();
+   @Nullable public abstract String getProtocol();
+   @Nullable public abstract IpVersion getIpVersion();
+   @Nullable public abstract String getSourceIpAddress();
+   @Nullable public abstract String getDestinationIpAddress();
+   @Nullable public abstract String getSourcePort();
+   @Nullable public abstract String getDestinationPort();
+   @Nullable public abstract Integer getPosition();
+   @Nullable public abstract String getAction();
+   @Nullable public abstract Boolean getEnabled();
+
+   @SerializedNames({ "tenant_id", "name", "description", "firewall_policy_id", "shared", "protocol", "ip_version", "source_ip_address",
+           "destination_ip_address", "source_port", "destination_port", "position", "action", "enabled"})
+   public static UpdateFirewallRule create(String tenantId, String name, String description, String firewallPolicyId, Boolean shared, String protocol,
+                                           IpVersion ipVersion, String sourceIpAddress, String destinationIpAddress, String sourcePort, String destinationPort, int position,
+                                           String action, Boolean enabled) {
+      return builder().tenantId(tenantId).name(name).description(description).firewallPolicyId(firewallPolicyId).shared(shared)
+              .protocol(protocol).ipVersion(ipVersion).sourceIpAddress(sourceIpAddress).destinationIpAddress(destinationIpAddress).sourcePort(sourcePort)
+              .destinationPort(destinationPort).position(position).action(action).enabled(enabled).build();
+   }
+
+   public static Builder builder() {
+      return new AutoValue_UpdateFirewallRule.Builder().shared(false).enabled(false).position(null);
+   }
+
+   public abstract Builder toBuilder();
+
+   @AutoValue.Builder
+   public abstract static class Builder {
+      public abstract Builder tenantId(String tenantId);
+      public abstract Builder name(String name);
+      public abstract Builder description(String description);
+      public abstract Builder firewallPolicyId(String firewallPolicyId);
+      public abstract Builder shared(Boolean shared);
+      public abstract Builder protocol(String protocol);
+      public abstract Builder ipVersion(IpVersion ipVersion);
+      public abstract Builder sourceIpAddress(String sourceIpAddress);
+      public abstract Builder destinationIpAddress(String destinationIpAddress);
+      public abstract Builder sourcePort(String sourcePort);
+      public abstract Builder destinationPort(String destinationPort);
+      public abstract Builder position(Integer position);
+      public abstract Builder action(String action);
+      public abstract Builder enabled(Boolean enabled);
+
+      @Nullable public abstract String getTenantId();
+      @Nullable public abstract String getName();
+      @Nullable public abstract String getDescription();
+      @Nullable public abstract String getFirewallPolicyId();
+      @Nullable public abstract Boolean getShared();
+      @Nullable public abstract String getProtocol();
+      @Nullable public abstract IpVersion getIpVersion();
+      @Nullable public abstract String getSourceIpAddress();
+      @Nullable public abstract String getDestinationIpAddress();
+      @Nullable public abstract String getSourcePort();
+      @Nullable public abstract String getDestinationPort();
+      @Nullable public abstract Integer getPosition();
+      @Nullable public abstract String getAction();
+      @Nullable public abstract Boolean getEnabled();
+
+      public abstract UpdateFirewallRule build();
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
index 60d23a3..2130972 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/ExtensionNamespaces.java
@@ -32,6 +32,10 @@ public final class ExtensionNamespaces {
     * LBaaS Extension.
     */
    public static final String LBAAS = "http://wiki.openstack.org/neutron/LBaaS/API_1.0";
+   /**
+    * FWaaS Extension.
+    */
+   public static final String FWAAS = "http://wiki.openstack.org/Neutron/FWaaS/API_1.0";
 
    private ExtensionNamespaces() {
       throw new AssertionError("intentionally unimplemented");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
new file mode 100644
index 0000000..6c5338f
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
@@ -0,0 +1,253 @@
+/*
+ * 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.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.CreateFirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.Firewall;
+import org.jclouds.openstack.neutron.v2.domain.FirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.FirewallRule;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewall;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallPolicy;
+import org.jclouds.openstack.neutron.v2.domain.UpdateFirewallRule;
+import org.jclouds.openstack.neutron.v2.functions.FirewallPolicyToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.FirewallRuleToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.FirewallToPagedIterable;
+import org.jclouds.openstack.neutron.v2.functions.ParseFirewallPolicies;
+import org.jclouds.openstack.neutron.v2.functions.ParseFirewallRules;
+import org.jclouds.openstack.neutron.v2.functions.ParseFirewalls;
+import org.jclouds.openstack.v2_0.ServiceType;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
+import org.jclouds.openstack.v2_0.services.Extension;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.annotations.WrapWith;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * The FWaaS extension provides OpenStack users with the ability to deploy firewalls to protect their networks.
+ * <p/>
+ *
+ * @see <a href=
+ *      "http://specs.openstack.org/openstack/neutron-specs/specs/api/firewall_as_a_service__fwaas_.html">api doc</a>
+ */
+@Beta
+@Path("/fw")
+@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Extension(of = ServiceType.NETWORK, namespace = ExtensionNamespaces.FWAAS)
+public interface FWaaSApi {
+
+   /**
+    * Returns the list of all routers currently defined in Neutron for the current tenant. The list provides the unique
+    * identifier of each firewall configured for the tenant
+    *
+    * @return the list of all firewall references configured for the tenant.
+    */
+   @Named("fw:list")
+   @GET
+   @Transform(FirewallToPagedIterable.class)
+   @ResponseParser(ParseFirewalls.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   @Path("/firewalls")
+   PagedIterable<Firewall> list();
+
+   /**
+    * @return the list of all firewall references configured for the tenant.
+    */
+   @Named("firewall:list")
+   @GET
+   @ResponseParser(ParseFirewalls.class)
+   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
+   @Path("/firewalls")
+   PaginatedCollection<Firewall> list(PaginationOptions options);
+
+   /**
+    * Returns the details for a specific firewall.
+    *
+    * @param id the id of the firewall to return
+    * @return firewall or empty if not found
+    */
+   @Named("firewall:get")
+   @GET
+   @Path("/firewalls/{id}")
+   @SelectJson("firewall")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Firewall get(@PathParam("id") String id);
+
+   /**
+    * Create a new firewall
+    *
+    * @param firewall Options for creating a firewall
+    * @return the newly created firewall
+    */
+   @Named("firewall:create")
+   @POST
+   @SelectJson("firewall")
+   @Path("/firewalls")
+   Firewall create(@WrapWith("firewall") CreateFirewall firewall);
+
+   /**
+    * Update a firewall
+    *
+    * @param id the id of the firewall to update
+    * @param updateFirewall Contains only the attributes to update
+    * @return The modified firewall
+    */
+   @Named("firewall:update")
+   @PUT
+   @Path("/firewalls/{id}")
+   @SelectJson("firewall")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Firewall update(@PathParam("id") String id, @WrapWith("firewall") UpdateFirewall updateFirewall);
+
+   /**
+    * Deletes the specified firewall
+    *
+    * @param id the id of the firewall to delete
+    * @return true if delete successful, false if not
+    */
+   @Named("firewall:delete")
+   @DELETE
+   @Path("/firewalls/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean delete(@PathParam("id") String id);
+
+   @Named("firewall:createPolicy")
+   @POST
+   @SelectJson("firewall_policy")
+   @Path("/firewall_policies")
+   FirewallPolicy createFirewallPolicy(@WrapWith("firewall_policy") CreateFirewallPolicy firewallPolicy);
+
+   @Named("firewall:listPolicies")
+   @GET
+   @Transform(FirewallPolicyToPagedIterable.class)
+   @ResponseParser(ParseFirewallPolicies.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   @Path("/firewall_policies")
+   PagedIterable<FirewallPolicy> listFirewallPolicies();
+
+   @Named("firewall:listPolicies")
+   @GET
+   @ResponseParser(ParseFirewallPolicies.class)
+   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
+   @Path("/firewall_policies")
+   PaginatedCollection<FirewallPolicy> listFirewallPolicies(PaginationOptions options);
+
+   @Named("firewall:getPolicy")
+   @GET
+   @SelectJson("firewall_policy")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/firewall_policies/{id}")
+   FirewallPolicy getFirewallPolicy(@PathParam("id") String id);
+
+   @Named("firewall:updatePolicy")
+   @PUT
+   @SelectJson("firewall_policy")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/firewall_policies/{id}")
+   FirewallPolicy updateFirewallPolicy(@PathParam("id") String id, @WrapWith("firewall_policy") UpdateFirewallPolicy updateFirewallPolicy);
+
+   @Named("firewall:deletePolicy")
+   @DELETE
+   @Path("/firewall_policies/{id}")
+   boolean deleteFirewallPolicy(@PathParam("id") String id);
+
+   @Named("firewall:createFirewallRule")
+   @POST
+   @SelectJson("firewall_rule")
+   @Path("/firewall_rules")
+   FirewallRule createFirewallRule(@WrapWith("firewall_rule") CreateFirewallRule firewallRule);
+
+   @Named("firewall:listFirewallRules")
+   @GET
+   @Transform(FirewallRuleToPagedIterable.class)
+   @ResponseParser(ParseFirewallRules.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+   @Path("/firewall_rules")
+   PagedIterable<FirewallRule> listFirewallRules();
+
+   @Named("firewall:listFirewallRules")
+   @GET
+   @ResponseParser(ParseFirewallRules.class)
+   @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
+   @Path("/firewall_rules")
+   PaginatedCollection<FirewallRule> listFirewallRules(PaginationOptions options);
+
+   @Named("firewall:getFirewallRule")
+   @GET
+   @Path("/firewall_rules/{id}")
+   @SelectJson("firewall_rule")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   FirewallRule getFirewallRule(@PathParam("id") String firewallRuleId);
+
+   @Named("firewall:updateFirewallRule")
+   @PUT
+   @Path("/firewall_rules/{id}")
+   @SelectJson("firewall_rule")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   FirewallRule updateFirewallRule(@PathParam("id") String id, @WrapWith("firewall_rule") UpdateFirewallRule updateFirewallRule);
+
+   @Named("firewall:deleteFirewallRule")
+   @DELETE
+   @Path("/firewall_rules/{id}")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean deleteFirewallRule(@PathParam("id") String id);
+
+   @Named("firewall:insertFirewallRuleToPolicy")
+   @PUT
+   @Path("/firewall_policies/{id}/insert_rule")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   FirewallPolicy insertFirewallRuleToPolicy(@PathParam("id") String policyId, @WrapWith("firewall_rule_id") String firewallRuleId);
+
+   @Named("firewall:removeFirewallRuleFromPolicy")
+   @DELETE
+   @Path("/firewall_policies/{id}/remove_rule")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   FirewallPolicy removeFirewallRuleFromPolicy(@PathParam("id") String policyId, @WrapWith("firewall_rule_id") String firewallRuleId);
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallPolicyToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallPolicyToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallPolicyToPagedIterable.java
new file mode 100644
index 0000000..f70a83d
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallPolicyToPagedIterable.java
@@ -0,0 +1,63 @@
+/*
+ * 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.functions;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.FirewallPolicy;
+import org.jclouds.openstack.neutron.v2.extensions.FWaaSApi;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Ensures FirewallRule works as PagedIterable.
+ */
+public class FirewallPolicyToPagedIterable extends Arg0ToPagedIterable.FromCaller<FirewallPolicy, FirewallPolicyToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected FirewallPolicyToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<FirewallPolicy>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final FWaaSApi firewallApi = api.getFWaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<FirewallPolicy>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<FirewallPolicy> apply(Object input) {
+            return IterableWithMarker.class.cast(firewallApi.listFirewallPolicies());
+         }
+
+         @Override
+         public String toString() {
+            return "listFirewallPolicies()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallRuleToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallRuleToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallRuleToPagedIterable.java
new file mode 100644
index 0000000..eff4dc1
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallRuleToPagedIterable.java
@@ -0,0 +1,63 @@
+/*
+ * 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.functions;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.FirewallRule;
+import org.jclouds.openstack.neutron.v2.extensions.FWaaSApi;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Ensures FirewallRule works as PagedIterable.
+ */
+public class FirewallRuleToPagedIterable extends Arg0ToPagedIterable.FromCaller<FirewallRule, FirewallRuleToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected FirewallRuleToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<FirewallRule>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final FWaaSApi firewallApi = api.getFWaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<FirewallRule>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<FirewallRule> apply(Object input) {
+            return IterableWithMarker.class.cast(firewallApi.listFirewallRules());
+         }
+
+         @Override
+         public String toString() {
+            return "listFirewallRules()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallToPagedIterable.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallToPagedIterable.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallToPagedIterable.java
new file mode 100644
index 0000000..5d6892a
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/FirewallToPagedIterable.java
@@ -0,0 +1,63 @@
+/*
+ * 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.functions;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import javax.inject.Inject;
+
+import org.jclouds.collect.IterableWithMarker;
+import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.openstack.neutron.v2.NeutronApi;
+import org.jclouds.openstack.neutron.v2.domain.Firewall;
+import org.jclouds.openstack.neutron.v2.extensions.FWaaSApi;
+
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+
+/**
+ * Ensures Firewall works as PagedIterable.
+ */
+public class FirewallToPagedIterable extends Arg0ToPagedIterable.FromCaller<Firewall, FirewallToPagedIterable> {
+
+   private final NeutronApi api;
+
+   @Inject
+   protected FirewallToPagedIterable(NeutronApi api) {
+      this.api = checkNotNull(api, "api");
+   }
+
+   @Override
+   protected Function<Object, IterableWithMarker<Firewall>> markerToNextForArg0(Optional<Object> arg0) {
+      String region = arg0.isPresent() ? arg0.get().toString() : null;
+      final FWaaSApi firewallApi = api.getFWaaSApi(region).get();
+      return new Function<Object, IterableWithMarker<Firewall>>() {
+
+         @SuppressWarnings("unchecked")
+         @Override
+         public IterableWithMarker<Firewall> apply(Object input) {
+            return IterableWithMarker.class.cast(firewallApi.list());
+         }
+
+         @Override
+         public String toString() {
+            return "listFirewalls()";
+         }
+      };
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallPolicies.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallPolicies.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallPolicies.java
new file mode 100644
index 0000000..4773e2b
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallPolicies.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.FirewallPolicies;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseFirewallPolicies extends ParseJson<FirewallPolicies> {
+
+   @Inject
+   public ParseFirewallPolicies(Json json) {
+      super(json, TypeLiteral.get(FirewallPolicies.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallRules.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallRules.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallRules.java
new file mode 100644
index 0000000..126a2ce
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewallRules.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.FirewallRules;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseFirewallRules extends ParseJson<FirewallRules> {
+
+   @Inject
+   public ParseFirewallRules(Json json) {
+      super(json, TypeLiteral.get(FirewallRules.class));
+   }
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/289cce04/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewalls.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewalls.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewalls.java
new file mode 100644
index 0000000..89208cd
--- /dev/null
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/functions/ParseFirewalls.java
@@ -0,0 +1,38 @@
+/*
+ * 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.functions;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.functions.ParseJson;
+import org.jclouds.json.Json;
+import org.jclouds.openstack.neutron.v2.domain.Firewalls;
+
+import com.google.inject.TypeLiteral;
+
+/**
+ * Used by jclouds to provide more specific collections and fallbacks.
+ */
+@Singleton
+public class ParseFirewalls extends ParseJson<Firewalls> {
+
+   @Inject
+   public ParseFirewalls(Json json) {
+      super(json, TypeLiteral.get(Firewalls.class));
+   }
+}


[14/50] [abbrv] jclouds git commit: JCLOUDS-40 unasync Fallback.

Posted by na...@apache.org.
JCLOUDS-40 unasync Fallback.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/a164c071
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a164c071
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a164c071

Branch: refs/heads/master
Commit: a164c071a903c6cd31da7b0d2cc33c2997f8a677
Parents: 66b7bd1
Author: Adrian Cole <ac...@twitter.com>
Authored: Mon Oct 6 13:35:44 2014 -0700
Committer: Adrian Cole <ac...@twitter.com>
Committed: Mon Oct 6 16:04:02 2014 -0700

----------------------------------------------------------------------
 .../v2/fallbacks/EmptyFloatingIPsFallback.java       | 15 ++++-----------
 .../neutron/v2/fallbacks/EmptyNetworksFallback.java  | 15 ++++-----------
 .../neutron/v2/fallbacks/EmptyPortsFallback.java     | 15 ++++-----------
 .../neutron/v2/fallbacks/EmptyRoutersFallback.java   | 15 ++++-----------
 .../neutron/v2/fallbacks/EmptyRulesFallback.java     |  7 -------
 .../v2/fallbacks/EmptySecurityGroupsFallback.java    | 15 ++++-----------
 .../neutron/v2/fallbacks/EmptySubnetsFallback.java   | 15 ++++-----------
 .../lbaas/v1/EmptyHealthMonitorsFallback.java        |  8 --------
 .../v2/fallbacks/lbaas/v1/EmptyMembersFallback.java  |  8 --------
 .../v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java    |  8 --------
 .../v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java     |  8 --------
 11 files changed, 24 insertions(+), 105 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
index b9b03c4..ede9046 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyFloatingIPsFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptyFloatingIPsFallback implements Fallback<FloatingIPs> {
-
-   public ListenableFuture<FloatingIPs> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptyFloatingIPsFallback implements Fallback<FloatingIPs> {
    @Override
    public FloatingIPs createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
index 3a859a9..8410afb 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyNetworksFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.Networks;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptyNetworksFallback implements Fallback<Networks> {
-
-   public ListenableFuture<Networks> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Networks;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptyNetworksFallback implements Fallback<Networks> {
    @Override
    public Networks createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
index 2ca5c84..ac2e0db 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyPortsFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.Ports;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptyPortsFallback implements Fallback<Ports> {
-
-   public ListenableFuture<Ports> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Ports;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptyPortsFallback implements Fallback<Ports> {
    @Override
    public Ports createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
index 7019510..8b74be2 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRoutersFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.Routers;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptyRoutersFallback implements Fallback<Routers> {
-
-   public ListenableFuture<Routers> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Routers;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptyRoutersFallback implements Fallback<Routers> {
    @Override
    public Routers createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
index a559f4f..4556f74 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptyRulesFallback.java
@@ -19,21 +19,14 @@ package org.jclouds.openstack.neutron.v2.fallbacks;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
 import org.jclouds.Fallback;
 import org.jclouds.openstack.neutron.v2.domain.Rules;
 import org.jclouds.rest.ResourceNotFoundException;
-import com.google.common.util.concurrent.ListenableFuture;
 
 public class EmptyRulesFallback implements Fallback<Rules> {
-
-   public ListenableFuture<Rules> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public Rules createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
index 5343c3f..70a3e37 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySecurityGroupsFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptySecurityGroupsFallback implements Fallback<SecurityGroups> {
-
-   public ListenableFuture<SecurityGroups> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.SecurityGroups;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptySecurityGroupsFallback implements Fallback<SecurityGroups> {
    @Override
    public SecurityGroups createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
index 6f86023..8f7a94a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/EmptySubnetsFallback.java
@@ -17,23 +17,16 @@
 
 package org.jclouds.openstack.neutron.v2.fallbacks;
 
-import com.google.common.util.concurrent.ListenableFuture;
-import org.jclouds.Fallback;
-import org.jclouds.openstack.neutron.v2.domain.Subnets;
-import org.jclouds.rest.ResourceNotFoundException;
-
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
-public class EmptySubnetsFallback implements Fallback<Subnets> {
-
-   public ListenableFuture<Subnets> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
+import org.jclouds.Fallback;
+import org.jclouds.openstack.neutron.v2.domain.Subnets;
+import org.jclouds.rest.ResourceNotFoundException;
 
+public class EmptySubnetsFallback implements Fallback<Subnets> {
    @Override
    public Subnets createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
index f298a9c..8364fba 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyHealthMonitorsFallback.java
@@ -19,7 +19,6 @@ package org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
@@ -27,14 +26,7 @@ import org.jclouds.Fallback;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class EmptyHealthMonitorsFallback implements Fallback<HealthMonitors> {
-
-   public ListenableFuture<HealthMonitors> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public HealthMonitors createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
index 1cbc38f..9cb8084 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyMembersFallback.java
@@ -19,7 +19,6 @@ package org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
@@ -27,14 +26,7 @@ import org.jclouds.Fallback;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Members;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class EmptyMembersFallback implements Fallback<Members> {
-
-   public ListenableFuture<Members> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public Members createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
index 8035c6f..0c2ce99 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyPoolsFallback.java
@@ -19,7 +19,6 @@ package org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
@@ -27,14 +26,7 @@ import org.jclouds.Fallback;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Pools;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class EmptyPoolsFallback implements Fallback<Pools> {
-
-   public ListenableFuture<Pools> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public Pools createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)

http://git-wip-us.apache.org/repos/asf/jclouds/blob/a164c071/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
index df3aa90..4dfae2d 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/fallbacks/lbaas/v1/EmptyVIPsFallback.java
@@ -19,7 +19,6 @@ package org.jclouds.openstack.neutron.v2.fallbacks.lbaas.v1;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Throwables.propagate;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
 import static org.jclouds.http.HttpUtils.contains404;
 import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
 
@@ -27,14 +26,7 @@ import org.jclouds.Fallback;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.VIPs;
 import org.jclouds.rest.ResourceNotFoundException;
 
-import com.google.common.util.concurrent.ListenableFuture;
-
 public class EmptyVIPsFallback implements Fallback<VIPs> {
-
-   public ListenableFuture<VIPs> create(Throwable t) throws Exception {
-      return immediateFuture(createOrPropagate(t));
-   }
-
    @Override
    public VIPs createOrPropagate(Throwable t) throws Exception {
       if ((getFirstThrowableOfType(checkNotNull(t, "throwable"), ResourceNotFoundException.class) != null)


[36/50] [abbrv] jclouds git commit: Update namespaceAliasBinder reference

Posted by na...@apache.org.
Update namespaceAliasBinder reference

Regression from 415a8a6600b517ec4a6c8fbafbc957ad4a0b74d9.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/e59039a1
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/e59039a1
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/e59039a1

Branch: refs/heads/master
Commit: e59039a109e64ff69e0f4e60b6928c4b5070f44a
Parents: 289cce0
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Dec 18 21:56:25 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri Dec 18 21:56:25 2015 -0800

----------------------------------------------------------------------
 .../openstack/neutron/v2/config/NeutronHttpApiModule.java        | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e59039a1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
index 4252467..64bd2d6 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/config/NeutronHttpApiModule.java
@@ -16,7 +16,7 @@
  */
 package org.jclouds.openstack.neutron.v2.config;
 
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneHttpApiModule.aliasBinder;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneHttpApiModule.namespaceAliasBinder;
 
 import java.net.URI;
 import java.util.Set;
@@ -62,7 +62,7 @@ public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
    }
 
    private void bindAliases() {
-      MapBinder<URI, URI> aliases = aliasBinder(binder());
+      MapBinder<URI, URI> aliases = namespaceAliasBinder(binder());
       aliases.addBinding(URI.create(ExtensionNamespaces.L3_ROUTER)).toInstance(
             URI.create("http://docs.openstack.org/ext/neutron/router/api/v1.0"));
       aliases.addBinding(URI.create(ExtensionNamespaces.SECURITY_GROUPS)).toInstance(


[37/50] [abbrv] jclouds git commit: Remove unnecessary static imports

Posted by na...@apache.org.
Remove unnecessary static imports

Found via error-prone.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/19b3a41c
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/19b3a41c
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/19b3a41c

Branch: refs/heads/master
Commit: 19b3a41c90099c7761021222dfb6ba75fc9fc23c
Parents: e59039a
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Jan 29 09:23:54 2016 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri Jan 29 09:23:54 2016 -0800

----------------------------------------------------------------------
 .../org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/19b3a41c/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
index 6c5338f..4d9edcd 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
@@ -16,10 +16,6 @@
  */
 package org.jclouds.openstack.neutron.v2.extensions;
 
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-
 import javax.inject.Named;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -30,6 +26,9 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.core.MediaType;
 
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;


[43/50] [abbrv] jclouds git commit: Apache jclouds 2.0.0-rc3 release

Posted by na...@apache.org.
Apache jclouds 2.0.0-rc3 release


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d6a16b84
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d6a16b84
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d6a16b84

Branch: refs/heads/master
Commit: d6a16b8487e4ce42f979e8e3c75b0f12ed8194be
Parents: 34114de
Author: Ignasi Barrera <na...@apache.org>
Authored: Wed Nov 9 22:43:56 2016 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Nov 9 22:43:56 2016 +0100

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/d6a16b84/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 42da458..e972b0c 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -22,14 +22,14 @@
   <parent>
     <groupId>org.apache.jclouds</groupId>
     <artifactId>jclouds-project</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0</version>
     <relativePath />
   </parent>
 
   <!-- TODO: when out of labs, switch to org.jclouds.api -->
   <groupId>org.apache.jclouds.labs</groupId>
   <artifactId>openstack-neutron</artifactId>
-  <version>2.0.0-SNAPSHOT</version>
+  <version>2.0.0</version>
   <name>jclouds openstack-neutron api</name>
   <description>jclouds components to access an implementation of OpenStack Neutron</description>
   <packaging>bundle</packaging>


[18/50] [abbrv] jclouds git commit: Remove jclouds.version and replace it with project.version in all poms.

Posted by na...@apache.org.
Remove jclouds.version and replace it with project.version in all poms.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/d691bce6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d691bce6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d691bce6

Branch: refs/heads/master
Commit: d691bce687fc815957409a67b9b78d16545ac7a2
Parents: 0748364
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Nov 14 07:30:08 2014 -0600
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Fri Nov 14 12:17:51 2014 -0600

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/d691bce6/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 17e5623..0c16f8d 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -43,13 +43,8 @@
     <test.openstack-neutron.identity>FIXME_IDENTITY</test.openstack-neutron.identity>
     <test.openstack-neutron.credential>FIXME_CREDENTIALS</test.openstack-neutron.credential>
     <test.jclouds.keystone.credential-type>passwordCredentials</test.jclouds.keystone.credential-type>
-    <jclouds.osgi.export>org.jclouds.openstack.neutron.v2_0*;version="${project.version}"</jclouds.osgi.export>
-    <jclouds.osgi.import>
-      org.jclouds.rest.internal;version="${jclouds.version}",
-      org.jclouds.labs*;version="${project.version}",
-      org.jclouds*;version="${jclouds.version}",
-      *
-    </jclouds.osgi.import>
+    <jclouds.osgi.export>org.jclouds.openstack.neutron.v2*;version="${project.version}"</jclouds.osgi.export>
+    <jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
   </properties>
 
   <repositories>


[03/50] [abbrv] jclouds git commit: Fixes a few cases where the JavaDoc was wrong.

Posted by na...@apache.org.
Fixes a few cases where the JavaDoc was wrong.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/6cd16ff0
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/6cd16ff0
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/6cd16ff0

Branch: refs/heads/master
Commit: 6cd16ff027d8d4650b8f7d151e891d97ecfddca2
Parents: 0485a56
Author: Zack Shoylev <za...@rackspace.com>
Authored: Fri Sep 12 15:24:02 2014 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Fri Sep 12 16:06:48 2014 -0500

----------------------------------------------------------------------
 .../java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java | 4 ++--
 .../java/org/jclouds/openstack/neutron/v2/domain/Network.java    | 4 ++--
 .../main/java/org/jclouds/openstack/neutron/v2/domain/Port.java  | 4 ++--
 .../java/org/jclouds/openstack/neutron/v2/domain/Router.java     | 4 ++--
 .../main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java  | 4 ++--
 .../org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java   | 2 +-
 .../java/org/jclouds/openstack/neutron/v2/domain/Subnet.java     | 4 ++--
 7 files changed, 13 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
index 9c01056..ea3fe87 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/FloatingIP.java
@@ -258,7 +258,7 @@ public class FloatingIP {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateFloatingIP constructed with this Builder.
        */
       public CreateFloatingIP build() {
          return new CreateFloatingIP(floatingIP);
@@ -292,7 +292,7 @@ public class FloatingIP {
       }
 
       /**
-       * @return a UpdateOptions constructed with this Builder.
+       * @return a UpdateFloatingIP constructed with this Builder.
        */
       public UpdateFloatingIP build() {
          return new UpdateFloatingIP(floatingIP);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
index 76af6b0..7d7ed64 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Network.java
@@ -585,7 +585,7 @@ public class Network {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateNetwork constructed with this Builder.
        */
       public CreateNetwork build() {
          return new CreateNetwork(network);
@@ -607,7 +607,7 @@ public class Network {
       }
 
       /**
-       * @return a UpdateOptions constructed with this Builder.
+       * @return a UpdateNetwork constructed with this Builder.
        */
       public UpdateNetwork build() {
          return new UpdateNetwork(network);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
index 79c1cda..53a7a18 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Port.java
@@ -702,7 +702,7 @@ public class Port {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreatePort constructed with this Builder.
        */
       public CreatePort build() {
          return new CreatePort(port);
@@ -724,7 +724,7 @@ public class Port {
       }
 
       /**
-       * @return a UpdateOptions constructed with this Builder.
+       * @return a UpdatePort constructed with this Builder.
        */
       public UpdatePort build() {
          return new UpdatePort(port);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
index 33163f1..b09510a 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Router.java
@@ -237,7 +237,7 @@ public class Router {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateRouter constructed with this Builder.
        */
       public CreateRouter build() {
          return new CreateRouter(router);
@@ -256,7 +256,7 @@ public class Router {
       }
 
       /**
-       * @return a UpdateOptions constructed with this Builder.
+       * @return a UpdateRouter constructed with this Builder.
        */
       public UpdateRouter build() {
          return new UpdateRouter(router);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
index 8b7cc84..21e1eda 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Rule.java
@@ -336,7 +336,7 @@ public class Rule {
    }
 
    /**
-    * This is used to build a CreateOptions object.
+    * This is used to build a CreateBuilder object.
     */
    public static class CreateBuilder extends Builder<CreateBuilder> {
       /**
@@ -348,7 +348,7 @@ public class Rule {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateRule constructed with this Builder.
        */
       public CreateRule build() {
          return new CreateRule(rule);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
index ac62c56..1ade76e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/SecurityGroup.java
@@ -196,7 +196,7 @@ public class SecurityGroup {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateSecurityGroup constructed with this Builder.
        */
       public CreateSecurityGroup build() {
          return new CreateSecurityGroup(securityGroup);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6cd16ff0/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
index 4110f2c..1f05709 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/domain/Subnet.java
@@ -404,7 +404,7 @@ public class Subnet {
       }
 
       /**
-       * @return a CreateOptions constructed with this Builder.
+       * @return a CreateSubnet constructed with this Builder.
        */
       public CreateSubnet build() {
          return new CreateSubnet(subnet);
@@ -426,7 +426,7 @@ public class Subnet {
       }
 
       /**
-       * @return a UpdateOptions constructed with this Builder.
+       * @return a UpdateSubnet constructed with this Builder.
        */
       public UpdateSubnet build() {
          return new UpdateSubnet(subnet);


[12/50] [abbrv] jclouds git commit: Fix poms so that modernizer doesn't fail on snapshot.

Posted by na...@apache.org.
Fix poms so that modernizer doesn't fail on snapshot.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f4f05a3b
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f4f05a3b
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f4f05a3b

Branch: refs/heads/master
Commit: f4f05a3b0203a836e7a075bc812ef39d4d0fc532
Parents: 0c82ed9
Author: Adrian Cole <ad...@gmail.com>
Authored: Sun Oct 5 13:32:34 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Sun Oct 5 14:41:13 2014 -0700

----------------------------------------------------------------------
 apis/openstack-neutron/pom.xml | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f4f05a3b/apis/openstack-neutron/pom.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/pom.xml b/apis/openstack-neutron/pom.xml
index 0a661ef..54fe044 100644
--- a/apis/openstack-neutron/pom.xml
+++ b/apis/openstack-neutron/pom.xml
@@ -65,6 +65,20 @@
     </repository>
   </repositories>
 
+  <!-- For modernizer, which depends on jclouds-resources snapshot. -->
+  <pluginRepositories>
+    <pluginRepository>
+      <id>apache-snapshots</id>
+      <url>https://repository.apache.org/content/repositories/snapshots</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+      <snapshots>
+        <enabled>true</enabled>
+      </snapshots>
+    </pluginRepository>
+  </pluginRepositories>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.jclouds.api</groupId>


[48/50] [abbrv] jclouds git commit: Add support for Keystone V3

Posted by na...@apache.org.
Add support for Keystone V3


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f0c248f1
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f0c248f1
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f0c248f1

Branch: refs/heads/master
Commit: f0c248f19e74e69302d3ae7fc399810ea03ad31f
Parents: 64d84c1
Author: Ignasi Barrera <na...@apache.org>
Authored: Mon Jan 15 15:06:02 2018 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Jan 16 09:08:06 2018 +0100

----------------------------------------------------------------------
 .../neutron/v2/NeutronApiMetadata.java          | 18 +++---
 .../neutron/v2/extensions/FWaaSApi.java         |  2 +-
 .../neutron/v2/extensions/FloatingIPApi.java    |  2 +-
 .../neutron/v2/extensions/RouterApi.java        |  2 +-
 .../v2/extensions/lbaas/v1/LBaaSApi.java        |  2 +-
 .../neutron/v2/features/NetworkApi.java         |  2 +-
 .../openstack/neutron/v2/features/PortApi.java  | 28 ++++----
 .../neutron/v2/features/SecurityGroupApi.java   |  2 +-
 .../neutron/v2/features/SubnetApi.java          | 28 ++++----
 .../v2/features/SecurityGroupApiLiveTest.java   | 12 +++-
 .../v2/internal/BaseNeutronApiLiveTest.java     | 13 +++-
 .../v2/internal/BaseNeutronApiMockTest.java     |  6 +-
 .../src/test/resources/logback.xml              | 67 +++++++++++---------
 13 files changed, 106 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
index fec4e6a..1487af0 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApiMetadata.java
@@ -16,17 +16,18 @@
  */
 package org.jclouds.openstack.neutron.v2;
 
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import static org.jclouds.openstack.keystone.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.config.KeystoneProperties.KEYSTONE_VERSION;
+import static org.jclouds.openstack.keystone.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.net.URI;
 import java.util.Properties;
 
 import org.jclouds.apis.ApiMetadata;
-import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
+import org.jclouds.openstack.keystone.auth.config.AuthenticationModule;
+import org.jclouds.openstack.keystone.auth.config.CredentialTypes;
+import org.jclouds.openstack.keystone.catalog.config.ServiceCatalogModule;
+import org.jclouds.openstack.keystone.catalog.config.ServiceCatalogModule.RegionModule;
 import org.jclouds.openstack.neutron.v2.config.NeutronHttpApiModule;
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
@@ -59,6 +60,7 @@ public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
       Properties properties = BaseHttpApiMetadata.defaultProperties();
       properties.setProperty(SERVICE_TYPE, ServiceType.NETWORK);
       properties.setProperty(CREDENTIAL_TYPE, CredentialTypes.PASSWORD_CREDENTIALS);
+      properties.setProperty(KEYSTONE_VERSION, "2");
       return properties;
    }
 
@@ -76,8 +78,8 @@ public class NeutronApiMetadata extends BaseHttpApiMetadata<NeutronApi> {
             .defaultEndpoint("http://localhost:5000/v2.0/")
             .defaultProperties(NeutronApiMetadata.defaultProperties())
             .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
-               .add(AuthenticationApiModule.class)
-               .add(KeystoneAuthenticationModule.class)
+               .add(AuthenticationModule.class)
+               .add(ServiceCatalogModule.class)
                .add(RegionModule.class)
                .add(NeutronHttpApiModule.class).build());
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
index 35307b1..a4f45db 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FWaaSApi.java
@@ -31,8 +31,8 @@ import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.CreateFirewall;
 import org.jclouds.openstack.neutron.v2.domain.CreateFirewallPolicy;
 import org.jclouds.openstack.neutron.v2.domain.CreateFirewallRule;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
index ffd5c9e..a00bc04 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/FloatingIPApi.java
@@ -31,7 +31,7 @@ import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.FloatingIP;
 import org.jclouds.openstack.neutron.v2.domain.FloatingIPs;
 import org.jclouds.openstack.neutron.v2.fallbacks.EmptyFloatingIPsFallback;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index b79553d..383c70e 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -31,7 +31,7 @@ import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.Router;
 import org.jclouds.openstack.neutron.v2.domain.RouterInterface;
 import org.jclouds.openstack.neutron.v2.domain.Routers;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
index 6f6d767..f67c6e3 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/lbaas/v1/LBaaSApi.java
@@ -32,7 +32,7 @@ import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitor;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.HealthMonitors;
 import org.jclouds.openstack.neutron.v2.domain.lbaas.v1.Member;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
index 2706517..af908fc 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/NetworkApi.java
@@ -31,7 +31,7 @@ import org.jclouds.Fallbacks;
 import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.Network;
 import org.jclouds.openstack.neutron.v2.domain.Networks;
 import org.jclouds.openstack.neutron.v2.fallbacks.EmptyNetworksFallback;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
index 3797810..3cd0e35 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/PortApi.java
@@ -16,13 +16,23 @@
  */
 package org.jclouds.openstack.neutron.v2.features;
 
-import com.google.common.annotations.Beta;
-import com.google.common.collect.FluentIterable;
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
 import org.jclouds.Fallbacks;
 import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.Port;
 import org.jclouds.openstack.neutron.v2.domain.Ports;
 import org.jclouds.openstack.neutron.v2.fallbacks.EmptyPortsFallback;
@@ -36,16 +46,8 @@ import org.jclouds.rest.annotations.SelectJson;
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.annotations.WrapWith;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
+import com.google.common.annotations.Beta;
+import com.google.common.collect.FluentIterable;
 
 /**
  * Provides access to Port operations for the OpenStack Networking (Neutron) v2 API.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
index 4b9803c..3646c17 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApi.java
@@ -30,7 +30,7 @@ import org.jclouds.Fallbacks;
 import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.Rule;
 import org.jclouds.openstack.neutron.v2.domain.Rules;
 import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
index ffb7dcd..62fa7bb 100644
--- a/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
+++ b/apis/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/features/SubnetApi.java
@@ -16,12 +16,24 @@
  */
 package org.jclouds.openstack.neutron.v2.features;
 
-import com.google.common.collect.FluentIterable;
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
 import org.jclouds.Fallbacks;
 import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.keystone.auth.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2.domain.Subnet;
 import org.jclouds.openstack.neutron.v2.domain.Subnets;
 import org.jclouds.openstack.neutron.v2.fallbacks.EmptySubnetsFallback;
@@ -35,17 +47,7 @@ import org.jclouds.rest.annotations.SelectJson;
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.annotations.WrapWith;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
+import com.google.common.collect.FluentIterable;
 
 /**
  * Provides access to Subnet operations for the OpenStack Networking (Neutron) v2 API.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
index 2cb30fc..37ebe3d 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/features/SecurityGroupApiLiveTest.java
@@ -17,6 +17,8 @@
 
 package org.jclouds.openstack.neutron.v2.features;
 
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.size;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
@@ -29,6 +31,8 @@ import org.jclouds.openstack.neutron.v2.domain.SecurityGroup;
 import org.jclouds.openstack.neutron.v2.internal.BaseNeutronApiLiveTest;
 import org.testng.annotations.Test;
 
+import com.google.common.base.Predicate;
+
 /**
  * Tests parsing and Guice wiring of RouterApi
  */
@@ -67,8 +71,12 @@ public class SecurityGroupApiLiveTest extends BaseNeutronApiLiveTest {
 
             assertEquals(securityGroup.getName(), "jclouds-test");
             assertEquals(securityGroup.getDescription(), "jclouds test security group");
-
-            assertEquals(securityGroup.getRules().size(), 1);
+            assertEquals(size(filter(securityGroup.getRules(), new Predicate<Rule>() {
+               @Override
+               public boolean apply(Rule input) {
+                  return RuleDirection.INGRESS.equals(input.getDirection());
+               }
+            })), 1);
 
             Rule newSecGroupRule = null;
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiLiveTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiLiveTest.java
index f220a92..d544aba 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiLiveTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiLiveTest.java
@@ -16,13 +16,15 @@
  */
 package org.jclouds.openstack.neutron.v2.internal;
 
+import java.util.Properties;
+
 import org.jclouds.apis.BaseApiLiveTest;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties;
+import org.jclouds.logging.config.LoggingModule;
+import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
+import org.jclouds.openstack.keystone.config.KeystoneProperties;
 import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.testng.annotations.Test;
 
-import java.util.Properties;
-
 /**
  * Tests behavior of {@code NeutronApi}
  *
@@ -35,6 +37,11 @@ public class BaseNeutronApiLiveTest extends BaseApiLiveTest<NeutronApi> {
    }
 
    @Override
+   protected LoggingModule getLoggingModule() {
+      return new SLF4JLoggingModule();
+   }
+
+   @Override
    protected Properties setupProperties() {
       Properties props = super.setupProperties();
       setIfTestSystemPropertyPresent(props, KeystoneProperties.CREDENTIAL_TYPE);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
index d180e55..be7d245 100644
--- a/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
+++ b/apis/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2/internal/BaseNeutronApiMockTest.java
@@ -16,12 +16,12 @@
  */
 package org.jclouds.openstack.neutron.v2.internal;
 
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import static org.jclouds.openstack.keystone.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.util.Properties;
 
-import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
+import org.jclouds.openstack.keystone.auth.config.CredentialTypes;
 import org.jclouds.openstack.neutron.v2.NeutronApi;
 import org.jclouds.openstack.v2_0.internal.BaseOpenStackMockTest;
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f0c248f1/apis/openstack-neutron/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/apis/openstack-neutron/src/test/resources/logback.xml b/apis/openstack-neutron/src/test/resources/logback.xml
index 02685ca..5c37355 100644
--- a/apis/openstack-neutron/src/test/resources/logback.xml
+++ b/apis/openstack-neutron/src/test/resources/logback.xml
@@ -1,35 +1,42 @@
 <?xml version="1.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.
-
--->
-<configuration>
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+<configuration scan="false">
+    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds.log</file>
         <encoder>
-            <pattern>-  %msg%n</pattern>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
         </encoder>
     </appender>
-    <root level="info">
-        <appender-ref ref="STDOUT"/>
-    </root>
-    <logger name="jclouds.compute" level="debug"/>
-    <logger name="net.schmizz" level="warn"/>
-    <logger name="jclouds.wire" level="debug"/>
-    <logger name="jclouds.headers" level="debug"/>
-    <logger name="jclouds.ssh" level="debug"/>
-</configuration>
+    <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-wire.log</file>
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+    <appender name="COMPUTEFILE" class="ch.qos.logback.core.FileAppender">
+        <file>target/test-data/jclouds-compute.log</file>
+        <encoder>
+            <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern>
+        </encoder>
+    </appender>
+
+    <logger name="org.jclouds">
+        <level value="DEBUG" />
+        <appender-ref ref="FILE" />
+    </logger>
+    <logger name="jclouds.compute">
+        <level value="DEBUG" />
+        <appender-ref ref="COMPUTEFILE" />
+    </logger>
+    <logger name="jclouds.wire">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
+    <logger name="jclouds.headers">
+        <level value="DEBUG" />
+        <appender-ref ref="WIREFILE" />
+    </logger>
 
+    <root>
+        <level value="INFO" />
+    </root>
+</configuration>
\ No newline at end of file