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 } } ]
