You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2014/11/05 18:16:57 UTC
git commit: Use images from all public projects and filter deprecated
ones
Repository: jclouds-labs-google
Updated Branches:
refs/heads/master 1e86ef644 -> 8b5d3d3ce
Use images from all public projects and filter deprecated ones
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/commit/8b5d3d3c
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/8b5d3d3c
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/8b5d3d3c
Branch: refs/heads/master
Commit: 8b5d3d3cea7dd051e7fc30f92d4450e5e5852ab7
Parents: 1e86ef6
Author: Ignasi Barrera <na...@apache.org>
Authored: Tue Nov 4 16:02:20 2014 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Nov 5 18:15:29 2014 +0100
----------------------------------------------------------------------
google-compute-engine/pom.xml | 2 +-
.../GoogleComputeEngineApiMetadata.java | 2 ++
.../GoogleComputeEngineConstants.java | 10 +++---
.../GoogleComputeEngineServiceAdapter.java | 37 +++++++++++++-------
...GoogleComputeEngineServiceContextModule.java | 10 ++++++
.../GoogleComputeEngineServiceExpectTest.java | 2 ++
6 files changed, 46 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/pom.xml
----------------------------------------------------------------------
diff --git a/google-compute-engine/pom.xml b/google-compute-engine/pom.xml
index 31c7de3..ac45197 100644
--- a/google-compute-engine/pom.xml
+++ b/google-compute-engine/pom.xml
@@ -39,7 +39,7 @@
</test.google-compute-engine.credential>
<test.google-compute-engine.api-version>v1</test.google-compute-engine.api-version>
<test.google-compute-engine.build-version/>
- <test.google-compute-engine.template>imageId=debian-7-wheezy-v20131120,locationId=us-central1-a,minRam=2048</test.google-compute-engine.template>
+ <test.google-compute-engine.template>imageNameMatches=debian-7-wheezy-v[0-9]*,locationId=us-central1-a,minRam=2048</test.google-compute-engine.template>
</properties>
<dependencies>
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadata.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadata.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadata.java
index 0b7bed7..6584d18 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadata.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineApiMetadata.java
@@ -18,6 +18,7 @@ package org.jclouds.googlecomputeengine;
import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_PROJECTS;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_PROVIDER_NAME;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_INTERVAL;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_TIMEOUT;
@@ -66,6 +67,7 @@ public class GoogleComputeEngineApiMetadata extends BaseHttpApiMetadata<GoogleCo
properties.setProperty(TEMPLATE, "osFamily=DEBIAN,osVersionMatches=7\\..*,locationId=us-central1-a,loginUser=jclouds");
properties.put(OPERATION_COMPLETE_INTERVAL, 500);
properties.put(OPERATION_COMPLETE_TIMEOUT, 600000);
+ properties.put(GCE_IMAGE_PROJECTS, "centos-cloud,debian-cloud,rhel-cloud,suse-cloud,opensuse-cloud,gce-nvme,coreos-cloud");
return properties;
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineConstants.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineConstants.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineConstants.java
index d20ff98..16c68a8 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineConstants.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/GoogleComputeEngineConstants.java
@@ -31,10 +31,6 @@ public final class GoogleComputeEngineConstants {
*/
public static final String GOOGLE_PROJECT = "google";
- public static final String CENTOS_PROJECT = "centos-cloud";
-
- public static final String DEBIAN_PROJECT = "debian-cloud";
-
public static final String COMPUTE_SCOPE = "https://www.googleapis.com/auth/compute";
public static final String COMPUTE_READONLY_SCOPE = "https://www.googleapis.com/auth/compute.readonly";
@@ -59,6 +55,12 @@ public final class GoogleComputeEngineConstants {
public static final Location GOOGLE_PROVIDER_LOCATION = new LocationBuilder().scope(LocationScope.PROVIDER).id
(GCE_PROVIDER_NAME).description(GCE_PROVIDER_NAME).build();
+ /**
+ * The list of projects that will be scanned looking for images.
+ */
+ @Beta
+ public static final String GCE_IMAGE_PROJECTS = "jclouds.google-compute-engine.image-projects";
+
/**
* The key we look for in instance metadata for the URI for the image the instance was created from.
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
index bedace7..c330eda 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
@@ -22,12 +22,12 @@ import static com.google.common.collect.Iterables.contains;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Iterables.tryFind;
+import static com.google.common.collect.Lists.newArrayList;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.CENTOS_PROJECT;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.DEBIAN_PROJECT;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_BOOT_DISK_SUFFIX;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_DELETE_BOOT_DISK_METADATA_KEY;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_METADATA_KEY;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_PROJECTS;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_INTERVAL;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_TIMEOUT;
import static org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig.Type;
@@ -39,6 +39,7 @@ import java.net.URI;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -75,7 +76,6 @@ import org.jclouds.googlecomputeengine.features.InstanceApi;
import org.jclouds.googlecomputeengine.options.DiskCreationOptions;
import com.google.common.base.Function;
-import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import com.google.common.collect.FluentIterable;
@@ -97,6 +97,7 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
private final long operationCompleteCheckInterval;
private final long operationCompleteCheckTimeout;
private final FirewallTagNamingConvention.Factory firewallTagNamingConvention;
+ private final List<String> imageProjects;
@Inject GoogleComputeEngineServiceAdapter(GoogleComputeEngineApi api,
@UserProject Supplier<String> userProject,
@@ -106,7 +107,8 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
@Named(OPERATION_COMPLETE_INTERVAL) Long operationCompleteCheckInterval,
@Named(OPERATION_COMPLETE_TIMEOUT) Long operationCompleteCheckTimeout,
@Memoized Supplier<Map<URI, ? extends Location>> zones,
- FirewallTagNamingConvention.Factory firewallTagNamingConvention) {
+ FirewallTagNamingConvention.Factory firewallTagNamingConvention,
+ @Named(GCE_IMAGE_PROJECTS) List<String> imageProjects) {
this.api = api;
this.userProject = userProject;
this.metatadaFromTemplateOptions = metatadaFromTemplateOptions;
@@ -116,6 +118,7 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
operationCompleteCheckInterval, TimeUnit.MILLISECONDS);
this.zones = zones;
this.firewallTagNamingConvention = firewallTagNamingConvention;
+ this.imageProjects = imageProjects;
}
@Override
@@ -261,19 +264,29 @@ public final class GoogleComputeEngineServiceAdapter implements ComputeServiceAd
@Override
public Iterable<Image> listImages() {
- return Iterables.concat( //
- concat(api.getImageApi(userProject.get()).list()), //
- concat(api.getImageApi(DEBIAN_PROJECT).list()), //
- concat(api.getImageApi(CENTOS_PROJECT).list()));
+ List<Iterable<Image>> images = newArrayList();
+
+ images.add(concat(api.getImageApi(userProject.get()).list()));
+
+ for (String project : imageProjects) {
+ images.add(concat(api.getImageApi(project).list()));
+ }
+
+ return Iterables.concat(images);
}
- @SuppressWarnings("deprecation")
@Override
public Image getImage(String id) {
- return Objects.firstNonNull(api.getImageApi(userProject.get()).get(id),
- Objects.firstNonNull(api.getImageApi(DEBIAN_PROJECT).get(id),
- api.getImageApi(CENTOS_PROJECT).get(id)));
+ Image image = api.getImageApi(userProject.get()).get(id);
+ for (int i = 0; i < imageProjects.size() && image == null; i++) {
+ image = api.getImageApi(imageProjects.get(i)).get(id);
+ }
+
+ if (image == null) {
+ throw new NoSuchElementException("No image found with id: " + id);
+ }
+ return image;
}
@Override
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
index 70c2b23..c75d3e2 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
@@ -20,8 +20,10 @@ import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Maps.uniqueIndex;
import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
import static org.jclouds.googlecomputeengine.internal.ListPages.concat;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_PROJECTS;
import java.net.URI;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -81,6 +83,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
+import com.google.common.base.Splitter;
import com.google.common.base.Supplier;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
@@ -281,4 +284,11 @@ public class GoogleComputeEngineServiceContextModule
protected Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus() {
return toPortableNodeStatus;
}
+
+ @Singleton
+ @Provides
+ @Named(GCE_IMAGE_PROJECTS)
+ protected List<String> imageProjects(@Named(GCE_IMAGE_PROJECTS) String imageProjects) {
+ return Splitter.on(',').splitToList(imageProjects);
+ }
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/8b5d3d3c/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
index c765a81..0fc1771 100644
--- a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceExpectTest.java
@@ -20,6 +20,7 @@ import static com.google.common.collect.Iterables.getOnlyElement;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_BOOT_DISK_SUFFIX;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_PROJECTS;
import static org.jclouds.googlecomputeengine.features.GlobalOperationApiExpectTest.GET_GLOBAL_OPERATION_REQUEST;
import static org.jclouds.googlecomputeengine.features.GlobalOperationApiExpectTest.GET_GLOBAL_OPERATION_RESPONSE;
import static org.jclouds.googlecomputeengine.features.ImageApiExpectTest.LIST_CENTOS_IMAGES_REQUEST;
@@ -217,6 +218,7 @@ public class GoogleComputeEngineServiceExpectTest extends BaseGoogleComputeEngin
protected Properties setupProperties() {
Properties overrides = super.setupProperties();
overrides.put("google-compute-engine.identity", "myproject");
+ overrides.put(GCE_IMAGE_PROJECTS, "debian-cloud,centos-cloud");
try {
overrides.put("google-compute-engine.credential", toStringAndClose(getClass().getResourceAsStream("/testpk.pem")));
} catch (IOException e) {