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 19:04:08 UTC
[4/4] git commit: Prefer Regions to Zones
Prefer Regions to Zones
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/commit/1c3ea466
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/1c3ea466
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/1c3ea466
Branch: refs/heads/master
Commit: 1c3ea466d30fa752d7a4e2ee278b6480376fdf35
Parents: 0dacbce
Author: Jeremy Daggett <je...@rackspace.com>
Authored: Fri Jul 25 09:23:35 2014 -0700
Committer: Jeremy Daggett <je...@rackspace.com>
Committed: Wed Aug 13 10:02:44 2014 -0700
----------------------------------------------------------------------
.../RegionToEndpointNegotiateVersion.java | 141 +++++++++++++++++++
.../ZoneToEndpointNegotiateVersion.java | 141 -------------------
.../openstack/glance/v1_0/GlanceApi.java | 14 +-
.../glance/v1_0/GlanceApiMetadata.java | 8 +-
.../functions/internal/ParseImageDetails.java | 10 +-
.../v1_0/functions/internal/ParseImages.java | 8 +-
.../v1_0/handlers/GlanceErrorHandler.java | 4 +-
.../GlanceVersionNegotiationExpectTest.java | 6 +-
.../v1_0/features/ImageApiExpectTest.java | 68 ++++-----
.../glance/v1_0/features/ImageApiLiveTest.java | 24 ++--
.../v1_0/internal/BaseGlanceExpectTest.java | 4 +-
.../openstack/marconi/v1/MarconiApi.java | 96 +++++++++++--
.../marconi/v1/MarconiApiMetadata.java | 20 +--
.../openstack/marconi/v1/features/ClaimApi.java | 57 ++++----
.../marconi/v1/features/MessageApi.java | 50 +++----
.../openstack/marconi/v1/features/QueueApi.java | 50 +++----
.../v1/functions/QueuesToPagedIterable.java | 4 +-
.../marconi/v1/features/ClaimApiLiveTest.java | 38 ++---
.../marconi/v1/features/ClaimApiMockTest.java | 8 +-
.../marconi/v1/features/MessageApiLiveTest.java | 56 ++++----
.../marconi/v1/features/MessageApiMockTest.java | 18 +--
.../marconi/v1/features/QueueApiLiveTest.java | 58 ++++----
.../marconi/v1/features/QueueApiMockTest.java | 28 ++--
.../v1/internal/BaseMarconiApiLiveTest.java | 10 +-
.../openstack/neutron/v2/NeutronApi.java | 13 ++
.../neutron/v2/extensions/RouterApi.java | 41 +++---
.../openstack/neutron/v2_0/NeutronApi.java | 68 ++++++++-
.../neutron/v2_0/NeutronApiMetadata.java | 15 +-
.../v2_0/config/NeutronHttpApiModule.java | 30 ++--
.../neutron/v2_0/extensions/RouterApi.java | 28 ++--
.../v2_0/functions/ParseNetworkDetails.java | 3 +
.../neutron/v2_0/functions/ParseNetworks.java | 3 +
.../v2_0/functions/ParsePortDetails.java | 3 +
.../neutron/v2_0/functions/ParsePorts.java | 3 +
.../v2_0/functions/ParseRouterDetails.java | 3 +
.../neutron/v2_0/functions/ParseRouters.java | 3 +
.../v2_0/functions/ParseSubnetDetails.java | 3 +
.../neutron/v2_0/functions/ParseSubnets.java | 3 +
.../v2_0/extensions/RouterApiExpectTest.java | 2 +
.../v2_0/extensions/RouterApiLiveTest.java | 2 +
.../v2_0/features/NetworkApiExpectTest.java | 2 +
.../v2_0/features/NetworkApiLiveTest.java | 2 +
.../v2_0/features/PortApiExpectTest.java | 2 +
.../neutron/v2_0/features/PortApiLiveTest.java | 2 +
.../v2_0/features/SubnetApiExpectTest.java | 2 +
.../v2_0/features/SubnetApiLiveTest.java | 2 +
.../jclouds/openstack/swift/v1/SwiftApi.java | 51 +++----
.../swift/v1/TemporaryUrlSignerMockTest.java | 4 +-
.../swift/v1/features/AccountApiLiveTest.java | 12 +-
.../swift/v1/internal/BaseSwiftApiLiveTest.java | 8 +-
.../uk/AutoscaleUKProviderMetadata.java | 14 +-
.../AutoscaleUKProviderMetadataExpectTest.java | 6 +-
.../us/AutoscaleUSProviderMetadata.java | 22 +--
.../us/v1/AutoscaleUSProviderMetadata.java | 20 +--
.../AutoscaleUSProviderMetadataExpectTest.java | 5 +-
.../rackspace/autoscale/v1/AutoscaleApi.java | 64 ++++++---
.../autoscale/v1/AutoscaleApiMetadata.java | 10 +-
.../v1/domain/CreateScalingPolicy.java | 34 +++--
.../autoscale/v1/domain/GroupConfiguration.java | 1 +
.../autoscale/v1/domain/GroupState.java | 1 +
.../v1/domain/LaunchConfiguration.java | 1 +
.../autoscale/v1/features/GroupApi.java | 67 +++++----
.../autoscale/v1/features/PolicyApi.java | 30 ++--
.../autoscale/v1/features/WebhookApi.java | 48 ++++---
.../autoscale/v1/features/GroupApiLiveTest.java | 70 ++++-----
.../autoscale/v1/features/GroupApiMockTest.java | 44 +++---
.../v1/features/ScalingPolicyApiLiveTest.java | 56 ++++----
.../v1/features/ScalingPolicyApiMockTest.java | 28 ++--
.../v1/features/WebhookApiLiveTest.java | 76 +++++-----
.../v1/features/WebhookApiMockTest.java | 20 +--
rackspace-cloudbigdata-us/README.md | 2 +-
.../us/v1/CloudBigDataUSProviderMetadata.java | 20 +--
.../cloudbigdata/v1/CloudBigDataApi.java | 53 +++++--
.../v1/CloudBigDataApiMetadata.java | 12 +-
.../cloudbigdata/v1/features/ClusterApi.java | 45 +++---
.../cloudbigdata/v1/features/ProfileApi.java | 19 +--
.../v1/predicates/ClusterPredicates.java | 36 ++---
.../v1/features/ClusterApiLiveTest.java | 38 ++---
.../v1/features/ClusterApiMockTest.java | 20 +--
.../v1/features/ProfileApiLiveTest.java | 16 +--
.../v1/features/ProfileApiMockTest.java | 28 ++--
.../rackspace/cloudfiles/v1/CloudFilesApi.java | 14 +-
.../features/CloudFilesAccountApiLiveTest.java | 4 +-
.../v1/features/CloudFilesCDNApiLiveTest.java | 74 +++++-----
.../v1/features/CloudFilesCDNApiMockTest.java | 44 +++---
.../uk/CloudQueuesUKProviderMetadata.java | 31 ++--
.../us/CloudQueuesUSProviderMetadata.java | 39 ++---
87 files changed, 1289 insertions(+), 1054 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
new file mode 100644
index 0000000..f45a57d
--- /dev/null
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jclouds.openstack.glance.functions;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.regex.Pattern;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.jclouds.http.HttpRequest;
+import org.jclouds.json.Json;
+import org.jclouds.location.Region;
+import org.jclouds.rest.HttpClient;
+import org.jclouds.rest.annotations.ApiVersion;
+import org.jclouds.util.Strings2;
+
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.base.Supplier;
+import com.google.common.base.Throwables;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.Iterables;
+
+@Singleton
+public class RegionToEndpointNegotiateVersion implements Function<Object, URI> {
+
+ public static final String VERSION_NEGOTIATION_HEADER = "Is-Version-Negotiation-Request";
+
+ private static final Pattern versionRegex = Pattern.compile("v[0-9]+(\\.[0-9])?[0-9]*");
+
+ private static class VersionsJsonResponse{
+ public static class Version {
+ public static class Link {
+ public String href;
+ public String rel;
+ }
+ public String status;
+ public String id;
+ public List<Link> links;
+ }
+ public List<Version> versions;
+ }
+
+ private final Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier;
+ private final String apiVersion;
+ private final LoadingCache<URI, URI> endpointCache;
+
+ @Inject
+ public RegionToEndpointNegotiateVersion(@Region Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier,
+ @ApiVersion String rawApiVersionString, final HttpClient client, final Json json) {
+ this.regionToEndpointSupplier = checkNotNull(regionToEndpointSupplier, "regionToEndpointSupplier");
+ if (!rawApiVersionString.startsWith("v")) {
+ this.apiVersion = "v" + rawApiVersionString;
+ } else {
+ this.apiVersion = rawApiVersionString;
+ }
+ this.endpointCache = CacheBuilder.newBuilder()
+ .build(
+ new CacheLoader<URI, URI>() {
+ public URI load(URI baseEndpointUri) {
+ try {
+ List<String> baseEndpointPathParts = Splitter.on('/').omitEmptyStrings().splitToList(baseEndpointUri.getPath());
+ if (!baseEndpointPathParts.isEmpty()
+ && versionRegex.matcher(baseEndpointPathParts.get(baseEndpointPathParts.size() - 1)).matches()) {
+ // Constructs a base URI Glance endpoint by stripping the version from the received URI
+ baseEndpointUri = new URI(baseEndpointUri.getScheme(), baseEndpointUri.getUserInfo(),
+ baseEndpointUri.getHost(), baseEndpointUri.getPort(),
+ Joiner.on('/').join(baseEndpointPathParts.subList(0, baseEndpointPathParts.size() - 1)) + "/",
+ baseEndpointUri.getQuery(), baseEndpointUri.getFragment());
+ }
+
+ HttpRequest negotiationRequest = HttpRequest.builder()
+ .method("GET").endpoint(baseEndpointUri)
+ .addHeader(VERSION_NEGOTIATION_HEADER, "true").build();
+ InputStream response = client.invoke(negotiationRequest).getPayload().openStream();
+ VersionsJsonResponse versions = json.fromJson(Strings2.toStringAndClose(response), VersionsJsonResponse.class);
+ for (VersionsJsonResponse.Version version : versions.versions) {
+ if (apiVersion.equals(version.id)) {
+ // We only expect one element here, we'll get an exception here if that changes
+ URI versionedEndpointUri = new URI(Iterables.getOnlyElement(version.links).href);
+ return new URI(baseEndpointUri.getScheme(), versionedEndpointUri.getUserInfo(),
+ versionedEndpointUri.getHost(), versionedEndpointUri.getPort(),
+ versionedEndpointUri.getPath(), versionedEndpointUri.getQuery(),
+ versionedEndpointUri.getFragment());
+ }
+ }
+ } catch (URISyntaxException ex) {
+ throw Throwables.propagate(ex);
+ } catch (IOException ex) {
+ throw Throwables.propagate(ex);
+ }
+ throw new UnsupportedOperationException("Glance endpoint does not support API version: " + apiVersion);
+ }
+ });
+ }
+
+ @Override
+ public URI apply(Object from) {
+ checkArgument(from instanceof String, "you must specify a region, as a String argument");
+ Map<String, Supplier<URI>> regionToEndpoint = regionToEndpointSupplier.get();
+ checkState(!regionToEndpoint.isEmpty(), "no region name to endpoint mappings configured!");
+ checkArgument(regionToEndpoint.containsKey(from),
+ "requested location %s, which is not in the configured locations: %s", from, regionToEndpoint);
+ URI uri = regionToEndpointSupplier.get().get(from).get();
+
+ try {
+ return endpointCache.get(uri);
+ } catch (ExecutionException ex) {
+ throw Throwables.propagate(ex);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java
deleted file mode 100644
index 7f5779d..0000000
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jclouds.openstack.glance.functions;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.regex.Pattern;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.json.Json;
-import org.jclouds.location.Zone;
-import org.jclouds.rest.annotations.ApiVersion;
-import org.jclouds.rest.HttpClient;
-import org.jclouds.util.Strings2;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.google.common.base.Supplier;
-import com.google.common.base.Throwables;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.Iterables;
-
-@Singleton
-public class ZoneToEndpointNegotiateVersion implements Function<Object, URI> {
-
- public static final String VERSION_NEGOTIATION_HEADER = "Is-Version-Negotiation-Request";
-
- private static final Pattern versionRegex = Pattern.compile("v[0-9]+(\\.[0-9])?[0-9]*");
-
- private static class VersionsJsonResponse{
- public static class Version {
- public static class Link {
- public String href;
- public String rel;
- }
- public String status;
- public String id;
- public List<Link> links;
- }
- public List<Version> versions;
- }
-
- private final Supplier<Map<String, Supplier<URI>>> zoneToEndpointSupplier;
- private final String apiVersion;
- private final LoadingCache<URI, URI> endpointCache;
-
- @Inject
- public ZoneToEndpointNegotiateVersion(@Zone Supplier<Map<String, Supplier<URI>>> zoneToEndpointSupplier,
- @ApiVersion String rawApiVersionString, final HttpClient client, final Json json) {
- this.zoneToEndpointSupplier = checkNotNull(zoneToEndpointSupplier, "zoneToEndpointSupplier");
- if (!rawApiVersionString.startsWith("v")) {
- this.apiVersion = "v" + rawApiVersionString;
- } else {
- this.apiVersion = rawApiVersionString;
- }
- this.endpointCache = CacheBuilder.newBuilder()
- .build(
- new CacheLoader<URI, URI>() {
- public URI load(URI baseEndpointUri) {
- try {
- List<String> baseEndpointPathParts = Splitter.on('/').omitEmptyStrings().splitToList(baseEndpointUri.getPath());
- if (!baseEndpointPathParts.isEmpty()
- && versionRegex.matcher(baseEndpointPathParts.get(baseEndpointPathParts.size() - 1)).matches()) {
- // Constructs a base URI Glance endpoint by stripping the version from the received URI
- baseEndpointUri = new URI(baseEndpointUri.getScheme(), baseEndpointUri.getUserInfo(),
- baseEndpointUri.getHost(), baseEndpointUri.getPort(),
- Joiner.on('/').join(baseEndpointPathParts.subList(0, baseEndpointPathParts.size() - 1)) + "/",
- baseEndpointUri.getQuery(), baseEndpointUri.getFragment());
- }
-
- HttpRequest negotiationRequest = HttpRequest.builder()
- .method("GET").endpoint(baseEndpointUri)
- .addHeader(VERSION_NEGOTIATION_HEADER, "true").build();
- InputStream response = client.invoke(negotiationRequest).getPayload().openStream();
- VersionsJsonResponse versions = json.fromJson(Strings2.toStringAndClose(response), VersionsJsonResponse.class);
- for (VersionsJsonResponse.Version version : versions.versions) {
- if (apiVersion.equals(version.id)) {
- // We only expect one element here, we'll get an exception here if that changes
- URI versionedEndpointUri = new URI(Iterables.getOnlyElement(version.links).href);
- return new URI(baseEndpointUri.getScheme(), versionedEndpointUri.getUserInfo(),
- versionedEndpointUri.getHost(), versionedEndpointUri.getPort(),
- versionedEndpointUri.getPath(), versionedEndpointUri.getQuery(),
- versionedEndpointUri.getFragment());
- }
- }
- } catch (URISyntaxException ex) {
- throw Throwables.propagate(ex);
- } catch (IOException ex) {
- throw Throwables.propagate(ex);
- }
- throw new UnsupportedOperationException("Glance endpoint does not support API version: " + apiVersion);
- }
- });
- }
-
- @Override
- public URI apply(Object from) {
- checkArgument(from instanceof String, "you must specify a zone, as a String argument");
- Map<String, Supplier<URI>> zoneToEndpoint = zoneToEndpointSupplier.get();
- checkState(!zoneToEndpoint.isEmpty(), "no zone name to endpoint mappings configured!");
- checkArgument(zoneToEndpoint.containsKey(from),
- "requested location %s, which is not in the configured locations: %s", from, zoneToEndpoint);
- URI uri = zoneToEndpointSupplier.get().get(from).get();
-
- try {
- return endpointCache.get(uri);
- } catch (ExecutionException ex) {
- throw Throwables.propagate(ex);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
index c2d43e0..db88dcc 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
@@ -20,8 +20,8 @@ import java.io.Closeable;
import java.util.Set;
import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.location.Region;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
import org.jclouds.openstack.glance.v1_0.features.ImageApi;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.rest.annotations.EndpointParam;
@@ -35,18 +35,18 @@ import com.google.inject.Provides;
*/
public interface GlanceApi extends Closeable {
/**
- * Gets the configured zones.
+ * Gets the configured regions.
*
- * @return the zone codes currently configured
+ * @return the region codes currently configured
*/
@Provides
- @Zone
- Set<String> getConfiguredZones();
+ @Region
+ Set<String> getConfiguredRegions();
/**
* Provides access to Image features.
*/
@Delegate
- ImageApi getImageApiForZone(@EndpointParam(parser = ZoneToEndpointNegotiateVersion.class) @Nullable String zone);
+ ImageApi getImageApi(@EndpointParam(parser = RegionToEndpointNegotiateVersion.class) @Nullable String region);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
index cf546fa..fbf0f7d 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
@@ -26,7 +26,7 @@ import org.jclouds.openstack.glance.v1_0.config.GlanceHttpApiModule;
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;
@@ -34,7 +34,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
/**
- * Implementation of {@link ApiMetadata} for Glance 1.0 API
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for Glance 1.0 API
*/
public class GlanceApiMetadata extends BaseHttpApiMetadata<GlanceApi> {
@@ -73,10 +73,10 @@ public class GlanceApiMetadata extends BaseHttpApiMetadata<GlanceApi> {
.defaultModules(ImmutableSet.<Class<? extends Module>>builder()
.add(AuthenticationApiModule.class)
.add(KeystoneAuthenticationModule.class)
- .add(ZoneModule.class)
+ .add(RegionModule.class)
.add(GlanceHttpApiModule.class).build());
}
-
+
@Override
public GlanceApiMetadata build() {
return new GlanceApiMetadata(this);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
index 49ef9c1..cce2913 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
@@ -35,14 +35,14 @@ import org.jclouds.openstack.glance.v1_0.GlanceApi;
import org.jclouds.openstack.glance.v1_0.domain.ImageDetails;
import org.jclouds.openstack.glance.v1_0.features.ImageApi;
import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImageDetails.Images;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
import com.google.common.annotations.Beta;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.inject.TypeLiteral;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
/**
* boiler plate until we determine a better way
@@ -75,8 +75,8 @@ public class ParseImageDetails extends ParseJson<Images> {
@Override
protected Function<Object, IterableWithMarker<ImageDetails>> markerToNextForArg0(Optional<Object> arg0) {
- String zone = arg0.isPresent() ? arg0.get().toString() : null;
- final ImageApi imageApi = api.getImageApiForZone(zone);
+ String region = arg0.isPresent() ? arg0.get().toString() : null;
+ final ImageApi imageApi = api.getImageApi(region);
return new Function<Object, IterableWithMarker<ImageDetails>>() {
@SuppressWarnings("unchecked")
@@ -90,7 +90,7 @@ public class ParseImageDetails extends ParseJson<Images> {
}
else {
return IterableWithMarkers.EMPTY;
- }
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
index 5d02694..3ac8547 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
@@ -35,14 +35,14 @@ import org.jclouds.openstack.glance.v1_0.GlanceApi;
import org.jclouds.openstack.glance.v1_0.domain.Image;
import org.jclouds.openstack.glance.v1_0.features.ImageApi;
import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImages.Images;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
import com.google.common.annotations.Beta;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.inject.TypeLiteral;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
/**
* boiler plate until we determine a better way
@@ -75,8 +75,8 @@ public class ParseImages extends ParseJson<Images> {
@Override
protected Function<Object, IterableWithMarker<Image>> markerToNextForArg0(Optional<Object> arg0) {
- String zone = arg0.isPresent() ? arg0.get().toString() : null;
- final ImageApi imageApi = api.getImageApiForZone(zone);
+ String region = arg0.isPresent() ? arg0.get().toString() : null;
+ final ImageApi imageApi = api.getImageApi(region);
return new Function<Object, IterableWithMarker<Image>>() {
@SuppressWarnings("unchecked")
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
index 67412f2..232f5bf 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
@@ -24,7 +24,7 @@ import org.jclouds.http.HttpCommand;
import org.jclouds.http.HttpErrorHandler;
import org.jclouds.http.HttpResponse;
import org.jclouds.http.HttpResponseException;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
import org.jclouds.rest.AuthorizationException;
import org.jclouds.rest.ResourceNotFoundException;
@@ -46,7 +46,7 @@ public class GlanceErrorHandler implements HttpErrorHandler {
switch (response.getStatusCode()) {
// do not throw exceptions on Glance version negotiation
case 300:
- if (command.getCurrentRequest().getFirstHeaderOrNull(ZoneToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER) != null) {
+ if (command.getCurrentRequest().getFirstHeaderOrNull(RegionToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER) != null) {
return;
}
break;
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
index e6d1b96..8694b37 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
@@ -53,7 +53,7 @@ public class GlanceVersionNegotiationExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
list, listResponse);
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
new ParseImagesTest().expected().toString());
}
@@ -70,7 +70,7 @@ public class GlanceVersionNegotiationExpectTest extends BaseGlanceExpectTest {
GlanceApi apiWhenExist = requestsSendResponses(keystoneAuthWithUsernameAndPassword,
responseWithKeystoneAccess, versionNegotiationRequest, localVersionNegotiationResponse);
- apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list();
+ apiWhenExist.getImageApi("az-1.region-a.geo-1").list();
}
/*
@@ -95,7 +95,7 @@ public class GlanceVersionNegotiationExpectTest extends BaseGlanceExpectTest {
localResponseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
list, listResponse);
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
new ParseImagesTest().expected().toString());
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
index 56cdd0b..d9e89df 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
@@ -58,9 +58,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
list, listResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
new ParseImagesTest().expected().toString());
}
@@ -76,7 +76,7 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
list, listResponse);
- assertTrue(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().isEmpty());
+ assertTrue(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").list().concat().isEmpty());
}
public void testListInDetailWhenResponseIs2xx() throws Exception {
@@ -92,9 +92,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
listInDetail, listInDetailResponse);
- assertEquals(apiWhenExistInDetail.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExistInDetail.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExistInDetail.getImageApiForZone("az-1.region-a.geo-1").listInDetail().concat().toString(),
+ assertEquals(apiWhenExistInDetail.getImageApi("az-1.region-a.geo-1").listInDetail().concat().toString(),
new ParseImagesInDetailTest().expected().toString());
}
@@ -110,7 +110,7 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
listInDetail, listInDetailResponse);
- assertTrue(apiWhenNoExistInDetail.getImageApiForZone("az-1.region-a.geo-1").listInDetail().concat().isEmpty());
+ assertTrue(apiWhenNoExistInDetail.getImageApi("az-1.region-a.geo-1").listInDetail().concat().isEmpty());
}
public void testShowWhenResponseIs2xx() throws Exception {
@@ -125,9 +125,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
show, showResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07").toString(),
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07").toString(),
new ParseImageDetailsFromHeadersTest().expected().toString());
}
@@ -144,7 +144,7 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
show, showResponse);
- assertNull(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+ assertNull(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
}
@@ -160,9 +160,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, getResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(Strings2.toStringAndClose(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07")),
+ assertEquals(Strings2.toStringAndClose(apiWhenExist.getImageApi("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07")),
"foo");
}
@@ -178,7 +178,7 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, getResponse);
- assertNull(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+ assertNull(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
}
public void testCreateWhenResponseIs2xx() throws Exception {
@@ -196,9 +196,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, createResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").create("test", new StringPayload("somedata")),
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").create("test", new StringPayload("somedata")),
new ParseImageDetailsTest().expected());
}
@@ -218,9 +218,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, createResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").create("test", new StringPayload("somedata"));
+ apiWhenExist.getImageApi("az-1.region-a.geo-1").create("test", new StringPayload("somedata"));
}
public void testReserveWhenResponseIs2xx() throws Exception {
@@ -237,9 +237,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, createResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").reserve("test"), new ParseImageDetailsTest().expected());
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").reserve("test"), new ParseImageDetailsTest().expected());
}
@Test(expectedExceptions = AuthorizationException.class)
@@ -257,9 +257,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, createResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").reserve("test");
+ apiWhenExist.getImageApi("az-1.region-a.geo-1").reserve("test");
}
public void testUpdateMetadataWhenResponseIs2xx() throws Exception {
@@ -285,9 +285,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, updateResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1")
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1")
.update("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
UpdateImageOptions.Builder.name("newname"),
UpdateImageOptions.Builder.isPublic(true),
@@ -317,9 +317,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, updateResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- apiWhenExist.getImageApiForZone("az-1.region-a.geo-1")
+ apiWhenExist.getImageApi("az-1.region-a.geo-1")
.update("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
UpdateImageOptions.Builder.name("newname"),
UpdateImageOptions.Builder.isPublic(true));
@@ -341,9 +341,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, updateResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
new StringPayload("somenewdata")), new ParseImageDetailsTest().expected());
}
@@ -366,9 +366,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, updateResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+ assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
new StringPayload("somenewdata"), UpdateImageOptions.Builder.name("anothernewname")), new ParseImageDetailsTest().expected());
}
@@ -390,9 +390,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, updateResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+ apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
new StringPayload("somenewdata"), UpdateImageOptions.Builder.name("anothernewname"));
}
@@ -408,9 +408,9 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, getResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertTrue(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+ assertTrue(apiWhenExist.getImageApi("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
}
public void testDeleteWhenResponseIs4xx() throws Exception {
@@ -426,8 +426,8 @@ public class ImageApiExpectTest extends BaseGlanceExpectTest {
responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
get, getResponse);
- assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+ assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
- assertFalse(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+ assertFalse(apiWhenExist.getImageApi("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
index c624224..1be12f5 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
@@ -41,8 +41,8 @@ public class ImageApiLiveTest extends BaseGlanceApiLiveTest {
@Test
public void testList() throws Exception {
- for (String zoneId : api.getConfiguredZones()) {
- ImageApi imageApi = api.getImageApiForZone(zoneId);
+ for (String region : api.getConfiguredRegions()) {
+ ImageApi imageApi = api.getImageApi(region);
Set<? extends Image> response = imageApi.list().concat().toSet();
assert null != response;
for (Image image : response) {
@@ -59,8 +59,8 @@ public class ImageApiLiveTest extends BaseGlanceApiLiveTest {
@Test
public void testListInDetail() throws Exception {
- for (String zoneId : api.getConfiguredZones()) {
- ImageApi imageApi = api.getImageApiForZone(zoneId);
+ for (String region : api.getConfiguredRegions()) {
+ ImageApi imageApi = api.getImageApi(region);
Set<? extends ImageDetails> response = imageApi.listInDetail().concat().toSet();
assert null != response;
for (ImageDetails image : response) {
@@ -87,16 +87,16 @@ public class ImageApiLiveTest extends BaseGlanceApiLiveTest {
@Test
public void testCreateUpdateAndDeleteImage() {
StringPayload imageData = new StringPayload("This isn't really an image!");
- for (String zoneId : api.getConfiguredZones()) {
- ImageApi imageApi = api.getImageApiForZone(zoneId);
+ for (String region : api.getConfiguredRegions()) {
+ ImageApi imageApi = api.getImageApi(region);
ImageDetails details = imageApi.create("jclouds-live-test", imageData, diskFormat(DiskFormat.RAW), containerFormat(ContainerFormat.BARE));
assertEquals(details.getName(), "jclouds-live-test");
assertEquals(details.getSize().get().longValue(), imageData.getRawContent().length());
-
+
details = imageApi.update(details.getId(), UpdateImageOptions.Builder.name("jclouds-live-test2"), UpdateImageOptions.Builder.minDisk(10));
assertEquals(details.getName(), "jclouds-live-test2");
assertEquals(details.getMinDisk(), 10);
-
+
Image fromListing = imageApi.list(
ListImageOptions.Builder.containerFormat(ContainerFormat.BARE).name("jclouds-live-test2").limit(2))
.get(0);
@@ -106,7 +106,7 @@ public class ImageApiLiveTest extends BaseGlanceApiLiveTest {
assertEquals(Iterables.getOnlyElement(imageApi.listInDetail(ListImageOptions.Builder.name("jclouds-live-test2"))), details);
assertTrue(imageApi.delete(details.getId()));
-
+
assertTrue(imageApi.list(ListImageOptions.Builder.name("jclouds-live-test2")).isEmpty());
}
}
@@ -114,11 +114,11 @@ public class ImageApiLiveTest extends BaseGlanceApiLiveTest {
@Test
public void testReserveUploadAndDeleteImage() {
StringPayload imageData = new StringPayload("This isn't an image!");
- for (String zoneId : api.getConfiguredZones()) {
- ImageApi imageApi = api.getImageApiForZone(zoneId);
+ for (String region : api.getConfiguredRegions()) {
+ ImageApi imageApi = api.getImageApi(region);
ImageDetails details = imageApi.reserve("jclouds-live-res-test", diskFormat(DiskFormat.RAW), containerFormat(ContainerFormat.BARE));
assertEquals(details.getName(), "jclouds-live-res-test");
-
+
details = imageApi.upload(details.getId(), imageData, UpdateImageOptions.Builder.name("jclouds-live-res-test2"), UpdateImageOptions.Builder.minDisk(10));
assertEquals(details.getName(), "jclouds-live-res-test2");
assertEquals(details.getSize().get().longValue(), imageData.getRawContent().length());
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
----------------------------------------------------------------------
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
index adcb8b4..0bfaf37 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
@@ -18,7 +18,7 @@ package org.jclouds.openstack.glance.v1_0.internal;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
import org.jclouds.openstack.glance.v1_0.GlanceApi;
import org.jclouds.openstack.keystone.v2_0.internal.KeystoneFixture;
import org.jclouds.rest.internal.BaseRestApiExpectTest;
@@ -50,7 +50,7 @@ public abstract class BaseGlanceExpectTest extends BaseRestApiExpectTest<GlanceA
// version negotiation
versionNegotiationRequest = HttpRequest.builder().method("GET")
.endpoint("https://glance.jclouds.org:9292/")
- .addHeader(ZoneToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER, "true").build();
+ .addHeader(RegionToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER, "true").build();
versionNegotiationResponse = HttpResponse.builder().statusCode(300).message("HTTP/1.1 300 Multiple Choices").payload(
payloadFromResourceWithContentType("/glanceVersionResponse.json", "application/json")).build();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
index 8fc2eea..c69e0d4 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
@@ -16,32 +16,91 @@
*/
package org.jclouds.openstack.marconi.v1;
-import com.google.inject.Provides;
+import java.io.Closeable;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
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.marconi.v1.features.ClaimApi;
import org.jclouds.openstack.marconi.v1.features.MessageApi;
import org.jclouds.openstack.marconi.v1.features.QueueApi;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.rest.annotations.EndpointParam;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import java.io.Closeable;
-import java.util.Set;
-import java.util.UUID;
+import com.google.inject.Provides;
/**
* Marconi is a robust, web-scale message queuing service to support the distributed nature of large web applications.
*/
public interface MarconiApi extends Closeable {
/**
- * @return The Zone codes configured
+ * @return the Region codes configured
+ */
+ @Provides
+ @Region
+ Set<String> getConfiguredRegions();
+
+ /**
+ * Provides access to Queue features.
+ *
+ * @param region The region where this queue will live.
+ * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+ * 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+ * persists between restarts of the client so the client should reuse that same Client-ID. All
+ * message-related operations require the use of Client-ID in the headers to ensure that messages
+ * are not echoed back to the client that posted them, unless the client explicitly requests this.
+ */
+ @Delegate
+ QueueApi getQueueApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+ @HeaderParam("Client-ID") UUID clientId);
+
+ /**
+ * Provides access to Message features.
+ *
+ * @param region The region where this queue lives.
+ * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+ * 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+ * persists between restarts of the client so the client should reuse that same Client-ID. All
+ * message-related operations require the use of Client-ID in the headers to ensure that messages
+ * are not echoed back to the client that posted them, unless the client explicitly requests this.
+ * @param name Name of the queue.
+ */
+ @Delegate
+ @Path("/queues/{name}")
+ MessageApi getMessageApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+ @HeaderParam("Client-ID") UUID clientId,
+ @PathParam("name") String name);
+
+ /**
+ * Provides access to Claim features.
+ *
+ * @param region The region where this queue lives.
+ * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+ * 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+ * persists between restarts of the client so the client should reuse that same Client-ID. All
+ * message-related operations require the use of Client-ID in the headers to ensure that messages
+ * are not echoed back to the client that posted them, unless the client explicitly requests this.
+ * @param name Name of the queue.
+ */
+ @Delegate
+ @Path("/queues/{name}")
+ ClaimApi getClaimApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+ @HeaderParam("Client-ID") UUID clientId,
+ @PathParam("name") String name);
+
+ /**
+ * @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();
/**
@@ -53,10 +112,13 @@ public interface MarconiApi extends Closeable {
* persists between restarts of the client so the client should reuse that same Client-ID. All
* message-related operations require the use of Client-ID in the headers to ensure that messages
* are not echoed back to the client that posted them, unless the client explicitly requests this.
+ * @deprecated Please use {@link #getQueueApi(String, UUID)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
QueueApi getQueueApiForZoneAndClient(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
@HeaderParam("Client-ID") UUID clientId);
/**
@@ -69,11 +131,14 @@ public interface MarconiApi extends Closeable {
* message-related operations require the use of Client-ID in the headers to ensure that messages
* are not echoed back to the client that posted them, unless the client explicitly requests this.
* @param name Name of the queue.
+ * @deprecated Please use {@link #getMessageApi(String, UUID, String)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
@Path("/queues/{name}")
MessageApi getMessageApiForZoneAndClientAndQueue(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
@HeaderParam("Client-ID") UUID clientId,
@PathParam("name") String name);
@@ -87,11 +152,14 @@ public interface MarconiApi extends Closeable {
* message-related operations require the use of Client-ID in the headers to ensure that messages
* are not echoed back to the client that posted them, unless the client explicitly requests this.
* @param name Name of the queue.
+ * @deprecated Please use {@link #getClaimApi(String, UUID, String)} as this method will be removed
+ * in jclouds 3.0.
*/
+ @Deprecated
@Delegate
@Path("/queues/{name}")
ClaimApi getClaimApiForZoneAndClientAndQueue(
- @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+ @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
@HeaderParam("Client-ID") UUID clientId,
@PathParam("name") String name);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
index 093b267..d44f926 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
@@ -16,24 +16,24 @@
*/
package org.jclouds.openstack.marconi.v1;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule;
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.marconi.v1.config.MarconiHttpApiModule;
import org.jclouds.openstack.marconi.v1.config.MarconiTypeAdapters;
import org.jclouds.openstack.v2_0.ServiceType;
import org.jclouds.rest.internal.BaseHttpApiMetadata;
-import java.net.URI;
-import java.util.Properties;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
/**
* Implementation of {@link org.jclouds.apis.ApiMetadata} for Marconi 1.0 API
@@ -77,11 +77,11 @@ public class MarconiApiMetadata extends BaseHttpApiMetadata<MarconiApi> {
.add(AuthenticationApiModule.class)
.add(KeystoneAuthenticationModule.class)
.add(OkHttpCommandExecutorServiceModule.class)
- .add(ZoneModule.class)
+ .add(RegionModule.class)
.add(MarconiTypeAdapters.class)
.add(MarconiHttpApiModule.class).build());
}
-
+
@Override
public MarconiApiMetadata build() {
return new MarconiApiMetadata(this);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
index 4bc21a7..1afe47f 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
@@ -16,18 +16,7 @@
*/
package org.jclouds.openstack.marconi.v1.features;
-import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
-import org.jclouds.openstack.marconi.v1.domain.Claim;
-import org.jclouds.openstack.marconi.v1.domain.Message;
-import org.jclouds.openstack.marconi.v1.functions.ParseClaim;
-import org.jclouds.openstack.marconi.v1.functions.ParseMessagesToList;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.PATCH;
-import org.jclouds.rest.annotations.Payload;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.SkipEncoding;
+import java.util.List;
import javax.inject.Named;
import javax.ws.rs.Consumes;
@@ -39,17 +28,31 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
-import java.util.List;
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
+import org.jclouds.openstack.marconi.v1.domain.Claim;
+import org.jclouds.openstack.marconi.v1.domain.Message;
+import org.jclouds.openstack.marconi.v1.functions.ParseClaim;
+import org.jclouds.openstack.marconi.v1.functions.ParseMessagesToList;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.PATCH;
+import org.jclouds.rest.annotations.Payload;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
/**
* Provides access to Messages via their REST API.
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/claims")
public interface ClaimApi {
/**
* This operation claims a set of messages (up to the value of the limit parameter) from oldest to newest and skips
@@ -85,13 +88,10 @@ public interface ClaimApi {
*/
@Named("claim:claim")
@POST
- @Path("/claims")
+ @Payload("%7B\"ttl\":{ttl},\"grace\":{grace}%7D")
@ResponseParser(ParseMessagesToList.class)
@Fallback(EmptyListOnNotFoundOr404.class)
- @Payload("%7B\"ttl\":{ttl},\"grace\":{grace}%7D")
- List<Message> claim(@PayloadParam("ttl") int ttl,
- @PayloadParam("grace") int grace,
- @QueryParam("limit") int limit);
+ List<Message> claim(@PayloadParam("ttl") int ttl, @PayloadParam("grace") int grace, @QueryParam("limit") int limit);
/**
* Gets a specific claim and the associated messages.
@@ -100,10 +100,10 @@ public interface ClaimApi {
*/
@Named("claim:get")
@GET
+ @Path("/{claim_id}")
@ResponseParser(ParseClaim.class)
- @Consumes(MediaType.APPLICATION_JSON)
- @Path("/claims/{claim_id}")
@Fallback(NullOnNotFoundOr404.class)
+ @Nullable
Claim get(@PathParam("claim_id") String claimId);
/**
@@ -118,12 +118,11 @@ public interface ClaimApi {
*/
@Named("claim:update")
@PATCH
- @Path("/claims/{claim_id}")
- @Fallback(FalseOnNotFoundOr404.class)
- @Payload("%7B\"ttl\":{ttl}%7D")
+ @Path("/{claim_id}")
@Produces(MediaType.APPLICATION_JSON)
- boolean update(@PathParam("claim_id") String claimId,
- @PayloadParam("ttl") int ttl);
+ @Payload("%7B\"ttl\":{ttl}%7D")
+ @Fallback(FalseOnNotFoundOr404.class)
+ boolean update(@PathParam("claim_id") String claimId, @PayloadParam("ttl") int ttl);
/**
* This operation immediately releases a claim, making any remaining, undeleted messages that are associated with
@@ -135,7 +134,7 @@ public interface ClaimApi {
*/
@Named("claim:delete")
@DELETE
- @Path("/claims/{claim_id}")
+ @Path("/{claim_id}")
@Fallback(FalseOnNotFoundOr404.class)
boolean release(@PathParam("claim_id") String claimId);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
index 51c717e..1e648a7 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
@@ -16,6 +16,23 @@
*/
package org.jclouds.openstack.marconi.v1.features;
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.marconi.v1.binders.BindIdsToQueryParam;
import org.jclouds.openstack.marconi.v1.domain.CreateMessage;
@@ -34,27 +51,13 @@ import org.jclouds.rest.annotations.ResponseParser;
import org.jclouds.rest.annotations.SkipEncoding;
import org.jclouds.rest.binders.BindToJsonPayload;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
-
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
/**
* Provides access to Messages via their REST API.
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/messages")
public interface MessageApi {
/**
* Create message(s) on a queue.
@@ -64,9 +67,9 @@ public interface MessageApi {
*/
@Named("message:create")
@POST
- @Path("/messages")
@ResponseParser(ParseMessagesCreated.class)
@Fallback(NullOnNotFoundOr404.class)
+ @Nullable
MessagesCreated create(@BinderParam(BindToJsonPayload.class) List<CreateMessage> messages);
/**
@@ -78,9 +81,7 @@ public interface MessageApi {
@Named("message:stream")
@GET
@ResponseParser(ParseMessagesToStream.class)
- @Consumes(MediaType.APPLICATION_JSON)
@Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
- @Path("/messages")
MessageStream stream(StreamMessagesOptions... options);
/**
@@ -91,8 +92,6 @@ public interface MessageApi {
@Named("message:list")
@GET
@ResponseParser(ParseMessagesToList.class)
- @Consumes(MediaType.APPLICATION_JSON)
- @Path("/messages")
@Fallback(EmptyListOnNotFoundOr404.class)
List<Message> list(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
@@ -103,10 +102,10 @@ public interface MessageApi {
*/
@Named("message:get")
@GET
+ @Path("/{message_id}")
@ResponseParser(ParseMessage.class)
- @Consumes(MediaType.APPLICATION_JSON)
- @Path("/messages/{message_id}")
@Fallback(NullOnNotFoundOr404.class)
+ @Nullable
Message get(@PathParam("message_id") String id);
/**
@@ -117,8 +116,6 @@ public interface MessageApi {
*/
@Named("message:delete")
@DELETE
- @Consumes(MediaType.APPLICATION_JSON)
- @Path("/messages")
@Fallback(FalseOnNotFoundOr404.class)
boolean delete(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
@@ -133,8 +130,7 @@ public interface MessageApi {
*/
@Named("message:delete")
@DELETE
- @Consumes(MediaType.APPLICATION_JSON)
- @Path("/messages/{message_id}")
+ @Path("/{message_id}")
@Fallback(FalseOnNotFoundOr404.class)
boolean deleteByClaim(@PathParam("message_id") String id,
@QueryParam("claim_id") String claimId);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
index 8953683..ec59bbe 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
@@ -16,6 +16,21 @@
*/
package org.jclouds.openstack.marconi.v1.features;
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.collect.PagedIterable;
import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
import org.jclouds.openstack.marconi.v1.domain.Queue;
@@ -34,26 +49,13 @@ import org.jclouds.rest.annotations.SkipEncoding;
import org.jclouds.rest.annotations.Transform;
import org.jclouds.rest.binders.BindToJsonPayload;
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import java.util.Map;
-
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-
/**
* Provides access to Queues via their REST API.
*/
@SkipEncoding({'/', '='})
@RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/queues")
public interface QueueApi {
/**
* Create a queue.
@@ -63,7 +65,7 @@ public interface QueueApi {
*/
@Named("queue:create")
@PUT
- @Path("queues/{name}")
+ @Path("/{name}")
@Fallback(FalseOnNotFoundOr404.class)
boolean create(@PathParam("name") String name);
@@ -75,7 +77,7 @@ public interface QueueApi {
*/
@Named("queue:delete")
@DELETE
- @Path("queues/{name}")
+ @Path("/{name}")
@Fallback(FalseOnNotFoundOr404.class)
boolean delete(@PathParam("name") String name);
@@ -87,7 +89,7 @@ public interface QueueApi {
*/
@Named("queue:get")
@GET
- @Path("queues/{name}")
+ @Path("/{name}")
@Fallback(FalseOnNotFoundOr404.class)
boolean exists(@PathParam("name") String name);
@@ -98,10 +100,8 @@ public interface QueueApi {
*/
@Named("queue:list")
@GET
- @Consumes(MediaType.APPLICATION_JSON)
@ResponseParser(ParseQueues.class)
@Transform(QueuesToPagedIterable.class)
- @Path("queues")
@Fallback(EmptyPagedIterableOnNotFoundOr404.class)
PagedIterable<Queue> list(@QueryParam("detailed") boolean detailed);
@@ -111,9 +111,7 @@ public interface QueueApi {
@Named("queue:list")
@GET
@ResponseParser(ParseQueues.class)
- @Consumes(MediaType.APPLICATION_JSON)
@Fallback(EmptyQueuesFallback.class)
- @Path("queues")
Queues list(ListQueuesOptions options);
/**
@@ -130,7 +128,7 @@ public interface QueueApi {
*/
@Named("queue:setMetadata")
@PUT
- @Path("queues/{name}/metadata")
+ @Path("/{name}/metadata")
@Produces(MediaType.APPLICATION_JSON)
@Fallback(FalseOnNotFoundOr404.class)
boolean setMetadata(@PathParam("name") String name,
@@ -144,8 +142,7 @@ public interface QueueApi {
*/
@Named("queue:getMetadata")
@GET
- @Path("queues/{name}/metadata")
- @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/{name}/metadata")
@Fallback(FalseOnNotFoundOr404.class)
Map<String, String> getMetadata(@PathParam("name") String name);
@@ -158,8 +155,7 @@ public interface QueueApi {
*/
@Named("queue:getStats")
@GET
- @Path("queues/{name}/stats")
- @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/{name}/stats")
@ResponseParser(ParseQueueStats.class)
@Fallback(FalseOnNotFoundOr404.class)
QueueStats getStats(@PathParam("name") String name);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
index 53f5dfd..bde8f5f 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
@@ -46,10 +46,10 @@ public class QueuesToPagedIterable extends ArgsToPagedIterable.FromCaller<Queue,
@Override
protected Function<Object, IterableWithMarker<Queue>> markerToNextForArgs(List<Object> args) {
- String zone = String.class.cast(args.get(0));
+ String region = String.class.cast(args.get(0));
UUID clientId = UUID.class.cast(args.get(1));
- return new ListQueuesAtMarker(api.getQueueApiForZoneAndClient(zone, clientId));
+ return new ListQueuesAtMarker(api.getQueueApi(region, clientId));
}
private static class ListQueuesAtMarker implements Function<Object, IterableWithMarker<Queue>> {
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
index c562421..a7fd8e9 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
@@ -41,8 +41,8 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
private final Map<String, List<String>> claimIds = Maps.newHashMap();
public void createQueues() throws Exception {
- for (String zoneId : zones) {
- QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+ for (String regionId : regions) {
+ QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
boolean success = queueApi.create("jclouds-test");
assertTrue(success);
@@ -51,8 +51,8 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "createQueues" })
public void createMessages() throws Exception {
- for (String zoneId : zones) {
- MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+ for (String regionId : regions) {
+ MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
CreateMessage message1 = CreateMessage.builder().ttl(86400).body(json1).build();
@@ -71,16 +71,16 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "createMessages" })
public void claimMessages() throws Exception {
- for (String zoneId : zones) {
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+ for (String regionId : regions) {
+ ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
List<Message> messages = claimApi.claim(300, 200, 2);
assertEquals(messages.size(), 2);
- claimIds.put(zoneId, new ArrayList<String>());
+ claimIds.put(regionId, new ArrayList<String>());
for (Message message : messages) {
- claimIds.get(zoneId).add(message.getClaimId().get());
+ claimIds.get(regionId).add(message.getClaimId().get());
assertNotNull(message.getId());
assertTrue(message.getClaimId().isPresent());
@@ -91,10 +91,10 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "claimMessages" })
public void getClaim() throws Exception {
- for (String zoneId : zones) {
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+ for (String regionId : regions) {
+ ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
- Claim claim = claimApi.get(claimIds.get(zoneId).get(0));
+ Claim claim = claimApi.get(claimIds.get(regionId).get(0));
assertNotNull(claim.getId());
assertEquals(claim.getMessages().size(), 2);
@@ -110,10 +110,10 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "getClaim" })
public void updateClaim() throws Exception {
- for (String zoneId : zones) {
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+ for (String regionId : regions) {
+ ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
- boolean success = claimApi.update(claimIds.get(zoneId).get(0), 400);
+ boolean success = claimApi.update(claimIds.get(regionId).get(0), 400);
assertTrue(success);
}
@@ -121,10 +121,10 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "updateClaim" })
public void releaseClaim() throws Exception {
- for (String zoneId : zones) {
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+ for (String regionId : regions) {
+ ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
- boolean success = claimApi.release(claimIds.get(zoneId).get(0));
+ boolean success = claimApi.release(claimIds.get(regionId).get(0));
assertTrue(success);
}
@@ -132,8 +132,8 @@ public class ClaimApiLiveTest extends BaseMarconiApiLiveTest {
@Test(dependsOnMethods = { "releaseClaim" })
public void delete() throws Exception {
- for (String zoneId : zones) {
- QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+ for (String regionId : regions) {
+ QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
boolean success = queueApi.delete("jclouds-test");
assertTrue(success);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/1c3ea466/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
----------------------------------------------------------------------
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
index 5d5083f..b4f6200 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
@@ -41,7 +41,7 @@ public class ClaimApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+ ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
List<Message> messages = claimApi.claim(300, 200, 2);
@@ -69,7 +69,7 @@ public class ClaimApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+ ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
Claim claim = claimApi.get("52a8d23eb04a584f1bbd4f47");
@@ -110,7 +110,7 @@ public class ClaimApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+ ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
boolean success = claimApi.update("52a8d23eb04a584f1bbd4f47", 400);
@@ -132,7 +132,7 @@ public class ClaimApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
try {
MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
- ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+ ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
boolean success = claimApi.release("52a8d23eb04a584f1bbd4f47");