added CreationTimestamp to HttpHealthCheck and TargetPool + refactor Warning

This commit is contained in:
Daniel Broudy 2014-12-09 13:46:07 -08:00 committed by Ignasi Barrera
parent dd5c4c5c6b
commit f81e44ceb2
21 changed files with 229 additions and 139 deletions

View File

@ -17,6 +17,7 @@
package org.jclouds.googlecomputeengine.domain; package org.jclouds.googlecomputeengine.domain;
import java.net.URI; import java.net.URI;
import java.util.Date;
import org.jclouds.javax.annotation.Nullable; import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames; import org.jclouds.json.SerializedNames;
@ -30,6 +31,8 @@ public abstract class HttpHealthCheck {
public abstract URI selfLink(); public abstract URI selfLink();
public abstract Date creationTimestamp();
public abstract String name(); public abstract String name();
@Nullable public abstract String description(); @Nullable public abstract String description();
@ -58,12 +61,12 @@ public abstract class HttpHealthCheck {
@Nullable public abstract Integer healthyThreshold(); @Nullable public abstract Integer healthyThreshold();
@SerializedNames( @SerializedNames(
{ "id", "selfLink", "name", "description", "host", "requestPath", "port", "checkIntervalSec", "timeoutSec", { "id", "selfLink", "creationTimestamp", "name", "description", "host", "requestPath", "port", "checkIntervalSec", "timeoutSec",
"unhealthyThreshold", "healthyThreshold" }) "unhealthyThreshold", "healthyThreshold" })
public static HttpHealthCheck create(String id, URI selfLink, String name, String description, String host, public static HttpHealthCheck create(String id, URI selfLink, Date creationTimestamp, String name, String description, String host,
String requestPath, Integer port, Integer checkIntervalSec, Integer timeoutSec, Integer unhealthyThreshold, String requestPath, Integer port, Integer checkIntervalSec, Integer timeoutSec, Integer unhealthyThreshold,
Integer healthyThreshold) { Integer healthyThreshold) {
return new AutoValue_HttpHealthCheck(id, selfLink, name, description, host, return new AutoValue_HttpHealthCheck(id, selfLink, creationTimestamp, name, description, host,
requestPath, port, checkIntervalSec, timeoutSec, unhealthyThreshold, healthyThreshold); requestPath, port, checkIntervalSec, timeoutSec, unhealthyThreshold, healthyThreshold);
} }

View File

@ -0,0 +1,37 @@
/*
* 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.domain;
import org.jclouds.json.SerializedNames;
import com.google.auto.value.AutoValue;
@AutoValue
public abstract class KeyValuePair {
public abstract String key();
public abstract String value();
@SerializedNames({ "key", "value" })
public static KeyValuePair create(String key, String value) {
return new AutoValue_KeyValuePair(key, value);
}
KeyValuePair(){
}
}

View File

@ -33,25 +33,13 @@ import com.google.auto.value.AutoValue;
@AutoValue @AutoValue
public abstract class Metadata implements Cloneable { public abstract class Metadata implements Cloneable {
@AutoValue
public abstract static class Entry {
abstract String key();
abstract String value();
@SerializedNames({ "key", "value" })
public static Entry create(String key, String value) {
return new AutoValue_Metadata_Entry(key, value);
}
}
/** The fingerprint for the items - needed for updating them. */ /** The fingerprint for the items - needed for updating them. */
@Nullable public abstract String fingerprint(); @Nullable public abstract String fingerprint();
/** Adds or replaces a metadata entry. */ /** Adds or replaces a metadata entry. */
public Metadata put(String key, String value) { public Metadata put(String key, String value) {
remove(key); remove(key);
items().add(Entry.create(key, value)); items().add(KeyValuePair.create(key, value));
return this; return this;
} }
@ -77,9 +65,9 @@ public abstract class Metadata implements Cloneable {
/** Copies the metadata into a new mutable map. */ /** Copies the metadata into a new mutable map. */
public Map<String, String> asMap() { public Map<String, String> asMap() {
Map<String, String> result = new LinkedHashMap<String, String>(); Map<String, String> result = new LinkedHashMap<String, String>();
ArrayList<Entry> items = items(); ArrayList<KeyValuePair> items = items();
for (int i = 0, length = items.size(); i < length; i++) { for (int i = 0, length = items.size(); i < length; i++) {
Entry item = items.get(i); KeyValuePair item = items.get(i);
result.put(item.key(), item.value()); result.put(item.key(), item.value());
} }
return result; return result;
@ -87,9 +75,9 @@ public abstract class Metadata implements Cloneable {
/** Returns the value with the supplied key, or null. */ /** Returns the value with the supplied key, or null. */
@Nullable public String get(String key) { @Nullable public String get(String key) {
ArrayList<Entry> items = items(); ArrayList<KeyValuePair> items = items();
for (int i = 0, length = items.size(); i < length; i++) { for (int i = 0, length = items.size(); i < length; i++) {
Entry item = items.get(i); KeyValuePair item = items.get(i);
if (item.key().equals(key)) { if (item.key().equals(key)) {
return item.value(); return item.value();
} }
@ -106,7 +94,7 @@ public abstract class Metadata implements Cloneable {
} }
/** Mutable list of metadata. */ /** Mutable list of metadata. */
abstract ArrayList<Entry> items(); abstract ArrayList<KeyValuePair> items();
public static Metadata create() { public static Metadata create() {
return Metadata.create(null, null); return Metadata.create(null, null);
@ -117,14 +105,14 @@ public abstract class Metadata implements Cloneable {
} }
@SerializedNames({ "fingerprint", "items" }) @SerializedNames({ "fingerprint", "items" })
static Metadata create(String fingerprint, ArrayList<Entry> items) { // Dictates the type when created from json! static Metadata create(String fingerprint, ArrayList<KeyValuePair> items) { // Dictates the type when created from json!
return new AutoValue_Metadata(fingerprint, items != null ? items : new ArrayList<Entry>()); return new AutoValue_Metadata(fingerprint, items != null ? items : new ArrayList<KeyValuePair>());
} }
Metadata() { Metadata() {
} }
@Override public Metadata clone() { @Override public Metadata clone() {
return Metadata.create(fingerprint(), new ArrayList<Entry>(items())); return Metadata.create(fingerprint(), new ArrayList<KeyValuePair>(items()));
} }
} }

View File

@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import org.jclouds.googlecomputeengine.domain.Metadata.Entry;
import org.jclouds.javax.annotation.Nullable; import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames; import org.jclouds.json.SerializedNames;
@ -68,38 +67,6 @@ public abstract class Operation {
} }
} }
@AutoValue
public abstract static class Warning {
// TODO: combine this with Metadata.Entry
@AutoValue
public abstract static class Entry {
abstract String key();
abstract String value();
@SerializedNames({ "key", "value" })
public static Entry create(String key, String value) {
return new AutoValue_Operation_Warning_Entry(key, value);
}
Entry(){
}
}
public abstract String code();
@Nullable public abstract String message();
public abstract List<Entry> data();
@SerializedNames({"code", "message", "data"})
public static Warning create(String code, String message, List<Entry> data){
return new AutoValue_Operation_Warning(code, message, data);
}
Warning() {
}
}
public static enum Status { public static enum Status {
PENDING, PENDING,
RUNNING, RUNNING,

View File

@ -30,24 +30,6 @@ import com.google.auto.value.AutoValue;
@AutoValue @AutoValue
public abstract class Route { public abstract class Route {
@AutoValue
public abstract static class Warning {
public abstract String code(); // TODO: enum
// TODO: create common Warning resource.
@Nullable public abstract String message();
public abstract List<Metadata.Entry> data();
@SerializedNames({ "code", "message", "data" })
public static Warning create(String code, String message, List<Metadata.Entry> data) {
return new AutoValue_Route_Warning(code, message, copyOf(data));
}
Warning() {
}
}
public abstract String id(); public abstract String id();
public abstract Date creationTimestamp(); public abstract Date creationTimestamp();
@ -88,14 +70,17 @@ public abstract class Route {
/** Potential misconfigurations are detected for this route. */ /** Potential misconfigurations are detected for this route. */
public abstract List<Warning> warnings(); public abstract List<Warning> warnings();
/** The URL to a VpnTunnel that should handle matching packets. */
@Nullable public abstract URI nextHopVpnTunnel();
@SerializedNames( @SerializedNames(
{ "id", "creationTimestamp", "selfLink", "name", "description", "network", "tags", "destRange", "priority", "nextHopInstance", { "id", "creationTimestamp", "selfLink", "name", "description", "network", "tags", "destRange", "priority", "nextHopInstance",
"nextHopIp", "nextHopNetwork", "nextHopGateway", "warnings" }) "nextHopIp", "nextHopNetwork", "nextHopGateway", "warnings", "nextHopVpnTunnel" })
public static Route create(String id, Date creationTimestamp, URI selfLink, String name, String description, URI network, List<String> tags, public static Route create(String id, Date creationTimestamp, URI selfLink, String name, String description, URI network, List<String> tags,
String destRange, int priority, URI nextHopInstance, String nextHopIp, URI nextHopNetwork, URI nextHopGateway, String destRange, int priority, URI nextHopInstance, String nextHopIp, URI nextHopNetwork, URI nextHopGateway,
List<Warning> warnings) { List<Warning> warnings, URI nextHopVpnTunnel) {
return new AutoValue_Route(id, creationTimestamp, selfLink, name, description, network, copyOf(tags), destRange, priority, return new AutoValue_Route(id, creationTimestamp, selfLink, name, description, network, copyOf(tags), destRange, priority,
nextHopInstance, nextHopIp, nextHopNetwork, nextHopGateway, copyOf(warnings)); nextHopInstance, nextHopIp, nextHopNetwork, nextHopGateway, copyOf(warnings), nextHopVpnTunnel);
} }
Route() { Route() {

View File

@ -19,6 +19,7 @@ package org.jclouds.googlecomputeengine.domain;
import static org.jclouds.googlecloud.internal.NullSafeCopies.copyOf; import static org.jclouds.googlecloud.internal.NullSafeCopies.copyOf;
import java.net.URI; import java.net.URI;
import java.util.Date;
import java.util.List; import java.util.List;
import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions.SessionAffinityValue; import org.jclouds.googlecomputeengine.options.TargetPoolCreationOptions.SessionAffinityValue;
@ -34,6 +35,8 @@ public abstract class TargetPool {
public abstract URI selfLink(); public abstract URI selfLink();
public abstract Date creationTimestamp();
public abstract String name(); public abstract String name();
@Nullable public abstract String description(); @Nullable public abstract String description();
@ -83,12 +86,12 @@ public abstract class TargetPool {
*/ */
@Nullable public abstract URI backupPool(); @Nullable public abstract URI backupPool();
@SerializedNames({ "id", "selfLink", "name", "description", "region", "healthChecks", "instances", "sessionAffinity", @SerializedNames({ "id", "selfLink", "creationTimestamp", "name", "description", "region", "healthChecks", "instances", "sessionAffinity",
"failoverRatio", "backupPool" }) "failoverRatio", "backupPool" })
public static TargetPool create(String id, URI selfLink, String name, String description, URI region, public static TargetPool create(String id, URI selfLink, Date creationTimestamp, String name, String description, URI region,
List<URI> healthChecks, List<URI> instances, SessionAffinityValue sessionAffinity, Float failoverRatio, List<URI> healthChecks, List<URI> instances, SessionAffinityValue sessionAffinity, Float failoverRatio,
URI backupPool) { URI backupPool) {
return new AutoValue_TargetPool(id, selfLink, name, description, region, copyOf(healthChecks), copyOf(instances), return new AutoValue_TargetPool(id, selfLink, creationTimestamp, name, description, region, copyOf(healthChecks), copyOf(instances),
sessionAffinity, failoverRatio, backupPool); sessionAffinity, failoverRatio, backupPool);
} }

View File

@ -0,0 +1,40 @@
/*
* 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.domain;
import java.util.List;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
import com.google.auto.value.AutoValue;
@AutoValue
public abstract class Warning {
public abstract String code();
@Nullable public abstract String message();
public abstract List<KeyValuePair> data();
@SerializedNames({"code", "message", "data"})
public static Warning create(String code, String message, List<KeyValuePair> data){
return new AutoValue_Warning(code, message, data);
}
Warning() {
}
}

View File

@ -119,7 +119,7 @@ public interface InstanceApi {
* you, and look for the status field. * you, and look for the status field.
*/ */
@Named("Instances:deleteAccessConfig") @Named("Instances:deleteAccessConfig")
@DELETE @POST
@Path("/{instance}/deleteAccessConfig") @Path("/{instance}/deleteAccessConfig")
Operation deleteAccessConfigFromNic(@PathParam("instance") String instance, Operation deleteAccessConfigFromNic(@PathParam("instance") String instance,
@QueryParam("accessConfig") String accessConfigName, @QueryParam("accessConfig") String accessConfigName,

View File

@ -34,11 +34,11 @@ public abstract class HttpHealthCheckCreationOptions {
@Nullable public abstract String description(); @Nullable public abstract String description();
static final String DEFAULT_REQUEST_PATH = "/"; static final String DEFAULT_REQUEST_PATH = "/";
static final Integer DEFAULT_PORT = 80; static final int DEFAULT_PORT = 80;
static final Integer DEFAULT_CHECK_INTERVAL_SEC = 5; static final int DEFAULT_CHECK_INTERVAL_SEC = 5;
static final Integer DEFAULT_TIMEOUT_SEC = 5; static final int DEFAULT_TIMEOUT_SEC = 5;
static final Integer DEFAULT_UNHEALTHY_THRESHOLD = 2; static final int DEFAULT_UNHEALTHY_THRESHOLD = 2;
static final Integer DEFAULT_HEALTHY_THRESHOLD = 2; static final int DEFAULT_HEALTHY_THRESHOLD = 2;
/* /*
* Currently GCE is not setting the advertised defaults so we do so here. * Currently GCE is not setting the advertised defaults so we do so here.

View File

@ -37,6 +37,7 @@ public class RouteOptions {
private URI nextHopGateway; private URI nextHopGateway;
private String description; private String description;
private Integer priority; private Integer priority;
private URI nextHopVpnTunnel;
private ImmutableList.Builder<String> tags = ImmutableList.builder(); private ImmutableList.Builder<String> tags = ImmutableList.builder();
@ -115,6 +116,14 @@ public class RouteOptions {
return this; return this;
} }
/**
* @see org.jclouds.googlecomputeengine.domain.Route#getNextHopVpnTunnel()
*/
public RouteOptions nextHopVpnTunnel(URI nextHopVpnTunnel){
this.nextHopVpnTunnel = nextHopVpnTunnel;
return this;
}
/** /**
* @see org.jclouds.googlecomputeengine.domain.Route#getNetwork() * @see org.jclouds.googlecomputeengine.domain.Route#getNetwork()
*/ */
@ -175,6 +184,13 @@ public class RouteOptions {
return nextHopGateway; return nextHopGateway;
} }
/**
* @see org.jclouds.googlecomputeengine.domain.Route#getNextHopVpnTunnel()
*/
public URI getNextHopVpnTunnel() {
return nextHopVpnTunnel;
}
/** /**
* @see org.jclouds.googlecomputeengine.domain.Route#getTags() * @see org.jclouds.googlecomputeengine.domain.Route#getTags()
*/ */

View File

@ -98,6 +98,16 @@ public class ForwardingRuleApiMockTest extends BaseGoogleComputeEngineApiMockTes
stringFromResource("/forwardingrule_set_target.json")); stringFromResource("/forwardingrule_set_target.json"));
} }
public void setTarget_partialUrl() throws Exception {
server.enqueue(jsonResponse("/region_operation.json"));
URI newTarget = URI.create("projects/project-id/regions/region/targetPools/target-pool");
assertEquals(forwardingRuleApi().setTarget("testForwardingRule", newTarget), new ParseRegionOperationTest().expected(url("/projects")));
assertSent(server, "POST", "/projects/party/regions/us-central1/forwardingRules/testForwardingRule/setTarget",
"{\"target\":\"projects/project-id/regions/region/targetPools/target-pool\"}");
}
ForwardingRuleApi forwardingRuleApi() { ForwardingRuleApi forwardingRuleApi() {
return api().forwardingRulesInRegion("us-central1"); return api().forwardingRulesInRegion("us-central1");
} }

View File

@ -32,8 +32,10 @@ import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
import org.jclouds.googlecomputeengine.domain.Image; import org.jclouds.googlecomputeengine.domain.Image;
import org.jclouds.googlecomputeengine.domain.Instance; import org.jclouds.googlecomputeengine.domain.Instance;
import org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk; import org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk;
import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig.Type;
import org.jclouds.googlecomputeengine.domain.Instance.Scheduling; import org.jclouds.googlecomputeengine.domain.Instance.Scheduling;
import org.jclouds.googlecomputeengine.domain.Instance.SerialPortOutput; import org.jclouds.googlecomputeengine.domain.Instance.SerialPortOutput;
import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig;
import org.jclouds.googlecomputeengine.domain.Metadata; import org.jclouds.googlecomputeengine.domain.Metadata;
import org.jclouds.googlecomputeengine.domain.NewInstance; import org.jclouds.googlecomputeengine.domain.NewInstance;
import org.jclouds.googlecomputeengine.domain.AttachDisk; import org.jclouds.googlecomputeengine.domain.AttachDisk;
@ -122,6 +124,24 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
assertInstanceEquals(instance, this.instance); assertInstanceEquals(instance, this.instance);
} }
@Test(groups = "live", dependsOnMethods = "testInsertInstance")
public void testAddAccessConfig() {
AccessConfig config = AccessConfig.create("test-config", Type.ONE_TO_ONE_NAT, null);
assertOperationDoneSuccessfully(api().addAccessConfigToNic(INSTANCE_NAME, config, "nic0"));
Instance instance = api().get(INSTANCE_NAME);
assertNotNull(instance);
assertEquals(instance.networkInterfaces().get(0).accessConfigs().get(0).name(), "test-config");
}
@Test(groups = "live", dependsOnMethods = "testAddAccessConfig")
public void testDeleteAccessConfig() {
Instance instance = api().get(INSTANCE_NAME);
assertOperationDoneSuccessfully(api().deleteAccessConfigFromNic(INSTANCE_NAME, "test-config", "nic0"));
instance = api().get(INSTANCE_NAME);
assertNotNull(instance);
assertTrue(instance.networkInterfaces().get(0).accessConfigs().isEmpty());
}
@Test(groups = "live", dependsOnMethods = "testInsertInstance") @Test(groups = "live", dependsOnMethods = "testInsertInstance")
public void testGetSerialPortOutput() { public void testGetSerialPortOutput() {
SerialPortOutput output = api().getSerialPortOutput(INSTANCE_NAME); SerialPortOutput output = api().getSerialPortOutput(INSTANCE_NAME);
@ -258,7 +278,8 @@ public class InstanceApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
assertOperationDoneSuccessfully(api().reset(INSTANCE_NAME)); assertOperationDoneSuccessfully(api().reset(INSTANCE_NAME));
} }
@Test(groups = "live", dependsOnMethods = {"testSetDiskAutoDelete", "testResetInstance", "testSetScheduling", "testGetInstance", "testGetSerialPortOutput"}, alwaysRun = true) @Test(groups = "live", dependsOnMethods = {"testSetDiskAutoDelete", "testResetInstance", "testSetScheduling",
"testGetInstance", "testGetSerialPortOutput", "testDeleteAccessConfig"}, alwaysRun = true)
public void testDeleteInstance() { public void testDeleteInstance() {
assertOperationDoneSuccessfully(api().delete(INSTANCE_NAME)); assertOperationDoneSuccessfully(api().delete(INSTANCE_NAME));
assertOperationDoneSuccessfully(diskApi().delete(DISK_NAME)); assertOperationDoneSuccessfully(diskApi().delete(DISK_NAME));

View File

@ -119,7 +119,7 @@ public class InstanceApiMockTest extends BaseGoogleComputeEngineApiMockTest {
assertEquals(instanceApi().deleteAccessConfigFromNic("test-instance", "test-access", "test-network"), assertEquals(instanceApi().deleteAccessConfigFromNic("test-instance", "test-access", "test-network"),
new ParseZoneOperationTest().expected(url("/projects"))); new ParseZoneOperationTest().expected(url("/projects")));
assertSent(server, "DELETE", "/projects/party/zones/us-central1-a/instances/test-instance/" assertSent(server, "POST", "/projects/party/zones/us-central1-a/instances/test-instance/"
+ "deleteAccessConfig?accessConfig=test-access&networkInterface=test-network"); + "deleteAccessConfig?accessConfig=test-access&networkInterface=test-network");
} }

View File

@ -50,6 +50,7 @@ public class ParseHttpHealthCheckListTest extends BaseGoogleComputeEngineParseTe
"1035854271083519643", // id "1035854271083519643", // id
URI.create(baseUrl + "/party-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check"), URI.create(baseUrl + "/party-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check"),
// selfLink // selfLink
parse("2014-01-08T14:38:29.363-08:00"),
"myname-andrea-kmzmi1bh-http-health-check", // name "myname-andrea-kmzmi1bh-http-health-check", // name
null, // description null, // description
null, // host null, // host
@ -64,6 +65,7 @@ public class ParseHttpHealthCheckListTest extends BaseGoogleComputeEngineParseTe
"7006563292274658743", // id "7006563292274658743", // id
URI.create(baseUrl + "/party-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check"), URI.create(baseUrl + "/party-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check"),
// selfLink // selfLink
parse("2014-01-08T14:48:03.276-08:00"), // creationTimestamp
"myname-andrea-zk7gadwq-http-health-check", // name "myname-andrea-zk7gadwq-http-health-check", // name
null, // description null, // description
null, // host null, // host

View File

@ -44,15 +44,16 @@ public class ParseHttpHealthCheckTest extends BaseGoogleComputeEngineParseTest<H
return HttpHealthCheck.create( // return HttpHealthCheck.create( //
"2761502483700014319", // id "2761502483700014319", // id
URI.create(baseUrl + "/party-gce/global/httpHealthChecks/http-health-check-api-live-test"), // selfLink URI.create(baseUrl + "/party-gce/global/httpHealthChecks/http-health-check-api-live-test"), // selfLink
parse("2014-01-14T05:55:54.910-08:00"), // creationTimestamp
"http-health-check-api-live-test", // name "http-health-check-api-live-test", // name
null, // description "Test Health Check", // description
null, // host null, // host
null, // requestPath "/", // requestPath
null, // port 80, // port
null, // checkIntervalSec 5, // checkIntervalSec
null, // timeoutSec 5, // timeoutSec
null, // unhealthyThreshold 2, // unhealthyThreshold
null // healthyThreshold 2 // healthyThreshold
); );
} }
} }

View File

@ -22,8 +22,9 @@ import java.net.URI;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import org.jclouds.googlecomputeengine.domain.KeyValuePair;
import org.jclouds.googlecomputeengine.domain.Operation; import org.jclouds.googlecomputeengine.domain.Operation;
import org.jclouds.googlecomputeengine.domain.Operation.Warning; import org.jclouds.googlecomputeengine.domain.Warning;
import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest; import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@ -68,9 +69,8 @@ public class ParseOperationTest extends BaseGoogleComputeEngineParseTest<Operati
"Invalid value for field 'resource.urlMaps': " "Invalid value for field 'resource.urlMaps': "
+ "'projects/party/global/urlMaps/target-http-proxy-api-live-test-url-map-2'." + "'projects/party/global/urlMaps/target-http-proxy-api-live-test-url-map-2'."
+ " Resource was not found."))), // errors + " Resource was not found."))), // errors
ImmutableList.of(Warning ImmutableList.of(Warning.create("NO_RESULTS_ON_PAGE", "This is an example warning",
.create("NO_RESULTS_ON_PAGE", "This is an example warning", ImmutableList.of(KeyValuePair
ImmutableList.of(Warning.Entry
.create("scope", "There are no results for scope 'zones/asia-east1-b' on this page.")))), // warnings .create("scope", "There are no results for scope 'zones/asia-east1-b' on this page.")))), // warnings
URI.create(baseUrl + "/party/regions/us-central1"), // region URI.create(baseUrl + "/party/regions/us-central1"), // region
URI.create(baseUrl + "/party/zones/us-central1-a") // zone URI.create(baseUrl + "/party/zones/us-central1-a") // zone

View File

@ -59,7 +59,8 @@ public class ParseRouteListTest extends BaseGoogleComputeEngineParseTest<ListPag
null, // nextHopIp null, // nextHopIp
null, // nextHopNetwork null, // nextHopNetwork
URI.create(baseUrl + "/party/global/gateways/default-internet-gateway"), // nextHopGateway URI.create(baseUrl + "/party/global/gateways/default-internet-gateway"), // nextHopGateway
null // warnings null, // warnings
null // nextHopVpnTunnel
); );
return ForwardingListPage.create( // return ForwardingListPage.create( //
ImmutableList.of(route1, route2), // items ImmutableList.of(route1, route2), // items

View File

@ -22,9 +22,9 @@ import java.net.URI;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import org.jclouds.googlecomputeengine.domain.Metadata; import org.jclouds.googlecomputeengine.domain.KeyValuePair;
import org.jclouds.googlecomputeengine.domain.Route; import org.jclouds.googlecomputeengine.domain.Route;
import org.jclouds.googlecomputeengine.domain.Route.Warning; import org.jclouds.googlecomputeengine.domain.Warning;
import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest; import org.jclouds.googlecomputeengine.internal.BaseGoogleComputeEngineParseTest;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@ -60,7 +60,8 @@ public class ParseRouteTest extends BaseGoogleComputeEngineParseTest<Route> {
URI.create(baseUrl + "/party/global/networks/default"), // nextHopNetwork URI.create(baseUrl + "/party/global/networks/default"), // nextHopNetwork
null, // nextHopGateway null, // nextHopGateway
ImmutableList.of(Warning.create("NO_RESULTS_ON_PAGE", "This is an example warning", ImmutableList.of( ImmutableList.of(Warning.create("NO_RESULTS_ON_PAGE", "This is an example warning", ImmutableList.of(
Metadata.Entry.create("scope", "There are no results for scope 'zones/asia-east1-b' on this page.")))) // warnings KeyValuePair.create("scope", "There are no results for scope 'zones/asia-east1-b' on this page.")))), // warnings
null // nextHopVpnTunnel
); );
} }
} }

View File

@ -44,6 +44,7 @@ public class ParseTargetPoolTest extends BaseGoogleComputeEngineParseTest<Target
return TargetPool.create( // return TargetPool.create( //
"5199309593612841404", // id "5199309593612841404", // id
URI.create(baseUrl + "/party/regions/us-central1/targetPools/test-targetpool"), // selfLink URI.create(baseUrl + "/party/regions/us-central1/targetPools/test-targetpool"), // selfLink
parse("2014-01-07T05:25:27.783-08:00"), // creationTimestamp
"test-targetpool", // name "test-targetpool", // name
null, // description null, // description
URI.create(baseUrl + "/party/regions/us-central1"), // region URI.create(baseUrl + "/party/regions/us-central1"), // region

View File

@ -1,7 +1,14 @@
{ {
"kind": "compute#httpHealthCheck", "kind": "compute#httpHealthCheck",
"selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/http-health-check-api-live-test", "selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/http-health-check-api-live-test",
"id": "2761502483700014319", "id": "2761502483700014319",
"creationTimestamp": "2014-01-14T05:55:54.910-08:00", "creationTimestamp": "2014-01-14T05:55:54.910-08:00",
"name": "http-health-check-api-live-test" "name": "http-health-check-api-live-test",
"description": "Test Health Check",
"requestPath": "/",
"port": 80,
"checkIntervalSec": 5,
"timeoutSec": 5,
"unhealthyThreshold": 2,
"healthyThreshold": 2
} }

View File

@ -1,32 +1,39 @@
{ {
"kind": "compute#httpHealthCheckList", "kind": "compute#httpHealthCheckList",
"selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks", "selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks",
"id": "projects/party-gce/global/httpHealthChecks", "id": "projects/party-gce/global/httpHealthChecks",
"items": [ "items": [
{ {
"kind": "compute#httpHealthCheck", "kind": "compute#httpHealthCheck",
"selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/http-health-check-api-live-test", "selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/http-health-check-api-live-test",
"id": "2761502483700014319", "id": "2761502483700014319",
"creationTimestamp": "2014-01-14T05:55:54.910-08:00", "creationTimestamp": "2014-01-14T05:55:54.910-08:00",
"name": "http-health-check-api-live-test" "name": "http-health-check-api-live-test",
}, "description": "Test Health Check",
{ "requestPath": "/",
"kind": "compute#httpHealthCheck", "port": 80,
"selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check", "checkIntervalSec": 5,
"id": "1035854271083519643", "timeoutSec": 5,
"creationTimestamp": "2014-01-08T14:38:29.363-08:00", "unhealthyThreshold": 2,
"name": "myname-andrea-kmzmi1bh-http-health-check", "healthyThreshold": 2
"timeoutSec": 5, },
"unhealthyThreshold": 2 {
}, "kind": "compute#httpHealthCheck",
{ "selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/myname-andrea-kmzmi1bh-http-health-check",
"kind": "compute#httpHealthCheck", "id": "1035854271083519643",
"selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check", "creationTimestamp": "2014-01-08T14:38:29.363-08:00",
"id": "7006563292274658743", "name": "myname-andrea-kmzmi1bh-http-health-check",
"creationTimestamp": "2014-01-08T14:48:03.276-08:00", "timeoutSec": 5,
"name": "myname-andrea-zk7gadwq-http-health-check", "unhealthyThreshold": 2
"timeoutSec": 5, },
"unhealthyThreshold": 2 {
} "kind": "compute#httpHealthCheck",
] "selfLink": "https://www.googleapis.com/compute/v1/projects/party-gce/global/httpHealthChecks/myname-andrea-zk7gadwq-http-health-check",
"id": "7006563292274658743",
"creationTimestamp": "2014-01-08T14:48:03.276-08:00",
"name": "myname-andrea-zk7gadwq-http-health-check",
"timeoutSec": 5,
"unhealthyThreshold": 2
}
]
} }