You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by jd...@apache.org on 2014/08/13 18:59:51 UTC
[12/12] git commit: Prefer Regions to Zones in OpenStack APIs
Prefer Regions to Zones in OpenStack APIs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/744cd5d7
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/744cd5d7
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/744cd5d7
Branch: refs/heads/master
Commit: 744cd5d7ebb5c2135ce1330ca0ee5c4ae48ff2cb
Parents: 9009bb5
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Sat Jul 26 10:40:02 2014 -0700
Committer: Jeremy Daggett <jd...@apache.org>
Committed: Wed Aug 13 09:58:53 2014 -0700
----------------------------------------------------------------------
.../jclouds/openstack/cinder/v1/CinderApi.java | 86 +++--
.../openstack/cinder/v1/CinderApiMetadata.java | 10 +-
.../openstack/cinder/v1/features/QuotaApi.java | 27 +-
.../cinder/v1/features/SnapshotApi.java | 34 +-
.../openstack/cinder/v1/features/VolumeApi.java | 31 +-
.../cinder/v1/features/VolumeTypeApi.java | 21 +-
.../v1/predicates/SnapshotPredicates.java | 30 +-
.../cinder/v1/predicates/VolumePredicates.java | 40 +--
.../cinder/v1/features/QuotasApiExpectTest.java | 8 +-
.../cinder/v1/features/QuotasApiLiveTest.java | 13 +-
.../v1/features/SnapshotApiExpectTest.java | 28 +-
.../features/VolumeAndSnapshotApiLiveTest.java | 14 +-
.../cinder/v1/features/VolumeApiExpectTest.java | 20 +-
.../v1/features/VolumeTypeApiExpectTest.java | 6 +-
.../v1/features/VolumeTypeApiLiveTest.java | 6 +-
.../config/KeystoneAuthenticationModule.java | 7 +-
.../v2_0/config/KeystoneHttpApiModule.java | 2 +-
.../v2_0/config/KeystoneRestClientModule.java | 2 +-
...ceEqualsAnyNamespaceInExtensionsSetTest.java | 62 ++--
.../jclouds/openstack/nova/v2_0/NovaApi.java | 317 +++++++++++++++--
.../openstack/nova/v2_0/NovaApiMetadata.java | 4 +-
.../nova/v2_0/compute/NovaComputeService.java | 58 ++--
.../v2_0/compute/NovaComputeServiceAdapter.java | 137 ++++----
.../config/NovaComputeServiceContextModule.java | 68 ++--
.../compute/extensions/NovaImageExtension.java | 28 +-
.../extensions/NovaSecurityGroupExtension.java | 136 ++++----
.../AllocateAndAddFloatingIpToNode.java | 12 +-
.../functions/CreateSecurityGroupIfNeeded.java | 30 +-
.../functions/FlavorInRegionToHardware.java | 58 ++++
.../functions/FlavorInZoneToHardware.java | 58 ----
.../compute/functions/ImageInRegionToImage.java | 68 ++++
.../compute/functions/ImageInZoneToImage.java | 68 ----
...ovaSecurityGroupInRegionToSecurityGroup.java | 73 ++++
.../NovaSecurityGroupInZoneToSecurityGroup.java | 73 ----
.../functions/OrphanedGroupsByRegionId.java | 73 ++++
.../functions/OrphanedGroupsByZoneId.java | 73 ----
.../RemoveFloatingIpFromNodeAndDeallocate.java | 12 +-
.../SecurityGroupRuleToIpPermission.java | 34 +-
.../functions/ServerInRegionToNodeMetadata.java | 207 +++++++++++
.../functions/ServerInZoneToNodeMetadata.java | 207 -----------
.../compute/loaders/CreateUniqueKeyPair.java | 18 +-
.../loaders/FindSecurityGroupOrCreate.java | 52 +--
.../loaders/LoadFloatingIpsForInstance.java | 14 +-
.../compute/options/NovaTemplateOptions.java | 18 +-
.../predicates/AllNodesInGroupTerminated.java | 14 +-
...desWithGroupEncodedIntoNameThenAddToSet.java | 30 +-
.../nova/v2_0/config/NovaHttpApiModule.java | 4 +-
.../nova/v2_0/domain/HostAggregate.java | 42 ++-
.../domain/regionscoped/AvailabilityZone.java | 69 ++++
.../domain/regionscoped/FlavorInRegion.java | 43 +++
.../v2_0/domain/regionscoped/ImageInRegion.java | 43 +++
.../v2_0/domain/regionscoped/RegionAndId.java | 83 +++++
.../v2_0/domain/regionscoped/RegionAndName.java | 110 ++++++
.../RegionSecurityGroupNameAndPorts.java | 59 ++++
.../regionscoped/SecurityGroupInRegion.java | 43 +++
.../domain/regionscoped/ServerInRegion.java | 43 +++
.../v2_0/domain/regionscoped/ZoneState.java | 57 ++++
.../domain/zonescoped/AvailabilityZone.java | 69 ----
.../v2_0/domain/zonescoped/FlavorInZone.java | 43 ---
.../v2_0/domain/zonescoped/ImageInZone.java | 43 ---
.../domain/zonescoped/SecurityGroupInZone.java | 43 ---
.../v2_0/domain/zonescoped/ServerInZone.java | 43 ---
.../nova/v2_0/domain/zonescoped/ZoneAndId.java | 83 -----
.../v2_0/domain/zonescoped/ZoneAndName.java | 110 ------
.../ZoneSecurityGroupNameAndPorts.java | 59 ----
.../nova/v2_0/domain/zonescoped/ZoneState.java | 57 ----
.../v2_0/extensions/AvailabilityZoneApi.java | 2 +-
.../functions/internal/ParseFlavorDetails.java | 10 +-
.../v2_0/functions/internal/ParseFlavors.java | 4 +-
.../functions/internal/ParseImageDetails.java | 4 +-
.../v2_0/functions/internal/ParseImages.java | 10 +-
.../functions/internal/ParseServerDetails.java | 4 +-
.../v2_0/functions/internal/ParseServers.java | 10 +-
.../nova/v2_0/options/CreateServerOptions.java | 6 +-
.../FindSecurityGroupWithNameAndReturnTrue.java | 20 +-
.../nova/v2_0/predicates/ServerPredicates.java | 14 +-
...tKeyAndTenantIdAuthenticationExpectTest.java | 8 +-
...antNamePropertyAuthenticationExpectTest.java | 6 +-
...KeyAndSecretKeyAuthenticationExpectTest.java | 8 +-
.../nova/v2_0/EndpointIdIsRandomExpectTest.java | 4 +-
.../v2_0/PasswordAuthenticationExpectTest.java | 10 +-
...dAuthenticationWithTenantNameExpectTest.java | 8 +-
.../NovaComputeServiceAdapterExpectTest.java | 28 +-
.../compute/NovaComputeServiceExpectTest.java | 12 +-
.../NovaImageExtensionExpectTest.java | 10 +-
.../NovaSecurityGroupExtensionExpectTest.java | 34 +-
...llocateAndAddFloatingIpToNodeExpectTest.java | 6 +-
.../functions/FlavorInRegionToHardwareTest.java | 88 +++++
.../functions/FlavorInZoneToHardwareTest.java | 88 -----
.../functions/ImageInRegionToImageTest.java | 93 +++++
.../functions/ImageInZoneToImageTest.java | 93 -----
...ecurityGroupInRegionToSecurityGroupTest.java | 91 +++++
...aSecurityGroupInZoneToSecurityGroupTest.java | 91 -----
.../NovaSecurityGroupToSecurityGroupTest.java | 24 +-
.../functions/OrphanedGroupsByRegionIdTest.java | 91 +++++
.../functions/OrphanedGroupsByZoneIdTest.java | 91 -----
.../ServerInRegionToNodeMetadataTest.java | 341 +++++++++++++++++++
.../ServerInZoneToNodeMetadataTest.java | 341 -------------------
.../loaders/CreateUniqueKeyPairTest.java | 12 +-
.../loaders/FindSecurityGroupOrCreateTest.java | 66 ++--
.../loaders/LoadFloatingIpsForInstanceTest.java | 15 +-
.../extensions/AdminActionsApiExpectTest.java | 60 ++--
.../extensions/AdminActionsApiLiveTest.java | 18 +-
.../AvailabilityZoneApiExpectTest.java | 5 +-
.../AvailabilityZonesApiLiveTest.java | 4 +-
.../v2_0/extensions/ConsolesApiLiveTest.java | 8 +-
.../v2_0/extensions/ConsolesApiMockTest.java | 8 +-
.../FlavorExtraSpecsApiExpectTest.java | 16 +-
.../extensions/FlavorExtraSpecsApiLiveTest.java | 8 +-
.../extensions/FloatingIPApiExpectTest.java | 24 +-
.../v2_0/extensions/FloatingIPApiLiveTest.java | 16 +-
.../HostAdministrationApiExpectTest.java | 40 +--
.../HostAdministrationApiLiveTest.java | 4 +-
.../extensions/HostAggregateApiExpectTest.java | 22 +-
.../extensions/HostAggregateApiLiveTest.java | 8 +-
.../v2_0/extensions/KeyPairApiExpectTest.java | 16 +-
.../v2_0/extensions/KeyPairApiLiveTest.java | 12 +-
.../v2_0/extensions/QuotaApiExpectTest.java | 12 +-
.../nova/v2_0/extensions/QuotaApiLiveTest.java | 4 +-
.../extensions/SecurityGroupApiExpectTest.java | 22 +-
.../extensions/SecurityGroupApiLiveTest.java | 12 +-
.../ServerWithSecurityGroupsApiExpectTest.java | 4 +-
.../ServerWithSecurityGroupsApiLiveTest.java | 12 +-
.../SimpleTenantUsageApiExpectTest.java | 12 +-
.../SimpleTenantUsageApiLiveTest.java | 4 +-
.../VirtualInterfaceApiExpectTest.java | 4 +-
.../extensions/VirtualInterfaceApiLiveTest.java | 11 +-
.../v2_0/extensions/VolumeApiExpectTest.java | 64 ++--
.../nova/v2_0/extensions/VolumeApiLiveTest.java | 14 +-
.../VolumeAttachmentApiExpectTest.java | 20 +-
.../extensions/VolumeAttachmentApiLiveTest.java | 18 +-
.../extensions/VolumeTypeApiExpectTest.java | 32 +-
.../v2_0/extensions/VolumeTypeApiLiveTest.java | 6 +-
.../v2_0/features/ExtensionApiExpectTest.java | 10 +-
.../v2_0/features/ExtensionApiLiveTest.java | 12 +-
.../nova/v2_0/features/FlavorApiExpectTest.java | 14 +-
.../nova/v2_0/features/FlavorApiLiveTest.java | 18 +-
.../nova/v2_0/features/ImageApiExpectTest.java | 32 +-
.../nova/v2_0/features/ImageApiLiveTest.java | 12 +-
.../nova/v2_0/features/ServerApiExpectTest.java | 66 ++--
.../nova/v2_0/features/ServerApiLiveTest.java | 44 +--
.../CreateSecurityGroupIfNeededTest.java | 34 +-
...ityGroupWithNameAndReturnTrueExpectTest.java | 20 +-
.../v2_0/functions/InternalURLLiveTest.java | 8 +-
.../nova/v2_0/internal/BaseNovaApiLiveTest.java | 40 +--
.../predicates/ServerPredicatesMockTest.java | 6 +-
.../jclouds/openstack/trove/v1/TroveApi.java | 80 ++++-
.../openstack/trove/v1/TroveApiMetadata.java | 8 +-
.../trove/v1/features/DatabaseApi.java | 24 +-
.../openstack/trove/v1/features/FlavorApi.java | 13 +-
.../trove/v1/features/InstanceApi.java | 26 +-
.../openstack/trove/v1/features/UserApi.java | 29 +-
.../trove/v1/predicates/InstancePredicates.java | 36 +-
.../openstack/trove/v1/utils/TroveUtils.java | 24 +-
.../openstack/trove/v1/domain/FlavorTest.java | 10 +-
.../openstack/trove/v1/domain/InstanceTest.java | 6 +-
.../openstack/trove/v1/domain/UserTest.java | 6 +-
.../v1/features/DatabaseApiExpectTest.java | 16 +-
.../trove/v1/features/DatabaseApiLiveTest.java | 46 +--
.../trove/v1/features/FlavorApiExpectTest.java | 22 +-
.../trove/v1/features/FlavorApiLiveTest.java | 24 +-
.../v1/features/InstanceApiExpectTest.java | 26 +-
.../trove/v1/features/InstanceApiLiveTest.java | 56 +--
.../trove/v1/features/UserApiExpectTest.java | 44 +--
.../trove/v1/features/UserApiLiveTest.java | 86 ++---
.../rackspace/clouddns/v1/CloudDNSApi.java | 24 +-
.../v1/functions/RecordsToPagedIterable.java | 2 +-
.../v1/features/RecordApiExpectTest.java | 24 +-
.../clouddns/v1/features/RecordApiLiveTest.java | 36 +-
.../v1/features/ReverseDNSApiExpectTest.java | 12 +-
.../v1/features/ReverseDNSApiLiveTest.java | 20 +-
.../v1/CloudLoadBalancersApi.java | 156 ++++++++-
.../v1/CloudLoadBalancersApiMetadata.java | 6 +-
.../v1/functions/ParseLoadBalancerUsages.java | 6 +-
.../v1/functions/ParseLoadBalancers.java | 18 +-
.../v1/functions/ParseNodes.java | 10 +-
...oadBalancersDestroyLoadBalancerStrategy.java | 2 +-
...alancersGetLoadBalancerMetadataStrategy.java | 2 +-
...dLoadBalancersListLoadBalancersStrategy.java | 12 +-
...udLoadBalancersLoadBalanceNodesStrategy.java | 2 +-
.../v1/predicates/LoadBalancerPredicates.java | 36 +-
.../v1/features/AccessRuleApiExpectTest.java | 24 +-
.../v1/features/AccessRuleApiLiveTest.java | 66 ++--
.../v1/features/ConnectionApiExpectTest.java | 48 +--
.../v1/features/ConnectionApiLiveTest.java | 68 ++--
.../features/ContentCachingApiExpectTest.java | 24 +-
.../v1/features/ContentCachingApiLiveTest.java | 44 +--
.../v1/features/ErrorPageApiExpectTest.java | 32 +-
.../v1/features/ErrorPageApiLiveTest.java | 36 +-
.../v1/features/HealthMonitorApiExpectTest.java | 30 +-
.../v1/features/HealthMonitorApiLiveTest.java | 40 +--
.../v1/features/LoadBalancerApiExpectTest.java | 18 +-
.../v1/features/LoadBalancerApiLiveTest.java | 82 ++---
.../v1/features/NodeApiExpectTest.java | 20 +-
.../v1/features/NodeApiLiveTest.java | 64 ++--
.../v1/features/ReportApiExpectTest.java | 74 ++--
.../v1/features/ReportApiLiveTest.java | 38 +--
.../features/SSLTerminationApiExpectTest.java | 20 +-
.../v1/features/SSLTerminationApiLiveTest.java | 40 +--
.../SessionPersistenceApiExpectTest.java | 26 +-
.../features/SessionPersistenceApiLiveTest.java | 40 +--
.../v1/features/VirtualIPApiExpectTest.java | 18 +-
.../v1/features/VirtualIPApiLiveTest.java | 58 ++--
.../BaseCloudLoadBalancersApiLiveTest.java | 2 +-
.../collect/internal/Arg0ToPagedIterable.java | 4 +-
.../collect/internal/ArgsToPagedIterable.java | 6 +-
.../java/org/jclouds/apis/BaseApiLiveTest.java | 22 +-
...dBlockStorageProviderMetadataExpectTest.java | 6 +-
.../compute/HPCloudComputeProviderMetadata.java | 8 +-
.../compute/HPCloudComputeServiceAdapter.java | 18 +-
...PCloudComputeProviderMetadataExpectTest.java | 8 +-
.../uk/CloudBlockStorageUKProviderMetadata.java | 14 +-
...lockStorageUKProviderMetadataExpectTest.java | 8 +-
.../us/CloudBlockStorageUSProviderMetadata.java | 22 +-
...lockStorageUSProviderMetadataExpectTest.java | 8 +-
.../uk/CloudDatabasesUKProviderMetadata.java | 12 +-
...udDatabasesUKProviderMetadataExpectTest.java | 8 +-
.../us/CloudDatabasesUSProviderMetadata.java | 20 +-
...udDatabasesUSProviderMetadataExpectTest.java | 8 +-
.../CloudLoadBalancersUKProviderMetadata.java | 14 +-
.../CloudLoadBalancersUSProviderMetadata.java | 22 +-
.../uk/CloudServersUKProviderMetadata.java | 16 +-
...loudServersUKProviderMetadataExpectTest.java | 8 +-
.../us/CloudServersUSProviderMetadata.java | 24 +-
...loudServersUSProviderMetadataExpectTest.java | 8 +-
225 files changed, 4360 insertions(+), 3878 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApi.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApi.java
index 879496c..42b36da 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApi.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApi.java
@@ -18,65 +18,113 @@ package org.jclouds.openstack.cinder.v1;
import java.io.Closeable;
import java.util.Set;
+
import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.ZoneToEndpoint;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpoint;
+import org.jclouds.openstack.cinder.v1.domain.Snapshot;
+import org.jclouds.openstack.cinder.v1.domain.Volume;
+import org.jclouds.openstack.cinder.v1.domain.VolumeType;
import org.jclouds.openstack.cinder.v1.features.QuotaApi;
import org.jclouds.openstack.cinder.v1.features.SnapshotApi;
import org.jclouds.openstack.cinder.v1.features.VolumeApi;
import org.jclouds.openstack.cinder.v1.features.VolumeTypeApi;
import org.jclouds.openstack.v2_0.features.ExtensionApi;
+import org.jclouds.openstack.v2_0.services.Extension;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.rest.annotations.EndpointParam;
import com.google.inject.Provides;
/**
- * Provides synchronous access to Cinder.
- *
- * @see <a href="http://api.openstack.org/">API Doc</a>
+ * Provides synchronous access to OpenStack Block Storage (Cinder) v1 API.
*/
public interface CinderApi extends Closeable {
+
+ /**
+ * @return the Region codes configured
+ */
+ @Provides
+ @Region
+ Set<String> getConfiguredRegions();
+
+ /**
+ * Provides synchronous access to {@link Extension} features.
+ */
+ @Delegate
+ ExtensionApi getExtensionApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+ /**
+ * Provides synchronous access to {@link Volume} features.
+ */
+ @Delegate
+ VolumeApi getVolumeApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+ /**
+ * Provides synchronous access to {@link VolumeType} features.
+ */
+ @Delegate
+ VolumeTypeApi getVolumeTypeApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+ /**
+ * Provides synchronous access to {@link Snapshot} features.
+ */
+ @Delegate
+ SnapshotApi getSnapshotApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+ /**
+ * Provides synchronous access to quota features.
+ */
+ @Delegate
+ QuotaApi getQuotaApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
/**
* @return the Zone codes configured
+ * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
*/
+ @Deprecated
@Provides
- @Zone
+ @Region
Set<String> getConfiguredZones();
-
+
/**
* Provides synchronous access to Extension features.
+ * @deprecated Please use {@link #getExtensionApi(String region)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
ExtensionApi getExtensionApiForZone(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
/**
* Provides synchronous access to Volume features.
+ * @deprecated Please use {@link #getVolumeApi(String region)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
VolumeApi getVolumeApiForZone(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
/**
* Provides synchronous access to VolumeType features.
+ * @deprecated Please use {@link #getVolumeTypeApi(String region)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
VolumeTypeApi getVolumeTypeApiForZone(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
-
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
+
/**
* Provides synchronous access to Snapshot features.
+ * @deprecated Please use {@link #getSnapshotApi(String)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
SnapshotApi getSnapshotApiForZone(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
-
- /**
- * Provides synchronous access to quotas features.
- */
- @Delegate
- QuotaApi getQuotaApi(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApiMetadata.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApiMetadata.java
index 1b497c5..e532f37 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApiMetadata.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/CinderApiMetadata.java
@@ -27,7 +27,7 @@ import org.jclouds.openstack.cinder.v1.config.CinderParserModule;
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.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
import org.jclouds.openstack.v2_0.ServiceType;
import org.jclouds.rest.internal.BaseHttpApiMetadata;
@@ -35,10 +35,10 @@ import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
/**
- * Implementation of {@link ApiMetadata} for Cinder v1 API
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for Cinder v1 API
*/
public class CinderApiMetadata extends BaseHttpApiMetadata<CinderApi> {
-
+
@Override
public Builder toBuilder() {
return new Builder().fromApiMetadata(this);
@@ -74,12 +74,12 @@ public class CinderApiMetadata extends BaseHttpApiMetadata<CinderApi> {
.defaultModules(ImmutableSet.<Class<? extends Module>>builder()
.add(AuthenticationApiModule.class)
.add(KeystoneAuthenticationModule.class)
- .add(ZoneModule.class)
+ .add(RegionModule.class)
.add(CinderParserModule.class)
.add(CinderHttpApiModule.class)
.build());
}
-
+
@Override
public CinderApiMetadata build() {
return new CinderApiMetadata(this);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/QuotaApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/QuotaApi.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/QuotaApi.java
index 3ac8dd2..e8c39f9 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/QuotaApi.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/QuotaApi.java
@@ -16,7 +16,15 @@
*/
package org.jclouds.openstack.cinder.v1.features;
-import org.jclouds.Fallbacks;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.cinder.v1.domain.VolumeQuota;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.rest.annotations.Fallback;
@@ -24,29 +32,22 @@ import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
import org.jclouds.rest.annotations.SkipEncoding;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
/**
- * Provides asynchronous access to Quota via their REST API.
+ * Provides access to the Quota API.
*
- * @see QuotaApi
- * @see <a href="http://api.openstack.org/">API Doc</a>
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
@Path("/os-quota-sets")
public interface QuotaApi {
-
+ @Named("quota:get")
@GET
@SelectJson("quota_set")
- @Consumes(MediaType.APPLICATION_JSON)
@Path("/{tenant_id}")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
VolumeQuota getByTenant(@PathParam("tenant_id") String tenantId);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/SnapshotApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/SnapshotApi.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/SnapshotApi.java
index f7f7c97..14807f3 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/SnapshotApi.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/SnapshotApi.java
@@ -29,6 +29,7 @@ import javax.ws.rs.core.MediaType;
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.cinder.v1.domain.Snapshot;
import org.jclouds.openstack.cinder.v1.options.CreateSnapshotOptions;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -42,12 +43,13 @@ import org.jclouds.rest.annotations.SkipEncoding;
import com.google.common.collect.FluentIterable;
/**
- * Provides synchronous access to Volume Snapshots via their REST API.
- *
- * @see <a href="http://api.openstack.org/">API Doc</a>
+ * Provides synchronous access to Volume Snapshots API.
+ *
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/snapshots")
public interface SnapshotApi {
/**
* Returns a summary list of Snapshots.
@@ -56,10 +58,8 @@ public interface SnapshotApi {
*/
@Named("snapshot:list")
@GET
- @Path("/snapshots")
@SelectJson("snapshots")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+ @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
FluentIterable<? extends Snapshot> list();
/**
@@ -69,10 +69,9 @@ public interface SnapshotApi {
*/
@Named("snapshot:list")
@GET
- @Path("/snapshots/detail")
+ @Path("/detail")
@SelectJson("snapshots")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+ @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
FluentIterable<? extends Snapshot> listInDetail();
/**
@@ -83,26 +82,24 @@ public interface SnapshotApi {
*/
@Named("snapshot:get")
@GET
- @Path("/snapshots/{id}")
+ @Path("/{id}")
@SelectJson("snapshot")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(NullOnNotFoundOr404.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
Snapshot get(@PathParam("id") String snapshotId);
/**
* Creates a new Snapshot. The Volume status must be Available.
- *
+ *
* @param volumeId The Volume Id from which to create the Snapshot
* @param options See CreateSnapshotOptions
* @return The new Snapshot
*/
@Named("snapshot:create")
@POST
- @Path("/snapshots")
@SelectJson("snapshot")
- @Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
- @MapBinder(CreateSnapshotOptions.class)
+ @MapBinder(CreateSnapshotOptions.class)
Snapshot create(@PayloadParam("volume_id") String volumeId, CreateSnapshotOptions... options);
/**
@@ -113,8 +110,7 @@ public interface SnapshotApi {
*/
@Named("snapshot:delete")
@DELETE
- @Path("/snapshots/{id}")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(FalseOnNotFoundOr404.class)
+ @Path("/{id}")
+ @Fallback(FalseOnNotFoundOr404.class)
boolean delete(@PathParam("id") String snapshotId);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeApi.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeApi.java
index 439422c..68000a7 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeApi.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeApi.java
@@ -29,6 +29,7 @@ import javax.ws.rs.core.MediaType;
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.cinder.v1.domain.Volume;
import org.jclouds.openstack.cinder.v1.options.CreateVolumeOptions;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -42,16 +43,16 @@ import org.jclouds.rest.annotations.SkipEncoding;
import com.google.common.collect.FluentIterable;
/**
- * Provides synchronous access to Volumes.
- *
+ * Provides synchronous access to the Volume API.
+ *
* This API strictly handles creating and managing Volumes. To attach a Volume to a Server you need to use the
* @see VolumeAttachmentApi
- *
- * @see VolumeAsyncApi
- * @see <a href="http://api.openstack.org/">API Doc</a>
+ *
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/volumes")
public interface VolumeApi {
/**
* Returns a summary list of Volumes.
@@ -60,9 +61,7 @@ public interface VolumeApi {
*/
@Named("volume:list")
@GET
- @Path("/volumes")
@SelectJson("volumes")
- @Consumes(MediaType.APPLICATION_JSON)
@Fallback(EmptyFluentIterableOnNotFoundOr404.class)
FluentIterable<? extends Volume> list();
@@ -73,10 +72,9 @@ public interface VolumeApi {
*/
@Named("volume:list")
@GET
- @Path("/volumes/detail")
+ @Path("/detail")
@SelectJson("volumes")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+ @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
FluentIterable<? extends Volume> listInDetail();
/**
@@ -87,24 +85,22 @@ public interface VolumeApi {
*/
@Named("volume:get")
@GET
- @Path("/volumes/{id}")
+ @Path("/{id}")
@SelectJson("volume")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(NullOnNotFoundOr404.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
Volume get(@PathParam("id") String volumeId);
/**
* Creates a new Volume
- *
+ *
* @param volumeId Id of the Volume
* @param options See CreateVolumeOptions
* @return The new Volume
*/
@Named("volume:create")
@POST
- @Path("/volumes")
@SelectJson("volume")
- @Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@MapBinder(CreateVolumeOptions.class)
Volume create(@PayloadParam("size") int sizeGB, CreateVolumeOptions... options);
@@ -117,8 +113,7 @@ public interface VolumeApi {
*/
@Named("volume:delete")
@DELETE
- @Path("/volumes/{id}")
- @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/{id}")
@Fallback(FalseOnNotFoundOr404.class)
boolean delete(@PathParam("id") String volumeId);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApi.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApi.java
index 8eb3883..9c5072e 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApi.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApi.java
@@ -25,6 +25,7 @@ import javax.ws.rs.core.MediaType;
import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.openstack.cinder.v1.domain.VolumeType;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.rest.annotations.Fallback;
@@ -35,24 +36,22 @@ import org.jclouds.rest.annotations.SkipEncoding;
import com.google.common.collect.FluentIterable;
/**
- * Provides synchronous access to Volumes via their REST API.
- *
- * @see VolumeAsyncApi
- * @see <a href="http://api.openstack.org/">API Doc</a>
+ * Provides synchronous access to the OpenStack Block Storage (Cinder) v1 Volume Types API.
+ *
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/types")
public interface VolumeTypeApi {
/**
* Returns a summary list of VolumeTypes.
*
* @return The list of VolumeTypes
*/
- @Named("volumetype:list")
+ @Named("volumeType:list")
@GET
- @Path("/types")
@SelectJson("volume_types")
- @Consumes(MediaType.APPLICATION_JSON)
@Fallback(EmptyFluentIterableOnNotFoundOr404.class)
FluentIterable<? extends VolumeType> list();
@@ -62,11 +61,11 @@ public interface VolumeTypeApi {
* @param volumeTypeId Id of the VolumeType
* @return Details of a specific VolumeType
*/
- @Named("volumetype:get")
+ @Named("volumeType:get")
@GET
- @Path("/types/{id}")
+ @Path("/{id}")
@SelectJson("volume_type")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(NullOnNotFoundOr404.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
VolumeType get(@PathParam("id") String volumeTypeId);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/SnapshotPredicates.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/SnapshotPredicates.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/SnapshotPredicates.java
index a79fe79..a441957 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/SnapshotPredicates.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/SnapshotPredicates.java
@@ -37,21 +37,21 @@ import com.google.common.base.Predicate;
* Snapshot snapshot = snapshotApi.create(volumeId);
* RetryablePredicate<String> awaitAvailable = RetryablePredicate.create(
* SnapshotPredicates.available(snapshotApi), 600, 10, 10, TimeUnit.SECONDS);
- *
+ *
* if (!awaitAvailable.apply(snapshot.getId())) {
- * throw new TimeoutException("Timeout on snapshot: " + snapshot);
- * }
+ * throw new TimeoutException("Timeout on snapshot: " + snapshot);
+ * }
* }
* </pre>
- *
+ *
* You can also use the static convenience methods as so.
- *
+ *
* <pre>
* {@code
* Snapshot snapshot = snapshotApi.create(volumeId);
- *
+ *
* if (!SnapshotPredicates.awaitAvailable(snapshotApi).apply(snapshot.getId())) {
- * throw new TimeoutException("Timeout on snapshot: " + snapshot);
+ * throw new TimeoutException("Timeout on snapshot: " + snapshot);
* }
* }
* </pre>
@@ -59,20 +59,20 @@ import com.google.common.base.Predicate;
public class SnapshotPredicates {
/**
* Wait until a Snapshot is Available.
- *
- * @param snapshotApi The SnapshotApi in the zone where your Snapshot resides.
+ *
+ * @param snapshotApi The SnapshotApi in the region where your Snapshot resides.
* @return RetryablePredicate That will check the status every 5 seconds for a maxiumum of 20 minutes.
*/
public static Predicate<Snapshot> awaitAvailable(SnapshotApi snapshotApi) {
StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(snapshotApi, Volume.Status.AVAILABLE);
return retry(statusPredicate, 1200, 5, 5, SECONDS);
}
-
+
/**
* Wait until a Snapshot no longer exists.
- *
- * @param snapshotApi The SnapshotApi in the zone where your Snapshot resides.
- * @return RetryablePredicate That will check the whether the Snapshot exists
+ *
+ * @param snapshotApi The SnapshotApi in the region where your Snapshot resides.
+ * @return RetryablePredicate That will check the whether the Snapshot exists
* every 5 seconds for a maxiumum of 20 minutes.
*/
public static Predicate<Snapshot> awaitDeleted(SnapshotApi snapshotApi) {
@@ -85,7 +85,7 @@ public class SnapshotPredicates {
StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(snapshotApi, status);
return retry(statusPredicate, maxWaitInSec, periodInSec, periodInSec, SECONDS);
}
-
+
private static class StatusUpdatedPredicate implements Predicate<Snapshot> {
private SnapshotApi snapshotApi;
private Status status;
@@ -108,7 +108,7 @@ public class SnapshotPredicates {
else {
Snapshot snapshotUpdated = snapshotApi.get(snapshot.getId());
checkNotNull(snapshotUpdated, "Snapshot %s not found.", snapshot.getId());
-
+
return status.equals(snapshotUpdated.getStatus());
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/VolumePredicates.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/VolumePredicates.java b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/VolumePredicates.java
index cc3f2c2..6e26425 100644
--- a/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/VolumePredicates.java
+++ b/apis/openstack-cinder/src/main/java/org/jclouds/openstack/cinder/v1/predicates/VolumePredicates.java
@@ -34,24 +34,24 @@ import com.google.common.base.Predicate;
* <pre>
* {@code
* Volume volume = volumeApi.create(100);
- *
+ *
* RetryablePredicate<String> awaitAvailable = RetryablePredicate.create(
* VolumePredicates.available(volumeApi), 600, 10, 10, TimeUnit.SECONDS);
- *
+ *
* if (!awaitAvailable.apply(volume.getId())) {
- * throw new TimeoutException("Timeout on volume: " + volume);
- * }
+ * throw new TimeoutException("Timeout on volume: " + volume);
+ * }
* }
* </pre>
- *
+ *
* You can also use the static convenience methods as so.
- *
+ *
* <pre>
* {@code
* Volume volume = volumeApi.create(100);
- *
+ *
* if (!VolumePredicates.awaitAvailable(volumeApi).apply(volume.getId())) {
- * throw new TimeoutException("Timeout on volume: " + volume);
+ * throw new TimeoutException("Timeout on volume: " + volume);
* }
* }
* </pre>
@@ -59,19 +59,19 @@ import com.google.common.base.Predicate;
public class VolumePredicates {
/**
* Wait until a Volume is Available.
- *
- * @param volumeApi The VolumeApi in the zone where your Volume resides.
+ *
+ * @param volumeApi The VolumeApi in the region where your Volume resides.
* @return RetryablePredicate That will check the status every 5 seconds for a maxiumum of 10 minutes.
*/
public static Predicate<Volume> awaitAvailable(VolumeApi volumeApi) {
StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(volumeApi, Volume.Status.AVAILABLE);
return retry(statusPredicate, 600, 5, 5, SECONDS);
}
-
+
/**
* Wait until a Volume is In Use.
- *
- * @param volumeApi The VolumeApi in the zone where your Volume resides.
+ *
+ * @param volumeApi The VolumeApi in the region where your Volume resides.
* @return RetryablePredicate That will check the status every 5 seconds for a maxiumum of 10 minutes.
*/
public static Predicate<Volume> awaitInUse(VolumeApi volumeApi) {
@@ -81,22 +81,22 @@ public class VolumePredicates {
/**
* Wait until a Volume no longer exists.
- *
- * @param volumeApi The VolumeApi in the zone where your Volume resides.
- * @return RetryablePredicate That will check the whether the Volume exists
+ *
+ * @param volumeApi The VolumeApi in the region where your Volume resides.
+ * @return RetryablePredicate That will check the whether the Volume exists
* every 5 seconds for a maxiumum of 10 minutes.
*/
public static Predicate<Volume> awaitDeleted(VolumeApi volumeApi) {
DeletedPredicate deletedPredicate = new DeletedPredicate(volumeApi);
return retry(deletedPredicate, 600, 5, 5, SECONDS);
}
-
+
public static Predicate<Volume> awaitStatus(
VolumeApi volumeApi, Volume.Status status, long maxWaitInSec, long periodInSec) {
StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(volumeApi, status);
return retry(statusPredicate, maxWaitInSec, periodInSec, periodInSec, SECONDS);
}
-
+
private static class StatusUpdatedPredicate implements Predicate<Volume> {
private VolumeApi volumeApi;
private Status status;
@@ -112,14 +112,14 @@ public class VolumePredicates {
@Override
public boolean apply(Volume volume) {
checkNotNull(volume, "volume must be defined");
-
+
if (status.equals(volume.getStatus())) {
return true;
}
else {
Volume volumeUpdated = volumeApi.get(volume.getId());
checkNotNull(volumeUpdated, "Volume %s not found.", volume.getId());
-
+
return status.equals(volumeUpdated.getStatus());
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiExpectTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiExpectTest.java
index 74ac6b9..e5dc3f9 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiExpectTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiExpectTest.java
@@ -16,15 +16,15 @@
*/
package org.jclouds.openstack.cinder.v1.features;
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
import org.jclouds.http.HttpResponse;
import org.jclouds.openstack.cinder.v1.domain.VolumeQuota;
import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiExpectTest;
import org.testng.annotations.Test;
-import java.net.URI;
-
-import static org.testng.Assert.assertEquals;
-
@Test(groups = "unit", testName = "QuotaApiExpectTest")
public class QuotasApiExpectTest extends BaseCinderApiExpectTest {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiLiveTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiLiveTest.java
index 9fea6cb..91ab647 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiLiveTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/QuotasApiLiveTest.java
@@ -16,15 +16,16 @@
*/
package org.jclouds.openstack.cinder.v1.features;
-import com.google.common.collect.Iterables;
+import static org.testng.Assert.assertTrue;
+
+import java.util.concurrent.ExecutionException;
+
import org.jclouds.openstack.cinder.v1.domain.VolumeQuota;
import org.jclouds.openstack.cinder.v1.internal.BaseCinderApiLiveTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import java.util.concurrent.ExecutionException;
-
-import static org.testng.Assert.assertTrue;
+import com.google.common.collect.Iterables;
@Test(groups = "live", testName = "QuotasApiLiveTest", singleThreaded = true)
public class QuotasApiLiveTest extends BaseCinderApiLiveTest {
@@ -39,8 +40,8 @@ public class QuotasApiLiveTest extends BaseCinderApiLiveTest {
@BeforeClass(groups = {"integration", "live"})
public void setupContext() {
super.setup();
- String zone = Iterables.getFirst(api.getConfiguredZones(), "nova");
- quotaApi = api.getQuotaApi(zone);
+ String region = Iterables.getFirst(api.getConfiguredRegions(), "nova");
+ quotaApi = api.getQuotaApi(region);
}
public void testGetStorageQuotas() throws ExecutionException, InterruptedException {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/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 9ab2e33..cda5ce8 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
@@ -56,7 +56,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/snapshot_list_simple.json")).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
Set<? extends Snapshot> snapshots = api.list().toSet();
assertEquals(snapshots, ImmutableSet.of(testSnapshot()));
@@ -69,7 +69,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
Set<? extends Snapshot> snapshots = api.list().toSet();
assertTrue(snapshots.isEmpty());
@@ -82,7 +82,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/snapshot_list_details.json")).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
Set<? extends Snapshot> snapshots = api.listInDetail().toSet();
assertEquals(snapshots, ImmutableSet.of(testSnapshot()));
@@ -104,7 +104,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
Set<? extends Snapshot> snapshots = api.listInDetail().toSet();
assertTrue(snapshots.isEmpty());
@@ -117,7 +117,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/snapshot_get.json")).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
Snapshot snapshot = api.get("67d03df1-ce5d-4ba7-adbe-492ceb80170b");
assertEquals(snapshot, testSnapshot());
@@ -130,7 +130,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
assertNull(api.get("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
}
@@ -145,7 +145,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
.payload(payloadFromResourceWithContentType("/snapshot_create.json", MediaType.APPLICATION_JSON))
.build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/snapshot_create_response.json")).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
CreateSnapshotOptions options = CreateSnapshotOptions.Builder
.name("jclouds-test-snapshot")
@@ -167,7 +167,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
.payload(payloadFromResourceWithContentType("/snapshot_create.json", MediaType.APPLICATION_JSON))
.build(),
HttpResponse.builder().statusCode(404).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
CreateSnapshotOptions options = CreateSnapshotOptions.Builder
.name("jclouds-test-snapshot")
@@ -193,7 +193,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
.wrap("{\"badRequest\": {\"message\": \"Invalid volume: must be available\", \"code\": 400}}"
.getBytes())))
.build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
CreateSnapshotOptions options = CreateSnapshotOptions.Builder
.name("jclouds-test-snapshot")
@@ -214,7 +214,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
.payload(payloadFromResourceWithContentType("/snapshot_create.json", MediaType.APPLICATION_JSON))
.build(),
HttpResponse.builder().statusCode(401).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
CreateSnapshotOptions options = CreateSnapshotOptions.Builder
.name("jclouds-test-snapshot")
@@ -231,7 +231,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).method("DELETE").build(),
HttpResponse.builder().statusCode(200).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
assertTrue(api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
}
@@ -244,7 +244,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).method("DELETE").build(),
HttpResponse.builder().statusCode(401).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b");
}
@@ -256,7 +256,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).method("DELETE").build(),
HttpResponse.builder().statusCode(404).build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
assertFalse(api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b"));
}
@@ -274,7 +274,7 @@ public class SnapshotApiExpectTest extends BaseCinderApiExpectTest {
.wrap("{\"badRequest\": {\"message\": \"Invalid volume: Volume Snapshot status must be available or error\", \"code\": 400}}"
.getBytes())))
.build()
- ).getSnapshotApiForZone("RegionOne");
+ ).getSnapshotApi("RegionOne");
api.delete("67d03df1-ce5d-4ba7-adbe-492ceb80170b");
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeAndSnapshotApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeAndSnapshotApiLiveTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeAndSnapshotApiLiveTest.java
index 050253b..8e2dbe0 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeAndSnapshotApiLiveTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeAndSnapshotApiLiveTest.java
@@ -42,12 +42,12 @@ import com.google.common.collect.Iterables;
@Test(groups = "live", testName = "VolumeApiLiveTest", singleThreaded = true)
public class VolumeAndSnapshotApiLiveTest extends BaseCinderApiLiveTest {
private static final String name = System.getProperty("user.name").replace('.', '-').toLowerCase();
-
- private String zone;
+
+ private String region;
private VolumeApi volumeApi;
private SnapshotApi snapshotApi;
-
+
private Volume testVolume;
private Snapshot testSnapshot;
@@ -55,9 +55,9 @@ public class VolumeAndSnapshotApiLiveTest extends BaseCinderApiLiveTest {
@Override
public void setup() {
super.setup();
- zone = Iterables.getLast(api.getConfiguredZones(), "nova");
- volumeApi = api.getVolumeApiForZone(zone);
- snapshotApi = api.getSnapshotApiForZone(zone);
+ region = Iterables.getLast(api.getConfiguredRegions(), "nova");
+ volumeApi = api.getVolumeApi(region);
+ snapshotApi = api.getSnapshotApi(region);
}
@AfterClass(groups = { "integration", "live" })
@@ -81,7 +81,7 @@ public class VolumeAndSnapshotApiLiveTest extends BaseCinderApiLiveTest {
.name(name)
.description("description of test volume");
testVolume = volumeApi.create(100, options);
-
+
assertTrue(VolumePredicates.awaitAvailable(volumeApi).apply(testVolume));
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/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 336d09b..0372dd5 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
@@ -53,7 +53,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_list_simple.json")).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
Set<? extends Volume> volumes = api.list().toSet();
assertEquals(volumes, ImmutableSet.of(testVolume()));
@@ -66,7 +66,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
Set<? extends Volume> volumes = api.list().toSet();
assertTrue(volumes.isEmpty());
@@ -79,7 +79,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_list_details.json")).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
Set<? extends Volume> volumes = api.listInDetail().toSet();
assertEquals(volumes, ImmutableSet.of(testVolume()));
@@ -92,7 +92,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
Set<? extends Volume> volumes = api.listInDetail().toSet();
assertTrue(volumes.isEmpty());
@@ -108,7 +108,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
.payload(payloadFromResourceWithContentType("/volume_create.json", MediaType.APPLICATION_JSON))
.build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_create_response.json")).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
CreateVolumeOptions options = CreateVolumeOptions.Builder
.name("jclouds-test-volume")
@@ -129,7 +129,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
.payload(payloadFromResourceWithContentType("/volume_create.json", MediaType.APPLICATION_JSON))
.build(),
HttpResponse.builder().statusCode(404).payload(payloadFromResource("/volume_create_response.json")).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
CreateVolumeOptions options = CreateVolumeOptions.Builder
.name("jclouds-test-volume")
@@ -144,7 +144,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_get.json")).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
Volume volume = api.get("60761c60-0f56-4499-b522-ff13e120af10");
assertEquals(volume, testVolume());
@@ -163,7 +163,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
assertNull(api.get("60761c60-0f56-4499-b522-ff13e120af10"));
}
@@ -175,7 +175,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).method("DELETE").build(),
HttpResponse.builder().statusCode(202).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
assertTrue(api.delete("60761c60-0f56-4499-b522-ff13e120af10"));
}
@@ -187,7 +187,7 @@ public class VolumeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).method("DELETE").build(),
HttpResponse.builder().statusCode(404).build()
- ).getVolumeApiForZone("RegionOne");
+ ).getVolumeApi("RegionOne");
assertFalse(api.delete("60761c60-0f56-4499-b522-ff13e120af10"));
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/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 29c4713..d8c8b92 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
@@ -46,7 +46,7 @@ public class VolumeTypeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_type_list_simple.json")).build()
- ).getVolumeTypeApiForZone("RegionOne");
+ ).getVolumeTypeApi("RegionOne");
Set<? extends VolumeType> types = api.list().toSet();
assertEquals(types, ImmutableSet.of(testVolumeType()));
@@ -59,7 +59,7 @@ public class VolumeTypeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/volume_type_get.json")).build()
- ).getVolumeTypeApiForZone("RegionOne");
+ ).getVolumeTypeApi("RegionOne");
VolumeType type = api.get("1");
assertEquals(type, testVolumeType());
@@ -72,7 +72,7 @@ public class VolumeTypeApiExpectTest extends BaseCinderApiExpectTest {
responseWithKeystoneAccess,
authenticatedGET().endpoint(endpoint).build(),
HttpResponse.builder().statusCode(404).build()
- ).getVolumeTypeApiForZone("RegionOne");
+ ).getVolumeTypeApi("RegionOne");
assertNull(api.get("X"));
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiLiveTest.java b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiLiveTest.java
index 6eb1e48..bbb18fc 100644
--- a/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiLiveTest.java
+++ b/apis/openstack-cinder/src/test/java/org/jclouds/openstack/cinder/v1/features/VolumeTypeApiLiveTest.java
@@ -34,14 +34,14 @@ import com.google.common.collect.Iterables;
@Test(groups = "live", testName = "VolumeTypeApiLiveTest", singleThreaded = true)
public class VolumeTypeApiLiveTest extends BaseCinderApiLiveTest {
private VolumeTypeApi volumeTypeApi;
- private String zone;
+ private String region;
@BeforeGroups(groups = {"integration", "live"})
@Override
public void setup() {
super.setup();
- zone = Iterables.getLast(api.getConfiguredZones(), "nova");
- volumeTypeApi = api.getVolumeTypeApiForZone(zone);
+ region = Iterables.getLast(api.getConfiguredRegions(), "nova");
+ volumeTypeApi = api.getVolumeTypeApi(region);
}
@AfterClass(groups = { "integration", "live" })
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneAuthenticationModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneAuthenticationModule.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneAuthenticationModule.java
index 70479c7..eaff908 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneAuthenticationModule.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneAuthenticationModule.java
@@ -80,7 +80,7 @@ public class KeystoneAuthenticationModule extends AbstractModule {
* <li>add the above annotation to any {@link AsyncApi} classes by placing it on the type. ex.
* {@code @Endpoint(CloudDNS.class)}</li>
* <li>add the following to your {@link org.jclouds.rest.config.RestClientModule}</li>
- *
+ *
* <pre>
* bind(new TypeLiteral<Supplier<URI>>() {
* }).annotatedWith(CloudDNS.class).to(new TypeLiteral<Supplier<URI>>() {
@@ -148,6 +148,11 @@ public class KeystoneAuthenticationModule extends AbstractModule {
}
+ /**
+ * @deprecated All OpenStack APIs rely on regions in jclouds 2.0 and this module will be removed
+ * in jclouds 3.0.
+ */
+ @Deprecated
public static class ZoneModule extends AbstractModule {
@Override
protected void configure() {
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneHttpApiModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneHttpApiModule.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneHttpApiModule.java
index 62fde44..691d044 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneHttpApiModule.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneHttpApiModule.java
@@ -106,7 +106,7 @@ public class KeystoneHttpApiModule extends HttpApiModule<KeystoneApi> {
@Provides
@Singleton
- public LoadingCache<String, Set<? extends Extension>> provideExtensionsByZone(final javax.inject.Provider<KeystoneApi> keystoneApi) {
+ public LoadingCache<String, Set<? extends Extension>> provideExtensionsByRegion(final javax.inject.Provider<KeystoneApi> keystoneApi) {
return CacheBuilder.newBuilder().expireAfterWrite(23, TimeUnit.HOURS)
.build(CacheLoader.from(Suppliers.memoize(new Supplier<Set<? extends Extension>>() {
@Override
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneRestClientModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneRestClientModule.java b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneRestClientModule.java
index fe85de2..4824edf 100644
--- a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneRestClientModule.java
+++ b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v2_0/config/KeystoneRestClientModule.java
@@ -148,7 +148,7 @@ public class KeystoneRestClientModule<S extends KeystoneApi, A extends KeystoneA
@Provides
@Singleton
- public LoadingCache<String, Set<? extends Extension>> provideExtensionsByZone(final javax.inject.Provider<KeystoneApi> keystoneApi) {
+ public LoadingCache<String, Set<? extends Extension>> provideExtensionsByRegion(final javax.inject.Provider<KeystoneApi> keystoneApi) {
return CacheBuilder.newBuilder().expireAfterWrite(23, TimeUnit.HOURS)
.build(CacheLoader.from(Suppliers.memoize(new Supplier<Set<? extends Extension>>() {
@Override
http://git-wip-us.apache.org/repos/asf/jclouds/blob/744cd5d7/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/functions/PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSetTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/functions/PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSetTest.java b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/functions/PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSetTest.java
index 08160bb..624a0bd 100644
--- a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/functions/PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSetTest.java
+++ b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/v2_0/functions/PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSetTest.java
@@ -54,7 +54,7 @@ public class PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensio
"Keypair Support").build();
@org.jclouds.openstack.v2_0.services.Extension(of = ServiceType.COMPUTE, namespace = "http://docs.openstack.org/ext/keypairs/api/v1.1")
- interface KeyPairAsyncApi {
+ interface KeyPairApi {
}
@@ -64,50 +64,50 @@ public class PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensio
"Floating IPs support").build();
@org.jclouds.openstack.v2_0.services.Extension(of = ServiceType.COMPUTE, namespace = "http://docs.openstack.org/ext/floating_ips/api/v1.1")
- interface FloatingIPAsyncApi {
+ interface FloatingIPApi {
}
- interface NovaAsyncApi {
+ interface NovaApi {
@Delegate
- Optional<FloatingIPAsyncApi> getFloatingIPExtensionForZone(String zone);
+ Optional<FloatingIPApi> getFloatingIPExtensionApi(String region);
@Delegate
- Optional<KeyPairAsyncApi> getKeyPairExtensionForZone(String zone);
+ Optional<KeyPairApi> getKeyPairExtensionApi(String region);
}
InvocationSuccess getFloatingIPExtension(List<Object> args) throws SecurityException, NoSuchMethodException {
return InvocationSuccess.create(
- Invocation.create(method(NovaAsyncApi.class, "getFloatingIPExtensionForZone", String.class), args), "foo");
+ Invocation.create(method(NovaApi.class, "getFloatingIPExtensionApi", String.class), args), "foo");
}
InvocationSuccess getKeyPairExtension(List<Object> args) throws SecurityException, NoSuchMethodException {
return InvocationSuccess.create(
- Invocation.create(method(NovaAsyncApi.class, "getKeyPairExtensionForZone", String.class), args), "foo");
+ Invocation.create(method(NovaApi.class, "getKeyPairExtensionApi", String.class), args), "foo");
}
public void testPresentWhenExtensionsIncludeNamespaceFromAnnotationAbsentWhenNot() throws SecurityException, NoSuchMethodException {
- assertEquals(whenExtensionsInZoneInclude("zone", keypairs, floatingIps).apply(getFloatingIPExtension(ImmutableList.<Object> of("zone"))), Optional.of("foo"));
- assertEquals(whenExtensionsInZoneInclude("zone", keypairs, floatingIps).apply(getKeyPairExtension(ImmutableList.<Object> of("zone"))), Optional.of("foo"));
- assertEquals(whenExtensionsInZoneInclude("zone", keypairs).apply(getFloatingIPExtension(ImmutableList.<Object> of("zone"))), Optional.absent());
- assertEquals(whenExtensionsInZoneInclude("zone", floatingIps).apply(getKeyPairExtension(ImmutableList.<Object> of("zone"))), Optional.absent());
+ assertEquals(whenExtensionsInRegionInclude("region", keypairs, floatingIps).apply(getFloatingIPExtension(ImmutableList.<Object> of("region"))), Optional.of("foo"));
+ assertEquals(whenExtensionsInRegionInclude("region", keypairs, floatingIps).apply(getKeyPairExtension(ImmutableList.<Object> of("region"))), Optional.of("foo"));
+ assertEquals(whenExtensionsInRegionInclude("region", keypairs).apply(getFloatingIPExtension(ImmutableList.<Object> of("region"))), Optional.absent());
+ assertEquals(whenExtensionsInRegionInclude("region", floatingIps).apply(getKeyPairExtension(ImmutableList.<Object> of("region"))), Optional.absent());
}
-
- public void testZoneWithoutExtensionsReturnsAbsent() throws SecurityException, NoSuchMethodException {
- assertEquals(whenExtensionsInZoneInclude("zone", floatingIps).apply(
- getFloatingIPExtension(ImmutableList.<Object> of("differentzone"))), Optional.absent());
- assertEquals(whenExtensionsInZoneInclude("zone", keypairs).apply(
- getKeyPairExtension(ImmutableList.<Object> of("differentzone"))), Optional.absent());
+
+ public void testRegionWithoutExtensionsReturnsAbsent() throws SecurityException, NoSuchMethodException {
+ assertEquals(whenExtensionsInRegionInclude("region", floatingIps).apply(
+ getFloatingIPExtension(ImmutableList.<Object> of("differentregion"))), Optional.absent());
+ assertEquals(whenExtensionsInRegionInclude("region", keypairs).apply(
+ getKeyPairExtension(ImmutableList.<Object> of("differentregion"))), Optional.absent());
}
/**
* It is possible that the /extensions call returned the correct extension, but that the
* namespaces were different, for whatever reason. One way to address this is to have a multimap
* of the authoritative namespace to alternate onces, which could be wired up with guice
- *
+ *
*/
public void testPresentWhenAliasForExtensionMapsToNamespace() throws SecurityException, NoSuchMethodException {
Extension keypairsWithDifferentNamespace = keypairs.toBuilder().namespace(
@@ -116,22 +116,22 @@ public class PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensio
Multimap<URI, URI> aliases = ImmutableMultimap.of(keypairs.getNamespace(), keypairsWithDifferentNamespace
.getNamespace());
- assertEquals(whenExtensionsAndAliasesInZoneInclude("zone", ImmutableSet.of(keypairsWithDifferentNamespace), aliases).apply(
- getKeyPairExtension(ImmutableList.<Object> of("zone"))), Optional.of("foo"));
- assertEquals(whenExtensionsAndAliasesInZoneInclude("zone", ImmutableSet.of(keypairsWithDifferentNamespace), aliases).apply(
- getFloatingIPExtension(ImmutableList.<Object> of("zone"))), Optional.absent());
+ assertEquals(whenExtensionsAndAliasesInRegionInclude("region", ImmutableSet.of(keypairsWithDifferentNamespace), aliases).apply(
+ getKeyPairExtension(ImmutableList.<Object> of("region"))), Optional.of("foo"));
+ assertEquals(whenExtensionsAndAliasesInRegionInclude("region", ImmutableSet.of(keypairsWithDifferentNamespace), aliases).apply(
+ getFloatingIPExtension(ImmutableList.<Object> of("region"))), Optional.absent());
}
- private PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet whenExtensionsInZoneInclude(
- String zone, Extension... extensions) {
- return whenExtensionsAndAliasesInZoneInclude(zone, ImmutableSet.copyOf(extensions), ImmutableMultimap.<URI, URI> of());
+ private PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet whenExtensionsInRegionInclude(
+ String region, Extension... extensions) {
+ return whenExtensionsAndAliasesInRegionInclude(region, ImmutableSet.copyOf(extensions), ImmutableMultimap.<URI, URI> of());
}
- private PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet whenExtensionsAndAliasesInZoneInclude(
- String zone, final Set<Extension> extensions, final Multimap<URI, URI> aliases) {
- final LoadingCache<String, Set<? extends Extension>> extensionsForZone = CacheBuilder.newBuilder().build(
- CacheLoader.from(Functions.forMap(ImmutableMap.<String, Set<? extends Extension>>of(zone, extensions, "differentzone",
+ private PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet whenExtensionsAndAliasesInRegionInclude(
+ String region, final Set<Extension> extensions, final Multimap<URI, URI> aliases) {
+ final LoadingCache<String, Set<? extends Extension>> extensionsForRegion = CacheBuilder.newBuilder().build(
+ CacheLoader.from(Functions.forMap(ImmutableMap.<String, Set<? extends Extension>>of(region, extensions, "differentregion",
ImmutableSet.<Extension> of()))));
PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet fn = Guice.createInjector(
@@ -142,7 +142,7 @@ public class PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensio
@Provides
LoadingCache<String, Set<? extends Extension>> getExtensions() {
- return extensionsForZone;
+ return extensionsForRegion;
}
@Provides
@@ -150,7 +150,7 @@ public class PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensio
return aliases;
}
}).getInstance(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
-
+
return fn;
}
}