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))