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 2016/02/04 12:26:48 UTC

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

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/d83282ca
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/d83282ca
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/d83282ca

Branch: refs/heads/master
Commit: d83282ca532636b4d2d6d4b47c8f5e1f394332a2
Parents: 0cf13c6
Author: Reijhanniel Jearl Campos <de...@gmail.com>
Authored: Thu Feb 4 06:38:58 2016 +0800
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Feb 4 12:10:06 2016 +0100

----------------------------------------------------------------------
 .../features/AvailabilityZoneApiExpectTest.java |  25 +-
 .../v1/features/SnapshotApiExpectTest.java      | 109 -------
 .../cinder/v1/features/VolumeApiExpectTest.java |  73 -----
 .../v1/features/VolumeTypeApiExpectTest.java    |  13 -
 .../keystone/v2_0/extensions/RoleAdminApi.java  |   1 -
 .../v2_0/extensions/ServiceAdminApi.java        |   1 -
 .../v2_0/extensions/TenantAdminApi.java         |   9 +-
 .../keystone/v2_0/extensions/UserAdminApi.java  |   4 -
 .../keystone/v2_0/KeystoneApiExpectTest.java    |   9 -
 .../v2_0/extensions/RoleAdminApiMockTest.java   |  98 -------
 .../extensions/ServiceAdminApiMockTest.java     | 103 -------
 .../v2_0/extensions/TenantAdminApiMockTest.java | 127 --------
 .../v2_0/extensions/UserAdminApiMockTest.java   |  79 -----
 .../v2_0/features/ServiceApiExpectTest.java     |   7 -
 .../v2_0/features/TenantApiExpectTest.java      |  28 --
 .../v2_0/features/TokenApiExpectTest.java       |  52 ----
 .../v2_0/features/UserApiExpectTest.java        |  41 ---
 .../features/NovaEC2KeyPairApiExpectTest.java   |  16 -
 .../AllocateAndAddFloatingIpToNode.java         |  12 +-
 .../v2_0/extensions/FlavorExtraSpecsApi.java    |  24 +-
 .../nova/v2_0/extensions/FloatingIPApi.java     |   6 +-
 .../nova/v2_0/extensions/SecurityGroupApi.java  |   3 -
 .../nova/v2_0/extensions/ServerAdminApi.java    |  31 +-
 .../nova/v2_0/extensions/VolumeTypeApi.java     |   6 +-
 .../openstack/nova/v2_0/features/FlavorApi.java |   2 -
 .../openstack/nova/v2_0/features/ImageApi.java  |   7 +-
 .../openstack/nova/v2_0/features/ServerApi.java |   2 -
 .../compute/NovaComputeServiceExpectTest.java   |  16 -
 .../extensions/AdminActionsApiExpectTest.java   | 182 +-----------
 .../extensions/AdminActionsApiLiveTest.java     |  24 +-
 .../AvailabilityZoneApiExpectTest.java          |  29 --
 .../v2_0/extensions/ConsolesApiMockTest.java    |  53 ----
 .../FlavorExtraSpecsApiExpectTest.java          |  42 +--
 .../extensions/FlavorExtraSpecsApiLiveTest.java |   4 +-
 .../extensions/FloatingIPApiExpectTest.java     |  51 ----
 .../extensions/FloatingIPPoolApiExpectTest.java |  15 -
 .../HostAdministrationApiExpectTest.java        |  28 --
 .../extensions/HostAggregateApiExpectTest.java  |  22 --
 .../v2_0/extensions/HypervisorApiMockTest.java  |  26 --
 .../v2_0/extensions/KeyPairApiExpectTest.java   |  33 ---
 .../v2_0/extensions/QuotaApiExpectTest.java     |  36 ---
 .../extensions/SecurityGroupApiExpectTest.java  |  34 ---
 .../ServerWithSecurityGroupsApiExpectTest.java  |  12 -
 .../VirtualInterfaceApiExpectTest.java          |  12 -
 .../v2_0/extensions/VolumeApiExpectTest.java    | 138 ---------
 .../VolumeAttachmentApiExpectTest.java          |  55 ----
 .../extensions/VolumeTypeApiExpectTest.java     |  66 +----
 .../v2_0/extensions/VolumeTypeApiLiveTest.java  |   4 +-
 .../v2_0/features/ExtensionApiExpectTest.java   |  34 ---
 .../nova/v2_0/features/FlavorApiExpectTest.java |  34 ---
 .../nova/v2_0/features/ImageApiExpectTest.java  | 155 ----------
 .../nova/v2_0/features/ServerApiExpectTest.java | 294 -------------------
 .../blobstore/RegionScopedSwiftBlobStore.java   |   5 +-
 .../openstack/swift/v1/features/AccountApi.java |  12 +-
 .../swift/v1/features/ContainerApi.java         |  12 +-
 .../openstack/swift/v1/features/ObjectApi.java  |  28 +-
 .../swift/v1/features/AccountApiLiveTest.java   |   4 +-
 .../swift/v1/features/AccountApiMockTest.java   |   4 +-
 .../swift/v1/features/ContainerApiLiveTest.java |   8 +-
 .../swift/v1/features/ContainerApiMockTest.java |  21 +-
 .../swift/v1/features/ObjectApiLiveTest.java    |  14 +-
 .../swift/v1/features/ObjectApiMockTest.java    |  17 +-
 .../trove/v1/features/DatabaseApi.java          |   6 +-
 .../trove/v1/features/InstanceApi.java          |   1 -
 .../openstack/trove/v1/features/UserApi.java    |  15 +-
 .../v1/features/DatabaseApiExpectTest.java      |  67 +----
 .../trove/v1/features/DatabaseApiLiveTest.java  |   2 +-
 .../trove/v1/features/FlavorApiExpectTest.java  |  54 +---
 .../v1/features/InstanceApiExpectTest.java      |  85 +-----
 .../trove/v1/features/UserApiExpectTest.java    | 177 +----------
 70 files changed, 137 insertions(+), 2682 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/AvailabilityZoneApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/AvailabilityZoneApiExpectTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/AvailabilityZoneApiExpectTest.java
index b1c07fa..e201287 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/AvailabilityZoneApiExpectTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/AvailabilityZoneApiExpectTest.java
@@ -16,6 +16,11 @@
  */
 package org.jclouds.openstack.cinder.v1.features;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
+import java.net.URI;
+
 import com.google.common.collect.Iterables;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.openstack.cinder.v1.domain.AvailabilityZone;
@@ -23,13 +28,6 @@ import org.jclouds.openstack.cinder.v1.extensions.AvailabilityZoneApi;
 import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
 import org.testng.annotations.Test;
 
-import java.net.URI;
-import java.util.Set;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
 @Test(groups = "unit", testName = "AvailabilityZoneApiExpectTest")
 public class AvailabilityZoneApiExpectTest extends BaseCinderApiExpectTest {
 
@@ -49,19 +47,6 @@ public class AvailabilityZoneApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(availabilityZoneActual, availabilityZoneExpected);
    }
 
-   public void testListAvailabilityZonesFail() throws Exception {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/os-availability-zone");
-      AvailabilityZoneApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getAvailabilityZoneApi("RegionOne");
-
-      Set<? extends AvailabilityZone> availabilityZones = api.list().toSet();
-      assertTrue(availabilityZones.isEmpty());
-   }
-
    protected AvailabilityZone getTestAvailabilityZone() {
       return AvailabilityZone.builder()
             .name("nova")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/SnapshotApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/SnapshotApiExpectTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/SnapshotApiExpectTest.java
index d8813e3..11ecca1 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/SnapshotApiExpectTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/SnapshotApiExpectTest.java
@@ -17,8 +17,6 @@
 package org.jclouds.openstack.cinder.v1.features;
 
 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.net.URI;
@@ -35,8 +33,6 @@ import org.jclouds.openstack.cinder.v1.domain.SnapshotExtendedAttributes;
 import org.jclouds.openstack.cinder.v1.domain.Volume;
 import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
 import org.jclouds.openstack.cinder.v1.options.CreateSnapshotOptions;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -63,19 +59,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(snapshots, ImmutableSet.of(testSnapshot()));
    }
 
-   public void testListSnapshotsFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getSnapshotApi("RegionOne");
-
-      Set<? extends Snapshot> snapshots = api.list().toSet();
-      assertTrue(snapshots.isEmpty());
-   }
-
    public void testListSnapshotsInDetail() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/detail");
       SnapshotApi api = requestsSendResponses(
@@ -98,19 +81,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(snappy.getSize(), 1);
    }
 
-   public void testListSnapshotsInDetailFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/detail");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getSnapshotApi("RegionOne");
-
-      Set<? extends Snapshot> snapshots = api.listInDetail().toSet();
-      assertTrue(snapshots.isEmpty());
-   }
-
    public void testGetSnapshot() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");
       SnapshotApi api = requestsSendResponses(
@@ -124,18 +94,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(snapshot, testSnapshotDetailed());
    }
 
-   public void testGetSnapshotFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getSnapshotApi("RegionOne");
-
-      assertNull(api.get("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
-   }
-
    public void testCreateSnapshot() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots");
       SnapshotApi api = requestsSendResponses(
@@ -157,27 +115,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(snapshot, testSnapshotCreate());
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateSnapshotVolumeNotFoundFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-                  .method("POST")
-                  .payload(payloadFromResourceWithContentType("/snapshot_create.json", MediaType.APPLICATION_JSON))
-                  .build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getSnapshotApi("RegionOne");
-
-      CreateSnapshotOptions options = CreateSnapshotOptions.Builder
-            .name("jclouds-test-snapshot")
-            .description("jclouds test snapshot")
-            .force();
-
-      api.create("ea6f70ef-2784-40b9-9d14-d7f33c507c3f", options);
-   }
-
    @Test(expectedExceptions = IllegalStateException.class)
    public void testCreateSnapshotVolumeIllegalStateFail() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots");
@@ -204,27 +141,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       api.create("ea6f70ef-2784-40b9-9d14-d7f33c507c3f", options);
    }
 
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testCreateSnapshotFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-                  .method("POST")
-                  .payload(payloadFromResourceWithContentType("/snapshot_create.json", MediaType.APPLICATION_JSON))
-                  .build(),
-            HttpResponse.builder().statusCode(401).build()
-      ).getSnapshotApi("RegionOne");
-
-      CreateSnapshotOptions options = CreateSnapshotOptions.Builder
-            .name("jclouds-test-snapshot")
-            .description("jclouds test snapshot")
-            .force();
-
-      api.create("ea6f70ef-2784-40b9-9d14-d7f33c507c3f", options);
-   }
-
    public void testDeleteSnapshot() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");
       SnapshotApi api = requestsSendResponses(
@@ -237,31 +153,6 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
       assertTrue(api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
    }
 
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testDeleteSnapshotFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).method("DELETE").build(),
-            HttpResponse.builder().statusCode(401).build()
-      ).getSnapshotApi("RegionOne");
-
-      api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b");
-   }
-
-   public void testDeleteSnapshotNotFoundFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");
-      SnapshotApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).method("DELETE").build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getSnapshotApi("RegionOne");
-
-      assertFalse(api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
-   }
-
    @Test(expectedExceptions = IllegalStateException.class)
    public void testDeleteSnapshotIllegalStateFail() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/snapshots/67d03df1-ce5d-4ba7-adbe-492ceb80170b");

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeApiExpectTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeApiExpectTest.java
index ef26f7e..d309f2d 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeApiExpectTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeApiExpectTest.java
@@ -17,8 +17,6 @@
 package org.jclouds.openstack.cinder.v1.features;
 
 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.net.URI;
@@ -33,7 +31,6 @@ import org.jclouds.openstack.cinder.v1.domain.Volume;
 import org.jclouds.openstack.cinder.v1.domain.VolumeAttachment;
 import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
 import org.jclouds.openstack.cinder.v1.options.CreateVolumeOptions;
-import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -59,19 +56,6 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(volumes, ImmutableSet.of(testVolume()));
    }
    
-   public void testListVolumesFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes");
-      VolumeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess, 
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getVolumeApi("RegionOne");
-
-      Set<? extends Volume> volumes = api.list().toSet();
-      assertTrue(volumes.isEmpty());
-   }
-
    public void testListVolumesInDetail() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/detail");
       VolumeApi api = requestsSendResponses(
@@ -85,19 +69,6 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(volumes, ImmutableSet.of(testVolumeDetailed()));
    }
 
-   public void testListVolumesInDetailFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/detail");
-      VolumeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getVolumeApi("RegionOne");
-
-      Set<? extends Volume> volumes = api.listInDetail().toSet();
-      assertTrue(volumes.isEmpty());
-   }
-
    public void testCreateVolume() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes");
       VolumeApi api = requestsSendResponses(
@@ -117,26 +88,6 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(volume, testVolumeCreate());
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testCreateVolumeFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes");
-      VolumeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint)
-               .endpoint(endpoint)
-               .method("POST")
-                  .payload(payloadFromResourceWithContentType("/volume_create.json", MediaType.APPLICATION_JSON))
-               .build(),
-            HttpResponse.builder().statusCode(404).payload(payloadFromResource("/volume_create_response.json")).build()
-      ).getVolumeApi("RegionOne");
-
-      CreateVolumeOptions options = CreateVolumeOptions.Builder
-            .name("jclouds-test-volume")
-            .description("description of test volume");
-      api.create(1, options);
-   }
-
    public void testGetVolume() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/60761c60-0f56-4499-b522-ff13e120af10");
       VolumeApi api = requestsSendResponses(
@@ -156,18 +107,6 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(Iterables.getOnlyElement(volume.getAttachments()), testAttachment());
    }
 
-   public void testGetVolumeFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/60761c60-0f56-4499-b522-ff13e120af10");
-      VolumeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getVolumeApi("RegionOne");
-
-      assertNull(api.get("60761c60-0f56-4499-b522-ff13e120af10"));
-   }
-
    public void testDeleteVolume() {
       URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/60761c60-0f56-4499-b522-ff13e120af10");
       VolumeApi api = requestsSendResponses(
@@ -180,18 +119,6 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
       assertTrue(api.delete("60761c60-0f56-4499-b522-ff13e120af10"));
    }
 
-   public void testDeleteVolumeFail() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/volumes/60761c60-0f56-4499-b522-ff13e120af10");
-      VolumeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).method("DELETE").build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getVolumeApi("RegionOne");
-
-      assertFalse(api.delete("60761c60-0f56-4499-b522-ff13e120af10"));
-   }
-   
    protected Volume testVolumeCreate() {
       return Volume.builder()
             .id("60761c60-0f56-4499-b522-ff13e120af10")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiExpectTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiExpectTest.java
index d8c8b92..2166ef3 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiExpectTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiExpectTest.java
@@ -17,7 +17,6 @@
 package org.jclouds.openstack.cinder.v1.features;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
 
 import java.net.URI;
 import java.util.Set;
@@ -65,18 +64,6 @@ public class VolumeTypeApiExpectTest extends BaseCinderApiExpectTest {
       assertEquals(type, testVolumeType());
    }
 
-   public void testGetVolumeTypeFailNotFound() {
-      URI endpoint = URI.create("http://172.16.0.1:8776/v1/50cdb4c60374463198695d9f798fa34d/types/X");
-      VolumeTypeApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName,
-            responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getVolumeTypeApi("RegionOne");
-
-      assertNull(api.get("X"));
-   }
-
    public VolumeType testVolumeType() {
       return VolumeType.builder()
             .id("1")

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApi.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApi.java
index 68bc5c5..f164a4d 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApi.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApi.java
@@ -75,7 +75,6 @@ public interface RoleAdminApi {
    @SelectJson("role")
    @Produces(MediaType.APPLICATION_JSON)
    @WrapWith("role")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Role create(@PayloadParam("name") String name);
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApi.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApi.java
index 01e3d3b..6de37c8 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApi.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApi.java
@@ -87,7 +87,6 @@ public interface ServiceAdminApi {
    @POST
    @SelectJson("OS-KSADM:service")
    @WrapWith("OS-KSADM:service")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Service create(@PayloadParam("name") String name, @PayloadParam("type") String type,
          @PayloadParam("description") String description);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
index a58f917..82c0591 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApi.java
@@ -27,7 +27,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -62,7 +61,6 @@ public interface TenantAdminApi {
    @POST
    @SelectJson("tenant")
    @Produces(MediaType.APPLICATION_JSON)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Tenant create(@PayloadParam("name") String name);
 
@@ -75,7 +73,6 @@ public interface TenantAdminApi {
    @POST
    @SelectJson("tenant")
    @MapBinder(CreateTenantOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Tenant create(@PayloadParam("name") String name, CreateTenantOptions options);
 
@@ -100,20 +97,16 @@ public interface TenantAdminApi {
    @Path("/{id}")
    @SelectJson("tenant")
    @MapBinder(UpdateTenantOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Tenant update(@PathParam("id") String id, UpdateTenantOptions options);
 
    /**
     * Adds role to a user on a tenant
-    *
-    * @return true if successful
     */
    @Named("tenant:addRoleOnTenant")
    @PUT
    @Path("/{id}/users/{userId}/roles/OS-KSADM/{roleId}")
-   @Fallback(FalseOnNotFoundOr404.class)
-   boolean addRoleOnTenant(@PathParam("id") String tenantId, @PathParam("userId") String userId,
+   void addRoleOnTenant(@PathParam("id") String tenantId, @PathParam("userId") String userId,
          @PathParam("roleId") String roleId);
 
    /**

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApi.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApi.java
index 3a9ae91..0255505 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApi.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApi.java
@@ -26,7 +26,6 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.domain.User;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -60,7 +59,6 @@ public interface UserAdminApi {
    @Named("user:create")
    @POST
    @SelectJson("user")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    User create(@PayloadParam("name") String name, @PayloadParam("password") String password);
 
@@ -73,7 +71,6 @@ public interface UserAdminApi {
    @POST
    @SelectJson("user")
    @MapBinder(CreateUserOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    User create(@PayloadParam("name") String name,
          @PayloadParam("password") String password, CreateUserOptions options);
@@ -99,7 +96,6 @@ public interface UserAdminApi {
    @Path("/{id}")
    @SelectJson("user")
    @MapBinder(UpdateUserOptions.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    User update(@PathParam("id") String id, UpdateUserOptions options);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/KeystoneApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/KeystoneApiExpectTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/KeystoneApiExpectTest.java
index b8c7be8..d51e2be 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/KeystoneApiExpectTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/KeystoneApiExpectTest.java
@@ -18,7 +18,6 @@ package org.jclouds.openstack.keystone.v2_0;
 
 import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
 
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
@@ -42,13 +41,5 @@ public class KeystoneApiExpectTest extends BaseKeystoneRestApiExpectTest<Keyston
       assertEquals(metadata, new ParseRackspaceApiMetadataTest().expected());
    }
 
-   public void testGetApiMetaDataFailNotFound() {
-      KeystoneApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            HttpRequest.builder().method("GET").endpoint(endpoint + "/v2.0/").addHeader("Accept", APPLICATION_JSON).build(),
-            HttpResponse.builder().statusCode(404).build());
-      assertNull(api.getApiMetadata());
-   }
-
 }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiMockTest.java
index 7b2fdea..e50cc2e 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/RoleAdminApiMockTest.java
@@ -17,9 +17,7 @@
 package org.jclouds.openstack.keystone.v2_0.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.util.Set;
@@ -30,7 +28,6 @@ import org.jclouds.openstack.v2_0.internal.BaseOpenStackMockTest;
 import org.testng.annotations.Test;
 
 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;
@@ -73,32 +70,6 @@ public class RoleAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void listZeroRoles() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         RoleAdminApi roleAdminApi = keystoneApi.getRoleAdminApi().get();
-         FluentIterable<? extends Role> roles = roleAdminApi.list();
-
-         ImmutableList<? extends Role> roleList = roles.toList();
-
-         assertTrue(roleList.isEmpty());
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateRoleRequest = server.takeRequest();
-         assertEquals(updateRoleRequest.getRequestLine(), "GET /OS-KSADM/roles HTTP/1.1");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void createRole() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -125,31 +96,6 @@ public class RoleAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void createRoleFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404).setBody(
-            stringFromResource("/role_create_response.json"))));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         RoleAdminApi roleAdminApi = keystoneApi.getRoleAdminApi().get();
-         Role testRole = roleAdminApi.create("jclouds-role");
-
-         assertNull(testRole);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest createRoleRequest = server.takeRequest();
-         assertEquals(createRoleRequest.getRequestLine(), "POST /OS-KSADM/roles HTTP/1.1");
-         assertEquals(new String(createRoleRequest.getBody()), "{\"role\":{\"name\":\"jclouds-role\"}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void getRole() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -178,29 +124,6 @@ public class RoleAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void getRoleFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         RoleAdminApi roleAdminApi = keystoneApi.getRoleAdminApi().get();
-         Role role = roleAdminApi.get("r1000");
-
-         assertNull(role);
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateRoleRequest = server.takeRequest();
-         assertEquals(updateRoleRequest.getRequestLine(), "GET /OS-KSADM/roles/r1000 HTTP/1.1");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void deleteRole() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -223,25 +146,4 @@ public class RoleAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void deleteRoleFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         RoleAdminApi roleAdminApi = keystoneApi.getRoleAdminApi().get();
-         boolean success = roleAdminApi.delete("r1000");
-
-         assertFalse(success);
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateRoleRequest = server.takeRequest();
-         assertEquals(updateRoleRequest.getRequestLine(), "DELETE /OS-KSADM/roles/r1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiMockTest.java
index 9cbc5ea..b68f8eb 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/ServiceAdminApiMockTest.java
@@ -17,10 +17,7 @@
 package org.jclouds.openstack.keystone.v2_0.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.util.Set;
 
@@ -32,7 +29,6 @@ import org.jclouds.openstack.v2_0.internal.BaseOpenStackMockTest;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.squareup.okhttp.mockwebserver.MockResponse;
 import com.squareup.okhttp.mockwebserver.MockWebServer;
@@ -76,31 +72,6 @@ public class ServiceAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi>
       }
    }
 
-   public void listZeroServices() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         ServiceAdminApi serviceAdminApi = keystoneApi.getServiceAdminApi().get();
-         PagedIterable<? extends Service> services = serviceAdminApi.list();
-
-         ImmutableList<? extends Service> servicesList = services.concat().toList();
-         assertTrue(servicesList.isEmpty());
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateServiceRequest = server.takeRequest();
-         assertEquals(updateServiceRequest.getRequestLine(), "GET /OS-KSADM/services HTTP/1.1");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void listServicesPage() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -157,34 +128,6 @@ public class ServiceAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi>
       }
    }
 
-   public void createServiceFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         ServiceAdminApi serviceAdminApi = keystoneApi.getServiceAdminApi().get();
-         Service testService = serviceAdminApi.create("jclouds-service-test", "jclouds-service-type",
-               "jclouds-service-description");
-
-         assertNull(testService);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest createServiceRequest = server.takeRequest();
-         assertEquals(createServiceRequest.getRequestLine(), "POST /OS-KSADM/services HTTP/1.1");
-         String bodyRequest = new String(createServiceRequest.getBody());
-         assertEquals(
-               bodyRequest,
-               "{\"OS-KSADM:service\":{\"name\":\"jclouds-service-test\",\"type\":\"jclouds-service-type\",\"description\":\"jclouds-service-description\"}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void getService() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -213,30 +156,6 @@ public class ServiceAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi>
       }
    }
 
-   public void getServiceFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         ServiceAdminApi serviceAdminApi = keystoneApi.getServiceAdminApi().get();
-         Service service = serviceAdminApi.get("s1000");
-
-         assertNull(service);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateServiceRequest = server.takeRequest();
-         assertEquals(updateServiceRequest.getRequestLine(), "GET /OS-KSADM/services/s1000 HTTP/1.1");
-
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void deleteService() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -258,26 +177,4 @@ public class ServiceAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi>
       }
    }
 
-   public void deleteServiceFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         ServiceAdminApi serviceAdminApi = keystoneApi.getServiceAdminApi().get();
-         boolean success = serviceAdminApi.delete("s1000");
-
-         assertFalse(success);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateServiceRequest = server.takeRequest();
-         assertEquals(updateServiceRequest.getRequestLine(), "DELETE /OS-KSADM/services/s1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiMockTest.java
index 2daae12..4a052fd 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/TenantAdminApiMockTest.java
@@ -17,9 +17,7 @@
 package org.jclouds.openstack.keystone.v2_0.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 org.jclouds.openstack.keystone.v2_0.KeystoneApi;
 import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
@@ -67,33 +65,6 @@ public class TenantAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void createTenantFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         TenantAdminApi tenantAdminApi = keystoneApi.getTenantAdminApi().get();
-         CreateTenantOptions createTenantOptions = CreateTenantOptions.Builder.description("jclouds-description")
-               .enabled(true);
-         Tenant testTenant = tenantAdminApi.create("jclouds-tenant", createTenantOptions);
-
-         assertNull(testTenant);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest createTenantRequest = server.takeRequest();
-         assertEquals(createTenantRequest.getRequestLine(), "POST /tenants HTTP/1.1");
-         assertEquals(new String(createTenantRequest.getBody()),
-               "{\"tenant\":{\"name\":\"jclouds-tenant\",\"description\":\"jclouds-description\",\"enabled\":true}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void updateTenant() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -124,34 +95,6 @@ public class TenantAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void updateTenantFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         TenantAdminApi tenantAdminApi = keystoneApi.getTenantAdminApi().get();
-         UpdateTenantOptions updateTenantOptions = UpdateTenantOptions.Builder
-               .description("jclouds-description-modified").enabled(false).name("jclouds-tenant-modified");
-         Tenant updatedTenant = tenantAdminApi.update("t1000", updateTenantOptions);
-
-         assertNull(updatedTenant);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateTenantRequest = server.takeRequest();
-         assertEquals(updateTenantRequest.getRequestLine(), "PUT /tenants/t1000 HTTP/1.1");
-         assertEquals(
-               new String(updateTenantRequest.getBody()),
-               "{\"tenant\":{\"name\":\"jclouds-tenant-modified\",\"description\":\"jclouds-description-modified\",\"enabled\":false}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void deleteTenant() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -173,29 +116,6 @@ public class TenantAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void deleteTenantFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         TenantAdminApi tenantAdminApi = keystoneApi.getTenantAdminApi().get();
-         boolean success = tenantAdminApi.delete("t1000");
-
-         assertFalse(success);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateTenantRequest = server.takeRequest();
-         assertEquals(updateTenantRequest.getRequestLine(), "DELETE /tenants/t1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void addRoleOnTenant() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -218,30 +138,6 @@ public class TenantAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void addRoleOnTenantFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         TenantAdminApi tenantAdminApi = keystoneApi.getTenantAdminApi().get();
-         boolean success = tenantAdminApi.addRoleOnTenant("u1000", "t1000", "r1000");
-
-         assertFalse(success);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateTenantRequest = server.takeRequest();
-         assertEquals(updateTenantRequest.getRequestLine(),
-               "PUT /tenants/u1000/users/t1000/roles/OS-KSADM/r1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void deleteRoleOnTenant() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -264,27 +160,4 @@ public class TenantAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void deleteRoleOnTenantFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         TenantAdminApi tenantAdminApi = keystoneApi.getTenantAdminApi().get();
-         boolean success = tenantAdminApi.deleteRoleOnTenant("t1000", "u1000", "r1000");
-
-         assertFalse(success);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateTenantRequest = server.takeRequest();
-         assertEquals(updateTenantRequest.getRequestLine(),
-               "DELETE /tenants/t1000/users/u1000/roles/OS-KSADM/r1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiMockTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiMockTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiMockTest.java
index 86798e3..3b269c0 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiMockTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/extensions/UserAdminApiMockTest.java
@@ -17,9 +17,7 @@
 package org.jclouds.openstack.keystone.v2_0.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 org.jclouds.openstack.keystone.v2_0.KeystoneApi;
 import org.jclouds.openstack.keystone.v2_0.domain.User;
@@ -68,33 +66,6 @@ public class UserAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void createUserFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         UserAdminApi userAdminApi = keystoneApi.getUserAdminApi().get();
-         CreateUserOptions createUserOptions = CreateUserOptions.Builder.email("john.smith@example.org").enabled(true);
-         User testUser = userAdminApi.create("jqsmith", "jclouds-password", createUserOptions);
-
-         assertNull(testUser);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest createUserRequest = server.takeRequest();
-         assertEquals(createUserRequest.getRequestLine(), "POST /users HTTP/1.1");
-         assertEquals(
-               new String(createUserRequest.getBody()),
-               "{\"user\":{\"name\":\"jqsmith\",\"password\":\"jclouds-password\",\"email\":\"john.smith@example.org\",\"enabled\":true}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void updateUser() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -125,34 +96,6 @@ public class UserAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void updateUserFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         UserAdminApi userAdminApi = keystoneApi.getUserAdminApi().get();
-         UpdateUserOptions updateUserOptions = UpdateUserOptions.Builder.email("john.smith.renamed@example.org")
-               .enabled(false).name("jqsmith-renamed").password("jclouds-password");
-         User updatedUser = userAdminApi.update("u1000", updateUserOptions);
-
-         assertNull(updatedUser);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateUserRequest = server.takeRequest();
-         assertEquals(updateUserRequest.getRequestLine(), "PUT /users/u1000 HTTP/1.1");
-         assertEquals(
-               new String(updateUserRequest.getBody()),
-               "{\"user\":{\"name\":\"jqsmith-renamed\",\"email\":\"john.smith.renamed@example.org\",\"password\":\"jclouds-password\",\"enabled\":false}}");
-      } finally {
-         server.shutdown();
-      }
-   }
-
    public void deleteUser() throws Exception {
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
@@ -174,26 +117,4 @@ public class UserAdminApiMockTest extends BaseOpenStackMockTest<KeystoneApi> {
       }
    }
 
-   public void deleteUserFail() throws Exception {
-      MockWebServer server = mockOpenStackServer();
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access_version_uids.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/admin_extensions.json"))));
-      server.enqueue(addCommonHeaders(new MockResponse().setResponseCode(404)));
-
-      try {
-         KeystoneApi keystoneApi = api(server.getUrl("/").toString(), "openstack-keystone");
-         UserAdminApi userAdminApi = keystoneApi.getUserAdminApi().get();
-         boolean success = userAdminApi.delete("u1000");
-
-         assertFalse(success);
-
-         assertEquals(server.getRequestCount(), 3);
-         assertAuthentication(server);
-         assertExtensions(server);
-         RecordedRequest updateUserRequest = server.takeRequest();
-         assertEquals(updateUserRequest.getRequestLine(), "DELETE /users/u1000 HTTP/1.1");
-      } finally {
-         server.shutdown();
-      }
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/ServiceApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/ServiceApiExpectTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/ServiceApiExpectTest.java
index 2e3a89e..22ca994 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/ServiceApiExpectTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/ServiceApiExpectTest.java
@@ -20,7 +20,6 @@ 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.assertNotNull;
-import static org.testng.Assert.assertTrue;
 
 import java.util.Set;
 
@@ -57,10 +56,4 @@ public class ServiceApiExpectTest extends BaseKeystoneRestApiExpectTest<Keystone
       assertEquals(tenants, expected);
    }
 
-   public void testListTenantsFailNotFound() {
-      ServiceApi api = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-               authenticatedGET().endpoint(endpoint + "/v2.0/tenants").build(),
-               HttpResponse.builder().statusCode(404).build()).getServiceApi();
-      assertTrue(api.listTenants().isEmpty());
-   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TenantApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TenantApiExpectTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TenantApiExpectTest.java
index aa827b1..0f930d3 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TenantApiExpectTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TenantApiExpectTest.java
@@ -20,8 +20,6 @@ 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.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
 
 import java.util.Set;
 
@@ -30,7 +28,6 @@ import org.jclouds.openstack.keystone.v2_0.KeystoneApi;
 import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
 import org.jclouds.openstack.keystone.v2_0.internal.BaseKeystoneRestApiExpectTest;
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
-import org.jclouds.rest.AuthorizationException;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -93,16 +90,6 @@ public class TenantApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneA
       assertEquals(api.list().concat().toSet(), expected);
    }
    
-   // this is not a compatible format of json per:
-   // http://docs.openstack.org/api/openstack-identity-service/2.0/content/Paginated_Collections-d1e325.html
-   @Test(enabled = false)
-   public void testListTenantsFailNotFound() {
-      TenantApi api = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-               authenticatedGET().endpoint(endpoint + "/v2.0/tenants").build(), HttpResponse.builder().statusCode(404).build())
-               .getTenantApi().get();
-      assertTrue(api.list().isEmpty());
-   }
-
    public void testGetTenant() {
       TenantApi api = requestsSendResponses(
                keystoneAuthWithUsernameAndPasswordAndTenantName,
@@ -117,14 +104,6 @@ public class TenantApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneA
             build());
    }
 
-   @Test(expectedExceptions = AuthorizationException.class)
-   public void testListTenantsFailNotAuthorized() {
-      TenantApi api = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-               authenticatedGET().endpoint(endpoint + "/v2.0/tenants/013ba41150a14830bec85ffe93353bcc").build(),
-               HttpResponse.builder().statusCode(401).build()).getTenantApi().get();
-      api.get("013ba41150a14830bec85ffe93353bcc");
-   }
-
    public void testGetTenantByName() {
       TenantApi api = requestsSendResponses(
                keystoneAuthWithUsernameAndPasswordAndTenantName,
@@ -139,11 +118,4 @@ public class TenantApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneA
             build());
    }
 
-   public void testGetTenantByNameFailNotFound() {
-      TenantApi api = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-               authenticatedGET().endpoint(endpoint + "/v2.0/tenants?name=admin").build(),
-               HttpResponse.builder().statusCode(404).build()).getTenantApi().get();
-      assertNull(api.getByName("admin"));
-   }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TokenApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TokenApiExpectTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TokenApiExpectTest.java
index e714643..87e15d5 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TokenApiExpectTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/TokenApiExpectTest.java
@@ -18,9 +18,7 @@ package org.jclouds.openstack.keystone.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.assertNotNull;
-import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.net.URI;
@@ -30,7 +28,6 @@ import org.jclouds.date.DateService;
 import org.jclouds.date.internal.SimpleDateFormatDateService;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
-import org.jclouds.http.HttpResponseException;
 import org.jclouds.openstack.keystone.v2_0.KeystoneApi;
 import org.jclouds.openstack.keystone.v2_0.domain.Endpoint;
 import org.jclouds.openstack.keystone.v2_0.domain.Role;
@@ -67,24 +64,6 @@ public class TokenApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneAp
                   .tenant(Tenant.builder().id("4cea93f5464b4f1c921fb3e0461d72b5").name("demo").enabled(true).build()).build());
    }
 
-   public void testGetTokenFailNotFound() {
-      TokenApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/tokens/sometokenorother").build(),
-            HttpResponse.builder().statusCode(404).build())
-            .getTokenApi().get();
-      assertNull(api.get("sometokenorother"));
-   }
-
-   @Test(expectedExceptions = HttpResponseException.class)
-   public void testGetTokenFail500() {
-      TokenApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/tokens/sometokenorother").build(),
-            HttpResponse.builder().statusCode(500).build()).getTokenApi().get();
-      api.get("sometokenorother");
-   }
-
    public void testGetUserOfToken() {
       TokenApi api = requestsSendResponses(
             keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
@@ -98,14 +77,6 @@ public class TokenApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneAp
             .build());
    }
 
-   public void testGetUserOfTokenFailNotFound() {
-      TokenApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/tokens/sometokenorother").build(),
-            HttpResponse.builder().statusCode(404).build()).getTokenApi().get();
-      assertNull(api.getUserOfToken("sometokenorother"));
-   }
-
    public void testCheckTokenIsValid() {
       TokenApi api = requestsSendResponses(
             keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
@@ -119,18 +90,6 @@ public class TokenApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneAp
       assertTrue(api.isValid("sometokenorother"));
    }
 
-   public void testCheckTokenIsValidFailNotValid() {
-      TokenApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            HttpRequest.builder().method("HEAD")
-                       .endpoint(endpoint + "/v2.0/tokens/sometokenorother")
-                       .addHeader("Accept", APPLICATION_JSON)
-                       .addHeader("X-Auth-Token", authToken)
-                       .build(),
-            HttpResponse.builder().statusCode(404).build()).getTokenApi().get();
-      assertFalse(api.isValid("sometokenorother"));
-   }
-
    @Test
    public void testGetEndpointsForToken() {
       TokenApi api = requestsSendResponses(
@@ -147,15 +106,4 @@ public class TokenApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneAp
       ));
    }
 
-   @Test
-   public void testGetEndpointsForTokenFailNotFound() {
-      TokenApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/tokens/XXXXXX/endpoints").build(),
-            HttpResponse.builder().statusCode(404).build())
-            .getTokenApi().get();
-      assertTrue(api.listEndpointsForToken("XXXXXX").isEmpty());
-   }
-
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/UserApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/UserApiExpectTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/UserApiExpectTest.java
index fe12f93..18fee19 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/UserApiExpectTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v2_0/features/UserApiExpectTest.java
@@ -20,7 +20,6 @@ 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.assertNotNull;
-import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Set;
@@ -82,14 +81,6 @@ public class UserApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneApi
       assertEquals(users.toSet(), expectedUsers);
    }
    
-   public void testListUsersNotFound() {
-      UserApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/users").build(),
-            HttpResponse.builder().statusCode(404).build()).getUserApi().get();
-      assertEquals( api.list(new PaginationOptions()).size(), 0);
-   }
-
    @Test(expectedExceptions = AuthorizationException.class)
    public void testListUsersFailNotAuth() {
       UserApi api = requestsSendResponses(
@@ -111,14 +102,6 @@ public class UserApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneApi
             tenantId("ab1da202f5774cceb5da2aeff1f0aa87").build());
    }
 
-   public void testGetUserFailNotFound() {
-      UserApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/users/f021dfd758eb44a89f1c57c8ef3be8e2").build(),
-            HttpResponse.builder().statusCode(404).build()).getUserApi().get();
-      assertNull(api.get("f021dfd758eb44a89f1c57c8ef3be8e2"));
-   }
-
    public void testGetUserByName() {
       UserApi api = requestsSendResponses(
             keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
@@ -131,14 +114,6 @@ public class UserApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneApi
             tenantId("ab1da202f5774cceb5da2aeff1f0aa87").build());
    }
 
-   public void testGetUserByNameFailNotFound() {
-      UserApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/users?name=fred").build(),
-            HttpResponse.builder().statusCode(404).build()).getUserApi().get();
-      assertNull(api.getByName("fred"));
-   }
-   
    public void testListRolesOfUser() {
       UserApi api = requestsSendResponses(
             keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
@@ -153,14 +128,6 @@ public class UserApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneApi
       ));
    }
 
-   public void testListRolesOfUserFailNotFound() {
-      UserApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/users/4f6c1c9ba993495ead7d2eb2192e284f/roles").build(),
-            HttpResponse.builder().statusCode(404).build()).getUserApi().get();
-      assertTrue(api.listRolesOfUser("4f6c1c9ba993495ead7d2eb2192e284f").isEmpty());
-   }
-
    @Test(expectedExceptions = HttpResponseException.class)
    public void testListRolesOfUserFailNotImplemented() {
       UserApi api = requestsSendResponses(
@@ -185,12 +152,4 @@ public class UserApiExpectTest extends BaseKeystoneRestApiExpectTest<KeystoneApi
          Role.builder().id("6ea17ddd37a6447794cb0e164d4db894").name("KeystoneAdmin").build()));
    }
 
-   public void testListRolesOfUserInTenantFailNotFound() {
-      UserApi api = requestsSendResponses(
-            keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess,
-            authenticatedGET().endpoint(endpoint + "/v2.0/users/3f6c1c9ba993495ead7d2eb2192e284f/roles").build(),
-            HttpResponse.builder().statusCode(404).build()).getUserApi().get();
-      assertTrue(api.listRolesOfUser("3f6c1c9ba993495ead7d2eb2192e284f").isEmpty());
-   }
-   
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-nova-ec2/src/test/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/test/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApiExpectTest.java b/apis/openstack-nova-ec2/src/test/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApiExpectTest.java
index c01110d..2c1d307 100644
--- a/apis/openstack-nova-ec2/src/test/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApiExpectTest.java
+++ b/apis/openstack-nova-ec2/src/test/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApiExpectTest.java
@@ -22,7 +22,6 @@ import org.jclouds.ec2.domain.KeyPair;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.openstack.nova.ec2.internal.BaseNovaEC2RestApiExpectTest;
-import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
 public class NovaEC2KeyPairApiExpectTest extends BaseNovaEC2RestApiExpectTest {
@@ -43,21 +42,6 @@ public class NovaEC2KeyPairApiExpectTest extends BaseNovaEC2RestApiExpectTest {
       assertEquals(result.getSha1OfPrivateKey(), "e3:fd:de:f6:4c:36:7d:9b:8f:2f:4c:20:f8:ae:b0:ea");
    }
 
-   @Test(expectedExceptions = ResourceNotFoundException.class)
-   public void testImportKeyPairFailsNotFound() {
-      NovaEC2KeyPairApi client = requestsSendResponses(
-            describeAvailabilityZonesRequest,
-            describeAvailabilityZonesResponse,
-            HttpRequest.builder().method("POST")
-                  .endpoint("http://localhost:8773/services/Cloud/")
-                  .addHeader("Host", "localhost:8773")
-                  .payload(payloadFromStringWithContentType("Action=ImportKeyPair&KeyName=mykey&PublicKeyMaterial=c3NoLXJzYSBBQQ%3D%3D&Signature=wOOKOlDfJezRkx7NKcyOyaBQuY7PoVE3HFa9495RL7s%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(),
-            HttpResponse.builder().statusCode(404).build()
-      ).getKeyPairApi().get();
-
-      client.importKeyPairInRegion(null, "mykey", "ssh-rsa AA");
-   }
-
    @Test(expectedExceptions = IllegalStateException.class)
    public void testImportKeyPairFailsAlreadyExists() {
       NovaEC2KeyPairApi client = requestsSendResponses(

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
index 36e1050..7689b53 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/compute/functions/AllocateAndAddFloatingIpToNode.java
@@ -19,6 +19,7 @@ package org.jclouds.openstack.nova.v2_0.compute.functions;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_NODE_RUNNING;
+
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
@@ -38,6 +39,7 @@ import org.jclouds.openstack.nova.v2_0.domain.FloatingIP;
 import org.jclouds.openstack.nova.v2_0.domain.regionscoped.RegionAndId;
 import org.jclouds.openstack.nova.v2_0.extensions.FloatingIPApi;
 import org.jclouds.rest.InsufficientResourcesException;
+import org.jclouds.rest.ResourceNotFoundException;
 
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
@@ -114,8 +116,9 @@ public class AllocateAndAddFloatingIpToNode implements
             try {
                logger.debug(">> allocating floating IP from pool %s for node(%s)", poolName, nodeID);
                ip = floatingIpApi.allocateFromPool(poolName);
-               if (ip != null)
-                  return Optional.of(ip);
+               return Optional.of(ip);
+            } catch (ResourceNotFoundException ex) {
+               logger.trace("<< [%s] failed to allocate floating IP from pool %s for node(%s)", ex.getMessage(), poolName, nodeID);
             } catch (InsufficientResourcesException ire) {
                logger.trace("<< [%s] failed to allocate floating IP from pool %s for node(%s)", ire.getMessage(), poolName, nodeID);
             }
@@ -126,8 +129,9 @@ public class AllocateAndAddFloatingIpToNode implements
       try {
          logger.debug(">> creating floating IP for node(%s)", nodeID);
          ip = floatingIpApi.create();
-         if (ip != null)
-            return Optional.of(ip);
+         return Optional.of(ip);
+      } catch (ResourceNotFoundException ex) {
+         logger.trace("<< [%s] failed to create floating IP for node(%s)", ex.getMessage(), nodeID);
       } catch (InsufficientResourcesException ire) {
          logger.trace("<< [%s] failed to create floating IP for node(%s)", ire.getMessage(), nodeID);
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
index abf6f4d..02ab260 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FlavorExtraSpecsApi.java
@@ -81,15 +81,14 @@ public interface FlavorExtraSpecsApi {
    @Path("/{id}/os-extra_specs")
    @Produces(MediaType.APPLICATION_JSON)
    @MapBinder(BindToJsonPayload.class)
-   @Fallback(FalseOnNotFoundOr404.class)
-   Boolean updateMetadata(@PathParam("id") String flavorId,
+   void updateMetadata(@PathParam("id") String flavorId,
          @PayloadParam("extra_specs") Map<String, String> specs);
 
    /**
     * Return a single extra spec value
     *
-    * @param id  the id of the flavor to modify
-    * @param key the extra spec key to retrieve
+    * @param flavorId   the id of the flavor to modify
+    * @param key        the extra spec key to retrieve
     */
    @Named("flavorExtraSpecs:getMetadataKey")
    @GET
@@ -102,29 +101,28 @@ public interface FlavorExtraSpecsApi {
    /**
     * Creates or updates a single extra spec value
     *
-    * @param id    the id of the flavor to modify
-    * @param key   the extra spec key (when creating ensure this does not include whitespace or
-    *              other difficult characters)
-    * @param value the value to associate with the key
+    * @param flavorId   the id of the flavor to modify
+    * @param key        the extra spec key (when creating ensure this does not include whitespace or
+    *                   other difficult characters)
+    * @param value      the value to associate with the key
     */
    @Named("flavorExtraSpecs:updateMetadataEntry")
    @PUT
    @Path("/{id}/os-extra_specs/{key}")
    @Produces(MediaType.APPLICATION_JSON)
    @Payload("%7B\"{key}\":\"{value}\"%7D")
-   @Fallback(FalseOnNotFoundOr404.class)
-   Boolean updateMetadataEntry(@PathParam("id") String flavorId,
+   void updateMetadataEntry(@PathParam("id") String flavorId,
          @PathParam("key") @PayloadParam("key") String key, @PayloadParam("value") String value);
 
    /**
     * Deletes an extra spec
     *
-    * @param id  the id of the flavor to modify
-    * @param key the extra spec key to delete
+    * @param flavorId   the id of the flavor to modify
+    * @param key        the extra spec key to delete
     */
    @Named("flavorExtraSpecs:deleteMetadataKey")
    @DELETE
    @Path("/{id}/os-extra_specs/{key}")
    @Fallback(FalseOnNotFoundOr404.class)
-   Boolean deleteMetadataKey(@PathParam("id") String flavorId, @PathParam("key") String key);
+   boolean deleteMetadataKey(@PathParam("id") String flavorId, @PathParam("key") String key);
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
index 67f78d7..c37aa90 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/FloatingIPApi.java
@@ -86,7 +86,6 @@ public interface FloatingIPApi {
    @SelectJson("floating_ip")
    @Produces(MediaType.APPLICATION_JSON)
    @Payload("{}")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    FloatingIP create();
 
@@ -103,7 +102,6 @@ public interface FloatingIPApi {
    @SelectJson("floating_ip")
    @Produces(MediaType.APPLICATION_JSON)
    @Payload("%7B\"pool\":\"{pool}\"%7D")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    FloatingIP allocateFromPool(@PayloadParam("pool") String pool);
 
@@ -121,7 +119,7 @@ public interface FloatingIPApi {
    /**
     * Adds a Floating IP address to a Server
     *
-    * @param id
+    * @param serverId
     *           the server id
     * @param address
     *           the IP address to add
@@ -138,7 +136,7 @@ public interface FloatingIPApi {
    /**
     * Removes a Floating IP address from a Server
     *
-    * @param id
+    * @param serverId
     *           the server id
     * @param address
     *           the IP address to remove

http://git-wip-us.apache.org/repos/asf/jclouds/blob/d83282ca/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
index 44afc36..6435b1d 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/extensions/SecurityGroupApi.java
@@ -91,7 +91,6 @@ public interface SecurityGroupApi {
    @SelectJson("security_group")
    @Produces(MediaType.APPLICATION_JSON)
    @Payload("%7B\"security_group\":%7B\"name\":\"{name}\",\"description\":\"{description}\"%7D%7D")
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    SecurityGroup createWithDescription(@PayloadParam("name") String name,
          @PayloadParam("description") String description);
@@ -118,7 +117,6 @@ public interface SecurityGroupApi {
    @SelectJson("security_group_rule")
    @Produces(MediaType.APPLICATION_JSON)
    @MapBinder(BindSecurityGroupRuleToJsonPayload.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    SecurityGroupRule createRuleAllowingCidrBlock(
          @PayloadParam("parent_group_id") String parentGroup, Ingress ip_protocol,
@@ -135,7 +133,6 @@ public interface SecurityGroupApi {
    @SelectJson("security_group_rule")
    @Produces(MediaType.APPLICATION_JSON)
    @MapBinder(BindSecurityGroupRuleToJsonPayload.class)
-   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    SecurityGroupRule createRuleAllowingSecurityGroupId(
          @PayloadParam("parent_group_id") String parentGroup, Ingress ip_protocol,