Repository: jclouds-labs-google
Updated Branches:
  refs/heads/master 0260afd4e -> c2fd429d5


added InstanceApi.setScheduling


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/c2fd429d
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/c2fd429d
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/c2fd429d

Branch: refs/heads/master
Commit: c2fd429d5daaf5c1cfea0b34eef5694d1683eb66
Parents: 0260afd
Author: Daniel Broudy <[email protected]>
Authored: Mon Nov 24 17:15:30 2014 -0800
Committer: Adrian Cole <[email protected]>
Committed: Wed Nov 26 13:12:44 2014 -0800

----------------------------------------------------------------------
 .../GoogleComputeEngineServiceAdapter.java      |  5 +-
 .../googlecomputeengine/domain/Instance.java    | 40 ++++++++++-
 .../googlecomputeengine/domain/NewInstance.java | 11 +--
 .../features/InstanceApi.java                   | 20 ++++++
 .../GoogleComputeEngineServiceMockTest.java     | 73 ++------------------
 .../features/InstanceApiLiveTest.java           | 18 ++++-
 .../features/InstanceApiMockTest.java           | 13 ++++
 .../parse/ParseInstanceTest.java                |  4 +-
 .../resources/aggregated_instance_list.json     |  4 ++
 .../src/test/resources/firewall_insert_2.json   | 28 ++++++++
 .../src/test/resources/instance_get.json        |  4 ++
 .../src/test/resources/instance_insert.json     | 33 ++++++++-
 .../src/test/resources/instance_insert_2.json   | 37 ++++++++++
 .../test/resources/instance_insert_simple.json  | 29 +++++++-
 .../src/test/resources/instance_list.json       |  4 ++
 15 files changed, 243 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/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 22315f3..fb3f7f6 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
@@ -47,6 +47,8 @@ import 
org.jclouds.googlecomputeengine.compute.options.GoogleComputeEngineTempla
 import org.jclouds.googlecomputeengine.domain.AttachDisk;
 import org.jclouds.googlecomputeengine.domain.Image;
 import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.Instance.Scheduling;
+import 
org.jclouds.googlecomputeengine.domain.Instance.Scheduling.OnHostMaintenance;
 import org.jclouds.googlecomputeengine.domain.MachineType;
 import org.jclouds.googlecomputeengine.domain.NewInstance;
 import org.jclouds.googlecomputeengine.domain.Operation;
@@ -162,7 +164,8 @@ public final class GoogleComputeEngineServiceAdapter
             null, // networkInterfaces
             null, // disks
             newInstance.metadata(), // metadata
-            null // serviceAccounts
+            null, // serviceAccounts
+            Scheduling.create(OnHostMaintenance.MIGRATE, true) // scheduling
       ));
       checkState(instanceVisible.apply(instance), "instance %s is not api 
visible!", instance.get());
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java
index 6c420b4..be5b1e5 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/Instance.java
@@ -157,6 +157,38 @@ public abstract class Instance {
       }
    }
 
+   /**
+    * Defines the maintenance behavior for this instance. The default behavior 
is migrate.
+    */
+   @AutoValue
+   public abstract static class Scheduling {
+
+      public enum OnHostMaintenance {
+         /**
+          * Allows Compute Engine to automatically migrate instances out of 
the way of maintenance events.
+          */
+         MIGRATE,
+         /**
+          * Allows Compute Engine to terminate and restart the instance away 
from the maintenance activity.
+          * If you would like your instance to be restarted, set the 
automaticRestart flag to true.
+          * Your instance may be restarted more than once, and it may be 
restarted outside the window
+          * of maintenance events.
+          */
+         TERMINATE
+      }
+
+      public abstract OnHostMaintenance onHostMaintenance();
+      public abstract boolean automaticRestart();
+
+      @SerializedNames({ "onHostMaintenance", "automaticRestart" })
+      public static Scheduling create(OnHostMaintenance onHostMaintenance, 
boolean automaticRestart) {
+         return new AutoValue_Instance_Scheduling(onHostMaintenance, 
automaticRestart);
+      }
+
+      Scheduling() {
+      }
+   }
+
    public enum Status {
       PROVISIONING,
       STAGING,
@@ -197,13 +229,15 @@ public abstract class Instance {
 
    public abstract List<ServiceAccount> serviceAccounts();
 
+   public abstract Scheduling scheduling();
+
    @SerializedNames({ "id", "selfLink", "name", "description", "tags", 
"machineType", "status", "statusMessage", "zone",
-         "networkInterfaces", "disks", "metadata", "serviceAccounts" })
+         "networkInterfaces", "disks", "metadata", "serviceAccounts", 
"scheduling"})
    public static Instance create(String id, URI selfLink, String name, String 
description, Tags tags, URI machineType,
          Status status, String statusMessage, URI zone, List<NetworkInterface> 
networkInterfaces,
-         List<AttachedDisk> disks, Metadata metadata, List<ServiceAccount> 
serviceAccounts) {
+         List<AttachedDisk> disks, Metadata metadata, List<ServiceAccount> 
serviceAccounts, Scheduling scheduling) {
       return new AutoValue_Instance(id, selfLink, name, description, tags, 
machineType, status, statusMessage, zone,
-            copyOf(networkInterfaces), copyOf(disks), metadata, 
copyOf(serviceAccounts));
+            copyOf(networkInterfaces), copyOf(disks), metadata, 
copyOf(serviceAccounts), scheduling);
    }
 
    Instance() {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/NewInstance.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/NewInstance.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/NewInstance.java
index 6f59b85..e70c9dd 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/NewInstance.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/domain/NewInstance.java
@@ -23,6 +23,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import 
org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig;
+import org.jclouds.googlecomputeengine.domain.Instance.Scheduling;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.json.SerializedNames;
 
@@ -66,6 +67,8 @@ public abstract class NewInstance {
    /** Add metadata via {@link Metadata#items()}. */
    public abstract Metadata metadata();
 
+   @Nullable public abstract Scheduling scheduling();
+
    /** Convenience for creating a new instance with only a boot disk and 
minimal parameters. */
    public static NewInstance create(String name, URI machineType, URI network, 
URI sourceImage) {
       return create(name, machineType, network, 
Arrays.asList(AttachDisk.newBootDisk(sourceImage)), null);
@@ -81,13 +84,13 @@ public abstract class NewInstance {
          }
       }
       return create(name, machineType, 
ImmutableList.of(NetworkInterface.create(network)), ImmutableList.copyOf(disks),
-            description, Tags.create(), Metadata.create());
+            description, Tags.create(), Metadata.create(), null);
    }
 
-   @SerializedNames({ "name", "machineType", "networkInterfaces", "disks", 
"description", "tags", "metadata" })
+   @SerializedNames({ "name", "machineType", "networkInterfaces", "disks", 
"description", "tags", "metadata", "scheduling" })
    static NewInstance create(String name, URI machineType, 
List<NetworkInterface> networkInterfaces,
-         List<AttachDisk> disks, String description, Tags tags, Metadata 
metadata) {
-      return new AutoValue_NewInstance(name, machineType, networkInterfaces, 
disks, description, tags, metadata);
+         List<AttachDisk> disks, String description, Tags tags, Metadata 
metadata, Scheduling scheduling) {
+      return new AutoValue_NewInstance(name, machineType, networkInterfaces, 
disks, description, tags, metadata, scheduling);
    }
 
    NewInstance() {

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
index b561bca..0b61795 100644
--- 
a/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
+++ 
b/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
@@ -38,6 +38,7 @@ import org.jclouds.googlecloud.domain.ListPage;
 import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
 import org.jclouds.googlecomputeengine.domain.AttachDisk;
 import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.Instance.Scheduling;
 import org.jclouds.googlecomputeengine.domain.Metadata;
 import org.jclouds.googlecomputeengine.domain.NewInstance;
 import org.jclouds.googlecomputeengine.domain.Operation;
@@ -233,6 +234,25 @@ public interface InstanceApi {
                                @QueryParam("autoDelete") boolean autoDelete);
 
    /**
+    * Sets an instance's scheduling options.
+    * @see <a href = 
"https://cloud.google.com/compute/docs/instances#onhostmaintenance"/>
+    *
+    * @param instanceName The name of the instance
+    * @param onHostMaintenance either MIGRATE or TERMINATE the default is 
MIGRATE (Live Migration).
+    * @param automaticRestart Defines whether the Instance should be 
automatically
+    *  restarted when it is terminated by Compute Engine (not terminated by 
user).
+    *  Used when onHostMaintenance is set to TERMINATE.
+    * @return
+    */
+   @Named("Instances:setScheduling")
+   @POST
+   @Path("/{instance}/setScheduling")
+   @MapBinder(BindToJsonPayload.class)
+   Operation setScheduling(@PathParam("instance") String instanceName,
+                           @PayloadParam("onHostMaintenance") 
Scheduling.OnHostMaintenance onHostMaintenance,
+                           @PayloadParam("automaticRestart") boolean 
automaticRestart);
+
+   /**
     * Retrieves the list of instance resources available to the specified 
project.
     * By default the list as a maximum size of 100, if no options are provided 
or ListOptions#getMaxResults() has not
     * been set.

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceMockTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceMockTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceMockTest.java
index f161724..7045821 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceMockTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceMockTest.java
@@ -185,75 +185,14 @@ public class GoogleComputeEngineServiceMockTest extends 
BaseGoogleComputeEngineA
       assertSent(server, "GET", 
"/projects/party/zones/us-central1-a/operations/operation-1354084865060");
       assertSent(server, "GET", 
"/projects/party/global/networks/jclouds-test");
       assertSent(server, "GET", 
"/projects/party/global/firewalls/jclouds-test-port-22");
-      assertSent(server, "POST", "/projects/party/global/firewalls", "" //
-            + "{" //
-            + "  \"name\": \"jclouds-test-port-22\"," //
-            + "  \"network\": \"" + 
url("/projects/party/networks/jclouds-test") + "\","//
-            + "  \"sourceRanges\": [" //
-            + "    \"10.0.0.0/8\","//
-            + "    \"0.0.0.0/0\"" //
-            + "  ]," //
-            + "  \"sourceTags\": [" //
-            + "    \"aTag\"" //
-            + "  ]," //
-            + "  \"targetTags\": [" //
-            + "    \"jclouds-test-port-22\"" //
-            + "  ]," //
-            + "  \"allowed\": [" //
-            + "    {" //
-            + "      \"IPProtocol\": \"tcp\"," //
-            + "      \"ports\": [" //
-            + "        \"22\"" //
-            + "      ]" //
-            + "    }," //
-            + "    {" //
-            + "      \"IPProtocol\": \"udp\"," //
-            + "      \"ports\": [" //
-            + "        \"22\""//
-            + "      ]" //
-            + "    }" //
-            + "  ]" //
-            + "}");
+      assertSent(server, "POST", "/projects/party/global/firewalls",
+            stringFromResource("/firewall_insert_2.json"));
+
       assertSent(server, "GET", 
"/projects/party/zones/us-central1-a/operations/operation-1354084865060");
       assertSent(server, "GET", "/projects/party/aggregated/instances");
-      assertSent(server, "POST", 
"/projects/party/zones/us-central1-a/instances", "" //
-            + "{" //
-            + "  \"machineType\": \"" + template.getHardware().getId() + "\"," 
//
-            + "  \"name\": \"test-1\"," //
-            + "  \"networkInterfaces\": [" //
-            + "    {" //
-            + "      \"network\": \"" + 
url("/projects/party/networks/jclouds-test") + "\"," //
-            + "      \"accessConfigs\": [" //
-            + "        \"ONE_TO_ONE_NAT\"" //
-            + "      ]" //
-            + "    }" //
-            + "  ]," //
-            + "  \"disks\": [" //
-            + "    {" //
-            + "      \"type\": \"PERSISTENT\"," //
-            + "      \"initializeParams\": {" //
-            + "        \"sourceImage\": \"" + template.getImage().getId() + 
"\"" //
-            + "      }," //
-            + "      \"boot\": true," //
-            + "      \"autoDelete\": true" //
-            + "    }" //
-            + "  ]," //
-            + "  \"description\": \"test\"," //
-            + "  \"tags\": {" //
-            + "    \"items\": [" //
-            + "      \"aTag\"," //
-            + "      \"jclouds-test-port-22\"" //
-            + "    ]" //
-            + "  }," //
-            + "  \"metadata\": {" //
-            + "    \"items\": [" //
-            + "      {" //
-            + "        \"key\": \"jclouds-group\"," //
-            + "        \"value\": \"test\"" //
-            + "      }" //
-            + "    ]" //
-            + "  }" //
-            + "}");
+      assertSent(server, "POST", 
"/projects/party/zones/us-central1-a/instances",
+            String.format(stringFromResource("/instance_insert_2.json"), 
template.getHardware().getId(), template.getImage().getId()));
+
       assertSent(server, "GET", 
"/projects/party/zones/us-central1-a/instances/test-1");
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiLiveTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiLiveTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiLiveTest.java
index fe671d6..1d643c5 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiLiveTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiLiveTest.java
@@ -32,6 +32,7 @@ import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
 import org.jclouds.googlecomputeengine.domain.Image;
 import org.jclouds.googlecomputeengine.domain.Instance;
 import org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk;
+import org.jclouds.googlecomputeengine.domain.Instance.Scheduling;
 import org.jclouds.googlecomputeengine.domain.Metadata;
 import org.jclouds.googlecomputeengine.domain.NewInstance;
 import org.jclouds.googlecomputeengine.domain.AttachDisk;
@@ -119,7 +120,7 @@ public class InstanceApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
    }
 
    @Test(groups = "live", dependsOnMethods = "testInsertInstance")
-   public void testSetDiskAutoDelete(){
+   public void testSetDiskAutoDelete() {
 
       assertTrue(existsDiskWithNameAndAutoDelete(INSTANCE_NAME, 
DEFAULT_BOOT_DISK_NAME, true));
 
@@ -134,6 +135,19 @@ public class InstanceApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
       assertTrue(existsDiskWithNameAndAutoDelete(INSTANCE_NAME, 
DEFAULT_BOOT_DISK_NAME, true));
    }
 
+   @Test(groups = "live", dependsOnMethods = "testInsertInstance")
+   public void testSetScheduling() {
+      Instance instance = api().get(INSTANCE_NAME);
+      assertEquals(instance.scheduling().automaticRestart(), true);
+      assertEquals(instance.scheduling().onHostMaintenance(), 
Scheduling.OnHostMaintenance.MIGRATE);
+
+      assertOperationDoneSuccessfully(api().setScheduling(INSTANCE_NAME, 
Scheduling.OnHostMaintenance.TERMINATE, false));
+
+      Instance instanceAltered = api().get(INSTANCE_NAME);
+      assertEquals(instanceAltered.scheduling().automaticRestart(), false);
+      assertEquals(instanceAltered.scheduling().onHostMaintenance(), 
Scheduling.OnHostMaintenance.TERMINATE);
+   }
+
    private boolean existsDiskWithNameAndAutoDelete(String instanceName, final 
String diskName, final boolean autoDelete){
       Instance revertedInstance = api().get(instanceName);
 
@@ -229,7 +243,7 @@ public class InstanceApiLiveTest extends 
BaseGoogleComputeEngineApiLiveTest {
       assertOperationDoneSuccessfully(api().reset(INSTANCE_NAME));
    }
 
-   @Test(groups = "live", dependsOnMethods = {"testSetDiskAutoDelete", 
"testResetInstance"}, alwaysRun = true)
+   @Test(groups = "live", dependsOnMethods = {"testSetDiskAutoDelete", 
"testResetInstance", "testSetScheduling"}, alwaysRun = true)
    public void testDeleteInstance() {
       assertOperationDoneSuccessfully(api().delete(INSTANCE_NAME));
       assertOperationDoneSuccessfully(diskApi().delete(DISK_NAME));

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiMockTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiMockTest.java
index 369bced..56cc5f9 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiMockTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/features/InstanceApiMockTest.java
@@ -19,6 +19,7 @@ package org.jclouds.googlecomputeengine.features;
 import static org.testng.Assert.assertEquals;
 
 import org.jclouds.googlecomputeengine.domain.Operation;
+import 
org.jclouds.googlecomputeengine.domain.Instance.Scheduling.OnHostMaintenance;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineApiMockTest;
 import org.jclouds.googlecomputeengine.parse.ParseZoneOperationTest;
 import org.testng.annotations.Test;
@@ -39,4 +40,16 @@ public class InstanceApiMockTest extends 
BaseGoogleComputeEngineApiMockTest {
       assertSent(server, "POST", 
"/projects/party/zones/us-central1-a/instances/test-1/setDiskAutoDelete"
           + "?deviceName=test-disk-1&autoDelete=true");
    }
+
+   public void setScheduling() throws Exception {
+      server.enqueue(jsonResponse("/zone_operation.json"));
+
+      InstanceApi instanceApi = api().instancesInZone("us-central1-a");
+
+      assertEquals(instanceApi.setScheduling("test-1", 
OnHostMaintenance.TERMINATE, true),
+            new ParseZoneOperationTest().expected(url("/projects")));
+
+      assertSent(server, "POST", 
"/projects/party/zones/us-central1-a/instances/test-1/setScheduling",
+            "{\"onHostMaintenance\": \"TERMINATE\",\"automaticRestart\": 
true}");
+   }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
index 8d92d9b..e34c149 100644
--- 
a/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
+++ 
b/google-compute-engine/src/test/java/org/jclouds/googlecomputeengine/parse/ParseInstanceTest.java
@@ -26,6 +26,7 @@ import org.jclouds.googlecomputeengine.domain.Instance;
 import org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk;
 import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface;
 import org.jclouds.googlecomputeengine.domain.Instance.ServiceAccount;
+import 
org.jclouds.googlecomputeengine.domain.Instance.Scheduling.OnHostMaintenance;
 import org.jclouds.googlecomputeengine.domain.Metadata;
 import org.jclouds.googlecomputeengine.domain.Tags;
 import 
org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
@@ -72,7 +73,8 @@ public class ParseInstanceTest extends 
BaseGoogleComputeEngineParseTest<Instance
                     .put("aKey", "aValue")
                     .put("jclouds-image", BASE_URL + 
"/debian-cloud/global/images/debian-7-wheezy-v20140718")
                     .put("jclouds-delete-boot-disk", "true"), // metadata
-            ImmutableList.of(ServiceAccount.create("default", 
ImmutableList.of("myscope"))) // serviceAccounts
+            ImmutableList.of(ServiceAccount.create("default", 
ImmutableList.of("myscope"))), // serviceAccounts
+            Instance.Scheduling.create(OnHostMaintenance.MIGRATE, false) // 
scheduling
       );
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/aggregated_instance_list.json
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/resources/aggregated_instance_list.json 
b/google-compute-engine/src/test/resources/aggregated_instance_list.json
index a1b31ac..d50f1c5 100644
--- a/google-compute-engine/src/test/resources/aggregated_instance_list.json
+++ b/google-compute-engine/src/test/resources/aggregated_instance_list.json
@@ -138,6 +138,10 @@
                "Group-port-42"
             ],
             "fingerprint": "abcd"
+         },
+        "scheduling": {
+            "onHostMaintenance": "MIGRATE",
+            "automaticRestart": false
          }
       }
    ]

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/firewall_insert_2.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/firewall_insert_2.json 
b/google-compute-engine/src/test/resources/firewall_insert_2.json
new file mode 100644
index 0000000..485721e
--- /dev/null
+++ b/google-compute-engine/src/test/resources/firewall_insert_2.json
@@ -0,0 +1,28 @@
+{
+  "name": "jclouds-test-port-22",
+  "network": 
"https://www.googleapis.com/compute/v1/projects/party/networks/jclouds-test";,
+  "sourceRanges": [
+    "10.0.0.0/8",
+    "0.0.0.0/0"
+  ],
+  "sourceTags": [
+    "aTag"
+  ],
+  "targetTags": [
+    "jclouds-test-port-22"
+  ],
+  "allowed": [
+    {
+      "IPProtocol": "tcp",
+      "ports": [
+        "22"
+      ]
+    },
+    {
+      "IPProtocol": "udp",
+      "ports": [
+        "22"
+      ]
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/instance_get.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/instance_get.json 
b/google-compute-engine/src/test/resources/instance_get.json
index e8fac93..984db08 100644
--- a/google-compute-engine/src/test/resources/instance_get.json
+++ b/google-compute-engine/src/test/resources/instance_get.json
@@ -59,5 +59,9 @@
          "Group-port-42"
       ],
       "fingerprint": "abcd"
+   },
+    "scheduling": {
+        "onHostMaintenance": "MIGRATE",
+        "automaticRestart": false
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/instance_insert.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/instance_insert.json 
b/google-compute-engine/src/test/resources/instance_insert.json
index 2ce8f0b..b26eb06 100644
--- a/google-compute-engine/src/test/resources/instance_insert.json
+++ b/google-compute-engine/src/test/resources/instance_insert.json
@@ -1 +1,32 @@
-{"machineType":"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/machineTypes/n1-standard-1","name":"test-1","networkInterfaces":[{"network":"https://www.googleapis.com/compute/v1/projects/party/global/networks/default","accessConfigs":["ONE_TO_ONE_NAT"]}],"disks":[{"type":"PERSISTENT","source":"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/disks/test","boot":true,"autoDelete":false}],"description":"desc","tags":{"items":[]},"metadata":{"items":[{"key":"aKey","value":"aValue"}]}}
+{
+  "machineType": 
"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/machineTypes/n1-standard-1";,
+  "name": "test-1",
+  "networkInterfaces": [
+    {
+      "network": 
"https://www.googleapis.com/compute/v1/projects/party/global/networks/default";,
+      "accessConfigs": [
+        "ONE_TO_ONE_NAT"
+      ]
+    }
+  ],
+  "disks": [
+    {
+      "type": "PERSISTENT",
+      "source": 
"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/disks/test";,
+      "boot": true,
+      "autoDelete": false
+    }
+  ],
+  "description": "desc",
+  "tags": {
+    "items": []
+  },
+  "metadata": {
+    "items": [
+      {
+        "key": "aKey",
+        "value": "aValue"
+      }
+    ]
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/instance_insert_2.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/instance_insert_2.json 
b/google-compute-engine/src/test/resources/instance_insert_2.json
new file mode 100644
index 0000000..99adbfe
--- /dev/null
+++ b/google-compute-engine/src/test/resources/instance_insert_2.json
@@ -0,0 +1,37 @@
+{
+  "machineType": "%s",
+  "name": "test-1",
+  "networkInterfaces": [
+    {
+      "network": 
"https://www.googleapis.com/compute/v1/projects/party/networks/jclouds-test";,
+      "accessConfigs": [
+        "ONE_TO_ONE_NAT"
+      ]
+    }
+  ],
+  "disks": [
+    {
+      "type": "PERSISTENT",
+      "initializeParams": {
+        "sourceImage": "%s"
+      },
+      "boot": true,
+      "autoDelete": true
+    }
+  ],
+  "description": "test",
+  "tags": {
+    "items": [
+      "aTag",
+      "jclouds-test-port-22"
+    ]
+  },
+  "metadata": {
+    "items": [
+      {
+        "key": "jclouds-group",
+        "value": "test"
+      }
+    ]
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/instance_insert_simple.json
----------------------------------------------------------------------
diff --git 
a/google-compute-engine/src/test/resources/instance_insert_simple.json 
b/google-compute-engine/src/test/resources/instance_insert_simple.json
index 9a8266a..c140522 100644
--- a/google-compute-engine/src/test/resources/instance_insert_simple.json
+++ b/google-compute-engine/src/test/resources/instance_insert_simple.json
@@ -1 +1,28 @@
-{"name":"test-1","machineType":"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/machineTypes/n1-standard-1","networkInterfaces":[{"network":"https://www.googleapis.com/compute/v1/projects/party/global/networks/default","accessConfigs":["ONE_TO_ONE_NAT"]}],"disks":[{"type":"PERSISTENT","initializeParams":{"sourceImage":"https://www.googleapis.com/compute/v1/projects/party/global/images/centos-6-2-v20120326"},"boot":true,"autoDelete":true}],"tags":{"items":[]},"metadata":{"items":[]}}
+{
+  "name": "test-1",
+  "machineType": 
"https://www.googleapis.com/compute/v1/projects/party/zones/us-central1-a/machineTypes/n1-standard-1";,
+  "networkInterfaces": [
+    {
+      "network": 
"https://www.googleapis.com/compute/v1/projects/party/global/networks/default";,
+      "accessConfigs": [
+        "ONE_TO_ONE_NAT"
+      ]
+    }
+  ],
+  "disks": [
+    {
+      "type": "PERSISTENT",
+      "initializeParams": {
+        "sourceImage": 
"https://www.googleapis.com/compute/v1/projects/party/global/images/centos-6-2-v20120326";
+      },
+      "boot": true,
+      "autoDelete": true
+    }
+  ],
+  "tags": {
+    "items": []
+  },
+  "metadata": {
+    "items": []
+  }
+}

http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/c2fd429d/google-compute-engine/src/test/resources/instance_list.json
----------------------------------------------------------------------
diff --git a/google-compute-engine/src/test/resources/instance_list.json 
b/google-compute-engine/src/test/resources/instance_list.json
index 7a35c25..47040e2 100644
--- a/google-compute-engine/src/test/resources/instance_list.json
+++ b/google-compute-engine/src/test/resources/instance_list.json
@@ -64,6 +64,10 @@
                "Group-port-42"
             ],
             "fingerprint": "abcd"
+         },
+         "scheduling": {
+            "onHostMaintenance": "MIGRATE",
+            "automaticRestart": false
          }
       }
    ]

Reply via email to