You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/07/03 17:10:40 UTC
[1/2] git commit: JCLOUDS-620: Don't fail on tag filtering when group
is not specified.
Repository: jclouds-labs-google
Updated Branches:
refs/heads/master b2d343d06 -> fa800c198
JCLOUDS-620: Don't fail on tag filtering when group is not specified.
Follow-up from 69756496
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/33de93c3
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/33de93c3
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/33de93c3
Branch: refs/heads/master
Commit: 33de93c348133cb5c5cd5bfddbd01b080e11754b
Parents: b2d343d
Author: Marek Wieczorek <ma...@google.com>
Authored: Fri May 23 15:52:59 2014 +0200
Committer: Andrew Phillips <an...@apache.org>
Committed: Thu Jul 3 11:10:13 2014 -0400
----------------------------------------------------------------------
.../functions/InstanceInZoneToNodeMetadata.java | 6 +-
.../InstanceInZoneToNodeMetadataTest.java | 286 +++++++++++++++++++
2 files changed, 290 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/33de93c3/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
index 99e2b6c..704e9ef 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
@@ -84,8 +84,10 @@ public class InstanceInZoneToNodeMetadata implements Function<InstanceInZone, No
String group = groupFromMapOrName(input.getMetadata().getItems(),
input.getName(), nodeNamingConvention);
- FluentIterable<String> tags = FluentIterable.from(input.getTags().getItems())
- .filter(Predicates.not(firewallTagNamingConvention.get(group).isFirewallTag()));
+ FluentIterable<String> tags = FluentIterable.from(input.getTags().getItems());
+ if (group != null) {
+ tags = tags.filter(Predicates.not(firewallTagNamingConvention.get(group).isFirewallTag()));
+ }
NodeMetadataBuilder builder = new NodeMetadataBuilder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/33de93c3/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
new file mode 100644
index 0000000..dd2416e
--- /dev/null
+++ b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadataTest.java
@@ -0,0 +1,286 @@
+/*
+ * 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.googlecomputeengine.compute.functions;
+
+import static org.easymock.EasyMock.createMock;
+import static org.testng.Assert.assertEquals;
+import static org.jclouds.compute.domain.Image.Status.AVAILABLE;
+
+import java.net.URI;
+import java.util.Map;
+import java.util.Set;
+
+import org.jclouds.compute.domain.Hardware;
+import org.jclouds.compute.domain.HardwareBuilder;
+import org.jclouds.compute.domain.Image;
+import org.jclouds.compute.domain.ImageBuilder;
+import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.OperatingSystem;
+import org.jclouds.compute.domain.OsFamily;
+import org.jclouds.compute.domain.Processor;
+import org.jclouds.compute.domain.Volume.Type;
+import org.jclouds.compute.domain.VolumeBuilder;
+import org.jclouds.compute.functions.GroupNamingConvention;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.domain.Location;
+import org.jclouds.domain.LocationBuilder;
+import org.jclouds.domain.LocationScope;
+import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
+import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.InstanceInZone;
+import org.jclouds.googlecomputeengine.domain.Metadata;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Supplier;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+
+@Test(groups = "unit", testName = "InstanceInZoneToNodeMetadataTest")
+public class InstanceInZoneToNodeMetadataTest {
+
+ /**
+ * GroupNamingConvention that always returns the same name provided in the constructor.
+ * The predicates returned always evaluate to true.
+ *
+ */
+ class FixedGroupNamingConvention implements GroupNamingConvention {
+ private final String name;
+
+ public FixedGroupNamingConvention(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String sharedNameForGroup(final String group) {
+ return name;
+ }
+
+ @Override
+ public String uniqueNameForGroup(final String group) {
+ return name;
+ }
+
+ @Override
+ public String groupInUniqueNameOrNull(final String encoded) {
+ return name;
+ }
+
+ @Override
+ public String groupInSharedNameOrNull(final String encoded) {
+ return name;
+ }
+
+ @Override
+ public Predicate<String> containsGroup(final String group) {
+ return new Predicate<String>() {
+ @Override
+ public boolean apply(final String input) {
+ return true;
+ }
+ };
+ }
+
+ @Override
+ public Predicate<String> containsAnyGroup() {
+ return new Predicate<String>() {
+ @Override
+ public boolean apply(final String input) {
+ return true;
+ }
+ };
+ }
+
+ @Override
+ public String extractGroup(final String encoded) {
+ return name;
+ }
+ }
+
+ private Instance instance;
+
+ private Set<Hardware> hardwares;
+
+ private Set<Image> images;
+
+ private Set<Location> locations;
+
+ private InstanceInZoneToNodeMetadata groupGroupNodeParser;
+ private InstanceInZoneToNodeMetadata groupNullNodeParser;
+
+ @BeforeMethod
+ public final void setup() {
+ instance = Instance.builder()
+ .id("13051190678907570425")
+ .creationTimestamp(new SimpleDateFormatDateService().iso8601DateParse("2012-11-25T23:48:20.758"))
+ .selfLink(URI.create("https://www.googleapis"
+ + ".com/compute/v1/projects/myproject/zones/us-central1-a/instances/test-0"))
+ .description("desc")
+ .name("test-0")
+ .machineType(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/"
+ + "machineTypes/n1-standard-1"))
+ .status(Instance.Status.RUNNING)
+ .zone(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a"))
+ .addNetworkInterface(
+ Instance.NetworkInterface.builder()
+ .name("nic0")
+ .networkIP("10.240.121.115")
+ .network(URI.create("https://www.googleapis"
+ + ".com/compute/v1/projects/myproject/global/networks/default"))
+ .build())
+ .addDisk(
+ Instance.PersistentAttachedDisk.builder()
+ .index(0)
+ .mode(Instance.PersistentAttachedDisk.Mode.READ_WRITE)
+ .deviceName("test")
+ .source(URI.create("https://www.googleapis"
+ + ".com/compute/v1/projects/myproject/zones/us-central1-a/disks/test"))
+ .boot(true)
+ .build())
+ .tags(Instance.Tags.builder().fingerprint("abcd").addItem("aTag").addItem("Group-port-42").build())
+ .metadata(Metadata.builder()
+ .items(ImmutableMap.of("aKey", "aValue",
+ "jclouds-image",
+ "https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/gcel-12-04-v20121106",
+ "jclouds-delete-boot-disk", "true"))
+ .fingerprint("efgh")
+ .build())
+ .addServiceAccount(Instance.ServiceAccount.builder().email("default").addScopes("myscope").build())
+ .build();
+
+ images = ImmutableSet.of(new ImageBuilder()
+ .id("1")
+ .uri(URI.create("https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/"
+ + "gcel-12-04-v20121106"))
+ .providerId("1")
+ .name("mock image")
+ .status(AVAILABLE)
+ .operatingSystem(
+ OperatingSystem.builder().name("Ubuntu 14.04 x86_64").description("Ubuntu").family(OsFamily.UBUNTU)
+ .version("10.04").arch("x86_64").is64Bit(true).build()).build());
+
+ hardwares = ImmutableSet.of(new HardwareBuilder().id("my_id")
+ .uri(URI.create("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/"
+ + "n1-standard-1"))
+ .providerId("1")
+ .name("mock hardware").processor(new Processor(1.0, 1.0)).ram(2048)
+ .volume(new VolumeBuilder().size(20f).type(Type.LOCAL).build()).build());
+
+ locations = ImmutableSet.of(new LocationBuilder()
+ .id("id")
+ .description("https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a")
+ .scope(LocationScope.REGION)
+ .parent(
+ new LocationBuilder().id("0").description("mock parent location").scope(LocationScope.PROVIDER)
+ .build()).build());
+
+ groupGroupNodeParser = createNodeParser(hardwares, images, locations, "Group");
+ groupNullNodeParser = createNodeParser(hardwares, images, locations, null);
+ }
+
+ private InstanceInZoneToNodeMetadata createNodeParser(final Set<Hardware> hardware, final Set<Image> images,
+ final Set<Location> locations, final String groupName) {
+ Supplier<Map<URI, ? extends Location>> locationSupplier = new Supplier<Map<URI, ? extends Location>>() {
+ @Override
+ public Map<URI, ? extends Location> get() {
+ return Maps.uniqueIndex(locations, new Function<Location, URI>() {
+ @Override
+ public URI apply(final Location input) {
+ return URI.create(input.getDescription());
+ }
+ });
+ }
+ };
+
+ Supplier<Map<URI, ? extends Hardware>> hardwareSupplier = new Supplier<Map<URI, ? extends Hardware>>() {
+ @Override
+ public Map<URI, ? extends Hardware> get() {
+ return Maps.uniqueIndex(hardware, new Function<Hardware, URI>() {
+ @Override
+ public URI apply(final Hardware input) {
+ return input.getUri();
+ }
+ });
+ }
+ };
+
+ Supplier<Map<URI, ? extends Image>> imageSupplier = new Supplier<Map<URI, ? extends Image>>() {
+ @Override
+ public Map<URI, ? extends Image> get() {
+ return Maps.uniqueIndex(images, new Function<Image, URI>() {
+ @Override
+ public URI apply(final Image input) {
+ return input.getUri();
+ }
+ });
+ }
+ };
+
+ Supplier<String> userProjectSupplier = new Supplier<String>() {
+ @Override
+ public String get() {
+ return "userProject";
+ }
+ };
+
+ GroupNamingConvention.Factory namingConventionFactory =
+ new GroupNamingConvention.Factory() {
+ @Override
+ public GroupNamingConvention createWithoutPrefix() {
+ return new FixedGroupNamingConvention(groupName);
+ }
+
+ @Override
+ public GroupNamingConvention create() {
+ return new FixedGroupNamingConvention(groupName);
+ }
+ };
+
+ return new InstanceInZoneToNodeMetadata(
+ ImmutableMap.<Instance.Status, NodeMetadata.Status>builder()
+ .put(Instance.Status.RUNNING, NodeMetadata.Status.PENDING).build(),
+ namingConventionFactory,
+ imageSupplier,
+ hardwareSupplier,
+ locationSupplier,
+ new FirewallTagNamingConvention.Factory(namingConventionFactory),
+ createMock(GoogleComputeEngineApi.class),
+ userProjectSupplier);
+ }
+
+ @Test
+ public final void testTagFilteringWorks() {
+ InstanceInZone instanceInZone = new InstanceInZone(instance, "zoneId");
+ NodeMetadata nodeMetadata = groupGroupNodeParser.apply(instanceInZone);
+ assertEquals(nodeMetadata.getId(), "id/test-0");
+ assertEquals(nodeMetadata.getTags(), ImmutableSet.<String>of(
+ "aTag" // "aTag" kept as a non firewall tag.
+ // "Group-port-42" filtered out as a firewall tag.
+ ));
+ }
+
+ @Test
+ public final void testInstanceWithGroupNull() {
+ InstanceInZone instanceInZone = new InstanceInZone(instance, "zoneId");
+ NodeMetadata nodeMetadata = groupNullNodeParser.apply(instanceInZone);
+ assertEquals(nodeMetadata.getId(), "id/test-0");
+ assertEquals(nodeMetadata.getTags(), ImmutableSet.<String>of("aTag", "Group-port-42"));
+ }
+}
[2/2] git commit: Fixing other Checkstyle violations in GCE.
Posted by an...@apache.org.
Fixing other Checkstyle violations in GCE.
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/fa800c19
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/fa800c19
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/fa800c19
Branch: refs/heads/master
Commit: fa800c198ba90b4b8e6f0f978728a1756c18f63f
Parents: 33de93c
Author: Marek Wieczorek <ma...@google.com>
Authored: Mon Jun 9 16:44:03 2014 +0200
Committer: Andrew Phillips <an...@apache.org>
Committed: Thu Jul 3 11:10:14 2014 -0400
----------------------------------------------------------------------
.../CreateNodesWithGroupEncodedIntoNameThenAddToSet.java | 3 ++-
.../googlecomputeengine/handlers/MetadataBinder.java | 3 ++-
.../compute/GoogleComputeEngineServiceExpectTest.java | 10 +++++-----
3 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/fa800c19/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/strategy/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/strategy/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/strategy/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
index d44a098..14af9cd 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/strategy/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/compute/strategy/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
@@ -175,7 +175,8 @@ public class CreateNodesWithGroupEncodedIntoNameThenAddToSet extends
for (AtomicReference<Operation> operation : operations) {
retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval,
MILLISECONDS).apply(operation);
- checkState(!operation.get().getHttpError().isPresent(), "Could not create firewall, operation failed" + operation);
+ checkState(!operation.get().getHttpError().isPresent(),
+ "Could not create firewall, operation failed" + operation);
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/fa800c19/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/handlers/MetadataBinder.java
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/handlers/MetadataBinder.java b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/handlers/MetadataBinder.java
index ddfecaa..b96afb4 100644
--- a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/handlers/MetadataBinder.java
+++ b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/handlers/MetadataBinder.java
@@ -39,7 +39,8 @@ public class MetadataBinder implements MapBinder {
*/
@Override
public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
- Map<String, String> items = ImmutableMap.copyOf((Map<String, String>)checkNotNull(postParams.get("items"), "item"));
+ Map<String, String> items =
+ ImmutableMap.copyOf((Map<String, String>) checkNotNull(postParams.get("items"), "item"));
String fingerprint = (String) checkNotNull(postParams.get("fingerprint"), "fingerprint");
Metadata metadata = Metadata.builder()
.fingerprint(fingerprint)
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/fa800c19/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 323faa7..2532f27 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
@@ -345,11 +345,11 @@ public class GoogleComputeEngineServiceExpectTest extends BaseGoogleComputeEngin
.addHeader("Authorization", "Bearer " + TOKEN).build();
HttpRequest deleteDiskRequest = HttpRequest.builder()
- .method("DELETE")
- .endpoint("https://www.googleapis" +
- ".com/compute/v1/projects/myproject/zones/us-central1-a/disks/test")
- .addHeader("Accept", "application/json")
- .addHeader("Authorization", "Bearer " + TOKEN).build();
+ .method("DELETE")
+ .endpoint("https://www.googleapis" +
+ ".com/compute/v1/projects/myproject/zones/us-central1-a/disks/test")
+ .addHeader("Accept", "application/json")
+ .addHeader("Authorization", "Bearer " + TOKEN).build();
List<HttpRequest> orderedRequests = ImmutableList.<HttpRequest>builder()
.add(requestForScopes(COMPUTE_READONLY_SCOPE))