mirror of https://github.com/apache/jclouds.git
stable glesys
This commit is contained in:
parent
8ca0dc3c1d
commit
63f1d334f2
|
@ -36,10 +36,10 @@
|
||||||
<properties>
|
<properties>
|
||||||
<test.glesys.endpoint>https://api.glesys.com</test.glesys.endpoint>
|
<test.glesys.endpoint>https://api.glesys.com</test.glesys.endpoint>
|
||||||
<test.glesys.api-version>1</test.glesys.api-version>
|
<test.glesys.api-version>1</test.glesys.api-version>
|
||||||
<test.glesys.build-version></test.glesys.build-version>
|
<test.glesys.build-version>3.5.0</test.glesys.build-version>
|
||||||
<test.glesys.identity>FIXME</test.glesys.identity>
|
<test.glesys.identity>FIXME</test.glesys.identity>
|
||||||
<test.glesys.credential>FIXME</test.glesys.credential>
|
<test.glesys.credential>FIXME</test.glesys.credential>
|
||||||
<test.glesys.template></test.glesys.template>
|
<test.glesys.template>osFamily=UBUNTU,osVersionMatches=1[012].[01][04],os64Bit=true,minRam=768</test.glesys.template>
|
||||||
<jclouds.osgi.export>org.jclouds.glesys*;version="${project.version}"</jclouds.osgi.export>
|
<jclouds.osgi.export>org.jclouds.glesys*;version="${project.version}"</jclouds.osgi.export>
|
||||||
<jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
|
<jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
|
@ -78,6 +78,7 @@ public class GleSYSApiMetadata extends BaseRestApiMetadata {
|
||||||
.credentialName("API Key")
|
.credentialName("API Key")
|
||||||
.documentation(URI.create("https://customer.glesys.com/api.php"))
|
.documentation(URI.create("https://customer.glesys.com/api.php"))
|
||||||
.version("1")
|
.version("1")
|
||||||
|
.buildVersion("3.5.0")
|
||||||
.defaultEndpoint("https://api.glesys.com")
|
.defaultEndpoint("https://api.glesys.com")
|
||||||
.defaultProperties(GleSYSApiMetadata.defaultProperties())
|
.defaultProperties(GleSYSApiMetadata.defaultProperties())
|
||||||
.view(TypeToken.of(ComputeServiceContext.class))
|
.view(TypeToken.of(ComputeServiceContext.class))
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class GleSYSProviderMetadata extends BaseProviderMetadata {
|
||||||
properties.setProperty(PROPERTY_ZONE + ".Falkenberg." + ISO3166_CODES, "SE-N");
|
properties.setProperty(PROPERTY_ZONE + ".Falkenberg." + ISO3166_CODES, "SE-N");
|
||||||
properties.setProperty(PROPERTY_ZONE + ".New York City." + ISO3166_CODES, "US-NY");
|
properties.setProperty(PROPERTY_ZONE + ".New York City." + ISO3166_CODES, "US-NY");
|
||||||
properties.setProperty(PROPERTY_ZONE + ".Stockholm." + ISO3166_CODES, "SE-AB");
|
properties.setProperty(PROPERTY_ZONE + ".Stockholm." + ISO3166_CODES, "SE-AB");
|
||||||
properties.setProperty(TEMPLATE, "minRam=512,osFamily=UBUNTU,hypervisorMatches=OpenVZ,osVersionMatches=1[012].[01][04],os64Bit=true,locationId=Falkenberg");
|
properties.setProperty(TEMPLATE, "osFamily=UBUNTU,osVersionMatches=1[012].[01][04],os64Bit=true,minRam=768");
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,10 @@ package org.jclouds.glesys.compute;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.jclouds.compute.util.ComputeServiceUtils.metadataAndTagsAsCommaDelimitedValue;
|
||||||
import static org.jclouds.concurrent.FutureIterables.transformParallel;
|
import static org.jclouds.concurrent.FutureIterables.transformParallel;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
@ -47,6 +49,7 @@ import org.jclouds.compute.domain.internal.VolumeImpl;
|
||||||
import org.jclouds.compute.predicates.ImagePredicates;
|
import org.jclouds.compute.predicates.ImagePredicates;
|
||||||
import org.jclouds.compute.reference.ComputeServiceConstants;
|
import org.jclouds.compute.reference.ComputeServiceConstants;
|
||||||
import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts;
|
import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts;
|
||||||
|
import org.jclouds.crypto.CryptoStreams;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.domain.LoginCredentials;
|
import org.jclouds.domain.LoginCredentials;
|
||||||
import org.jclouds.glesys.GleSYSApi;
|
import org.jclouds.glesys.GleSYSApi;
|
||||||
|
@ -64,7 +67,9 @@ import org.jclouds.logging.Logger;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.jclouds.util.Iterables2;
|
import org.jclouds.util.Iterables2;
|
||||||
|
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
@ -115,8 +120,12 @@ public class GleSYSComputeServiceAdapter implements ComputeServiceAdapter<Server
|
||||||
CreateServerOptions createServerOptions = new CreateServerOptions();
|
CreateServerOptions createServerOptions = new CreateServerOptions();
|
||||||
createServerOptions.ip(templateOptions.getIp());
|
createServerOptions.ip(templateOptions.getIp());
|
||||||
|
|
||||||
createServerOptions.description(name); // TODO: add to templateOptions and
|
Map<String, String> md = metadataAndTagsAsCommaDelimitedValue(template.getOptions());
|
||||||
// set if present
|
if (md.size() > 0) {
|
||||||
|
String description = Joiner.on('\n').withKeyValueSeparator("=").join(md);
|
||||||
|
// TODO: get glesys to stop stripping out equals and commas!
|
||||||
|
createServerOptions.description(CryptoStreams.hex(description.getBytes(Charsets.UTF_8)));
|
||||||
|
}
|
||||||
|
|
||||||
ServerSpec.Builder<?> builder = ServerSpec.builder();
|
ServerSpec.Builder<?> builder = ServerSpec.builder();
|
||||||
builder.datacenter(template.getLocation().getId());
|
builder.datacenter(template.getLocation().getId());
|
||||||
|
|
|
@ -19,6 +19,9 @@
|
||||||
package org.jclouds.glesys.compute.functions;
|
package org.jclouds.glesys.compute.functions;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static com.google.common.base.Preconditions.checkState;
|
||||||
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
|
import static org.jclouds.compute.util.ComputeServiceUtils.addMetadataAndParseTagsFromCommaDelimitedValue;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
@ -42,15 +45,18 @@ import org.jclouds.compute.domain.Volume;
|
||||||
import org.jclouds.compute.domain.internal.VolumeImpl;
|
import org.jclouds.compute.domain.internal.VolumeImpl;
|
||||||
import org.jclouds.compute.functions.GroupNamingConvention;
|
import org.jclouds.compute.functions.GroupNamingConvention;
|
||||||
import org.jclouds.compute.reference.ComputeServiceConstants;
|
import org.jclouds.compute.reference.ComputeServiceConstants;
|
||||||
|
import org.jclouds.crypto.CryptoStreams;
|
||||||
import org.jclouds.domain.Location;
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.glesys.domain.Ip;
|
import org.jclouds.glesys.domain.Ip;
|
||||||
import org.jclouds.glesys.domain.ServerDetails;
|
import org.jclouds.glesys.domain.ServerDetails;
|
||||||
import org.jclouds.logging.Logger;
|
import org.jclouds.logging.Logger;
|
||||||
import org.jclouds.util.InetAddresses2.IsPrivateIPAddress;
|
import org.jclouds.util.InetAddresses2.IsPrivateIPAddress;
|
||||||
|
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.base.Supplier;
|
import com.google.common.base.Supplier;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
@ -104,8 +110,15 @@ public class ServerDetailsToNodeMetadata implements Function<ServerDetails, Node
|
||||||
builder.name(from.getHostname());
|
builder.name(from.getHostname());
|
||||||
builder.hostname(from.getHostname());
|
builder.hostname(from.getHostname());
|
||||||
Location location = findLocationForServerDetails.apply(from);
|
Location location = findLocationForServerDetails.apply(from);
|
||||||
assert (location != null) : String.format("no location matched ServerDetails %s", from);
|
checkState(location != null, "no location matched ServerDetails %s", from);
|
||||||
builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getDescription()));
|
builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getHostname()));
|
||||||
|
|
||||||
|
// TODO: get glesys to stop stripping out equals and commas!
|
||||||
|
if (!isNullOrEmpty(from.getDescription()) && from.getDescription().matches("^[0-9A-Fa-f]+$")) {
|
||||||
|
String decoded = new String(CryptoStreams.hex(from.getDescription()), Charsets.UTF_8);
|
||||||
|
addMetadataAndParseTagsFromCommaDelimitedValue(builder,
|
||||||
|
Splitter.on('\n').withKeyValueSeparator("=").split(decoded));
|
||||||
|
}
|
||||||
builder.imageId(from.getTemplateName() + "");
|
builder.imageId(from.getTemplateName() + "");
|
||||||
builder.operatingSystem(parseOperatingSystem(from));
|
builder.operatingSystem(parseOperatingSystem(from));
|
||||||
builder.hardware(new HardwareBuilder().ids(from.getId() + "").ram(from.getMemorySizeMB())
|
builder.hardware(new HardwareBuilder().ids(from.getId() + "").ram(from.getMemorySizeMB())
|
||||||
|
|
|
@ -30,6 +30,7 @@ import org.jclouds.glesys.domain.EmailOverview;
|
||||||
import org.jclouds.glesys.options.CreateAccountOptions;
|
import org.jclouds.glesys.options.CreateAccountOptions;
|
||||||
import org.jclouds.glesys.options.UpdateAccountOptions;
|
import org.jclouds.glesys.options.UpdateAccountOptions;
|
||||||
import org.jclouds.http.filters.BasicAuthentication;
|
import org.jclouds.http.filters.BasicAuthentication;
|
||||||
|
import org.jclouds.http.functions.ReturnTrueOn404;
|
||||||
import org.jclouds.rest.annotations.ExceptionParser;
|
import org.jclouds.rest.annotations.ExceptionParser;
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
import org.jclouds.rest.annotations.SelectJson;
|
import org.jclouds.rest.annotations.SelectJson;
|
||||||
|
@ -121,6 +122,7 @@ public interface EmailAccountAsyncApi {
|
||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/email/delete/format/json")
|
@Path("/email/delete/format/json")
|
||||||
|
@ExceptionParser(ReturnTrueOn404.class)
|
||||||
ListenableFuture<Boolean> delete(@FormParam("email") String accountAddress);
|
ListenableFuture<Boolean> delete(@FormParam("email") String accountAddress);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,10 @@ public class GleSYSTypeAdapters {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Server.State read(JsonReader reader) throws IOException {
|
public Server.State read(JsonReader reader) throws IOException {
|
||||||
|
if (reader.peek() == JsonToken.NULL) {
|
||||||
|
reader.nextNull();
|
||||||
|
return Server.State.UNRECOGNIZED;
|
||||||
|
}
|
||||||
return Server.State.fromValue(reader.nextString());
|
return Server.State.fromValue(reader.nextString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,12 +56,16 @@ public class GleSYSErrorHandler implements HttpErrorHandler {
|
||||||
exception = new AuthorizationException(message, exception);
|
exception = new AuthorizationException(message, exception);
|
||||||
break;
|
break;
|
||||||
case 400:
|
case 400:
|
||||||
if (message.indexOf("Could not find") != -1) {
|
if (message.indexOf("not find") != -1) {
|
||||||
exception = new ResourceNotFoundException(message, exception);
|
exception = new ResourceNotFoundException(message, exception);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 404:
|
case 404:
|
||||||
|
if (message.indexOf("Not supported") != -1) {
|
||||||
|
exception = new UnsupportedOperationException(message, exception);
|
||||||
|
} else {
|
||||||
exception = new ResourceNotFoundException(message, exception);
|
exception = new ResourceNotFoundException(message, exception);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 500:
|
case 500:
|
||||||
if (message.indexOf("Locked") != -1) {
|
if (message.indexOf("Locked") != -1) {
|
||||||
|
|
|
@ -70,8 +70,8 @@ public class GleSYSTemplateBuilderLiveTest extends BaseTemplateBuilderLiveTest {
|
||||||
return input.version.equals("") || input.version.equals("5") || input.version.equals("5.5")
|
return input.version.equals("") || input.version.equals("5") || input.version.equals("5.5")
|
||||||
|| input.version.equals("5.0") || input.version.equals("6.0");
|
|| input.version.equals("5.0") || input.version.equals("6.0");
|
||||||
case WINDOWS:
|
case WINDOWS:
|
||||||
return input.version.equals("") || input.version.equals("2008")
|
return (input.version.equals("") || input.version.equals("2008")
|
||||||
|| (input.version.equals("2008 R2") && input.is64Bit);
|
|| input.version.equals("2008 R2")) && input.is64Bit;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -83,13 +83,13 @@ public class GleSYSTemplateBuilderLiveTest extends BaseTemplateBuilderLiveTest {
|
||||||
@Test
|
@Test
|
||||||
public void testDefaultTemplateBuilder() throws IOException {
|
public void testDefaultTemplateBuilder() throws IOException {
|
||||||
Template defaultTemplate = view.getComputeService().templateBuilder().build();
|
Template defaultTemplate = view.getComputeService().templateBuilder().build();
|
||||||
assertEquals(defaultTemplate.getImage().getId(), "Ubuntu 12.04 LTS 64-bit");
|
assertEquals(defaultTemplate.getImage().getId(), "Ubuntu 12.04 x64");
|
||||||
assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "12.04");
|
assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "12.04");
|
||||||
assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
|
assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
|
||||||
assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.UBUNTU);
|
assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.UBUNTU);
|
||||||
assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
|
assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
|
||||||
assertEquals(defaultTemplate.getHardware().getRam(), 512);
|
assertEquals(defaultTemplate.getHardware().getRam(), 768);
|
||||||
assertEquals(defaultTemplate.getHardware().getHypervisor(), "OpenVZ");
|
assertEquals(defaultTemplate.getHardware().getHypervisor(), "Xen");
|
||||||
assertEquals(getSpace(defaultTemplate.getHardware()), 5.0d);
|
assertEquals(getSpace(defaultTemplate.getHardware()), 5.0d);
|
||||||
assertEquals(defaultTemplate.getHardware().getVolumes().get(0).getType(), Volume.Type.LOCAL);
|
assertEquals(defaultTemplate.getHardware().getVolumes().get(0).getType(), Volume.Type.LOCAL);
|
||||||
// test that we bound the correct templateoptions in guice
|
// test that we bound the correct templateoptions in guice
|
||||||
|
|
|
@ -79,9 +79,9 @@ public class ServerDetailsToNodeMetadataTest extends BaseGleSYSComputeServiceExp
|
||||||
actual.toString(),
|
actual.toString(),
|
||||||
new NodeMetadataBuilder()
|
new NodeMetadataBuilder()
|
||||||
.ids("vz1840356")
|
.ids("vz1840356")
|
||||||
.name("test-email-jclouds")
|
.name("glesys-s")
|
||||||
.hostname("test-email-jclouds")
|
.hostname("glesys-s")
|
||||||
.group("glesys-s")
|
.group("glesys")
|
||||||
.imageId("Ubuntu 10.04 LTS 32-bit")
|
.imageId("Ubuntu 10.04 LTS 32-bit")
|
||||||
.operatingSystem(
|
.operatingSystem(
|
||||||
OperatingSystem.builder().name("Ubuntu 10.04 LTS 32-bit").family(OsFamily.UBUNTU).version("10.04")
|
OperatingSystem.builder().name("Ubuntu 10.04 LTS 32-bit").family(OsFamily.UBUNTU).version("10.04")
|
||||||
|
|
|
@ -29,7 +29,7 @@ import org.jclouds.glesys.domain.ArchiveAllowedArguments;
|
||||||
import org.jclouds.glesys.internal.BaseGleSYSApiLiveTest;
|
import org.jclouds.glesys.internal.BaseGleSYSApiLiveTest;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterClass;
|
import org.testng.annotations.AfterClass;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -42,7 +42,7 @@ import com.google.common.base.Predicate;
|
||||||
@Test(groups = "live", testName = "ArchiveApiLiveTest", singleThreaded = true)
|
@Test(groups = "live", testName = "ArchiveApiLiveTest", singleThreaded = true)
|
||||||
public class ArchiveApiLiveTest extends BaseGleSYSApiLiveTest {
|
public class ArchiveApiLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
|
|
||||||
@BeforeGroups(groups = {"live"})
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
public void setupContext() {
|
public void setupContext() {
|
||||||
super.setupContext();
|
super.setupContext();
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@ import org.jclouds.glesys.internal.BaseGleSYSApiLiveTest;
|
||||||
import org.jclouds.glesys.options.DomainOptions;
|
import org.jclouds.glesys.options.DomainOptions;
|
||||||
import org.jclouds.glesys.options.UpdateRecordOptions;
|
import org.jclouds.glesys.options.UpdateRecordOptions;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterClass;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -46,7 +46,7 @@ import com.google.common.base.Predicate;
|
||||||
public class DomainApiLiveTest extends BaseGleSYSApiLiveTest {
|
public class DomainApiLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
public String testDomain;
|
public String testDomain;
|
||||||
|
|
||||||
@BeforeGroups(groups = {"live"})
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
public void setupContext() {
|
public void setupContext() {
|
||||||
super.setupContext();
|
super.setupContext();
|
||||||
testDomain = identity.toLowerCase() + "-domain.jclouds.org";
|
testDomain = identity.toLowerCase() + "-domain.jclouds.org";
|
||||||
|
@ -72,7 +72,7 @@ public class DomainApiLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
createDomain(testDomain);
|
createDomain(testDomain);
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterGroups(groups = {"live"})
|
@AfterClass(groups = { "integration", "live" })
|
||||||
public void tearDownContext() {
|
public void tearDownContext() {
|
||||||
int before = api.list().size();
|
int before = api.list().size();
|
||||||
api.delete(testDomain);
|
api.delete(testDomain);
|
||||||
|
|
|
@ -255,8 +255,7 @@ public class EmailAccountApiExpectTest extends BaseGleSYSApiExpectTest {
|
||||||
api.delete("test2@jclouds.org");
|
api.delete("test2@jclouds.org");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
public void testDeleteWhenResponseIs4xxOk() throws Exception {
|
||||||
public void testDeleteWhenResponseIs4xxThrows() throws Exception {
|
|
||||||
EmailAccountApi api = requestSendsResponse(
|
EmailAccountApi api = requestSendsResponse(
|
||||||
HttpRequest.builder().method("POST").endpoint("https://api.glesys.com/email/delete/format/json")
|
HttpRequest.builder().method("POST").endpoint("https://api.glesys.com/email/delete/format/json")
|
||||||
.addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==")
|
.addHeader("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==")
|
||||||
|
|
|
@ -29,12 +29,12 @@ import org.jclouds.glesys.domain.EmailAccount;
|
||||||
import org.jclouds.glesys.domain.EmailAlias;
|
import org.jclouds.glesys.domain.EmailAlias;
|
||||||
import org.jclouds.glesys.domain.EmailOverview;
|
import org.jclouds.glesys.domain.EmailOverview;
|
||||||
import org.jclouds.glesys.domain.EmailOverviewDomain;
|
import org.jclouds.glesys.domain.EmailOverviewDomain;
|
||||||
import org.jclouds.glesys.internal.BaseGleSYSApiWithAServerLiveTest;
|
import org.jclouds.glesys.internal.BaseGleSYSApiLiveTest;
|
||||||
import org.jclouds.glesys.options.CreateAccountOptions;
|
import org.jclouds.glesys.options.CreateAccountOptions;
|
||||||
import org.jclouds.glesys.options.UpdateAccountOptions;
|
import org.jclouds.glesys.options.UpdateAccountOptions;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterClass;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -47,17 +47,22 @@ import com.google.common.collect.Iterables;
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
*/
|
*/
|
||||||
@Test(groups = "live", testName = "EmailAccountApiLiveTest", singleThreaded = true)
|
@Test(groups = "live", testName = "EmailAccountApiLiveTest", singleThreaded = true)
|
||||||
public class EmailAccountApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
public class EmailAccountApiLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
|
public EmailAccountApiLiveTest() {
|
||||||
|
hostName = hostName + "-email";
|
||||||
|
}
|
||||||
|
|
||||||
@BeforeGroups(groups = {"live"})
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
public void setupDomains() {
|
@Override
|
||||||
testDomain = identity + ".test.jclouds.org";
|
public void setupContext() {
|
||||||
|
super.setupContext();
|
||||||
|
testDomain = hostName + ".test.jclouds.org";
|
||||||
api = gleContext.getApi().getEmailAccountApi();
|
api = gleContext.getApi().getEmailAccountApi();
|
||||||
|
deleteAll();
|
||||||
|
|
||||||
createDomain(testDomain);
|
createDomain(testDomain);
|
||||||
|
|
||||||
emailAccountCounter = new RetryablePredicate<Integer>(
|
emailAccountCounter = new RetryablePredicate<Integer>(new Predicate<Integer>() {
|
||||||
new Predicate<Integer>() {
|
|
||||||
public boolean apply(Integer value) {
|
public boolean apply(Integer value) {
|
||||||
return api.listDomain(testDomain).size() == value;
|
return api.listDomain(testDomain).size() == value;
|
||||||
}
|
}
|
||||||
|
@ -65,18 +70,18 @@ public class EmailAccountApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
|
|
||||||
assertTrue(emailAccountCounter.apply(0));
|
assertTrue(emailAccountCounter.apply(0));
|
||||||
|
|
||||||
try {
|
|
||||||
api.delete("test2@" + testDomain);
|
|
||||||
} catch(Exception e) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterGroups(groups = {"live"})
|
@AfterClass(groups = { "integration", "live" })
|
||||||
public void tearDownDomains() {
|
@Override
|
||||||
|
public void tearDownContext() {
|
||||||
|
deleteAll();
|
||||||
|
super.tearDownContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteAll() {
|
||||||
api.delete("test@" + testDomain);
|
api.delete("test@" + testDomain);
|
||||||
api.delete("test1@" + testDomain);
|
api.delete("test1@" + testDomain);
|
||||||
assertTrue(emailAccountCounter.apply(0));
|
|
||||||
gleContext.getApi().getEmailAccountApi().delete(testDomain);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmailAccountApi api;
|
private EmailAccountApi api;
|
||||||
|
@ -85,8 +90,8 @@ public class EmailAccountApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateEmail() {
|
public void testCreateEmail() {
|
||||||
api.createWithPassword("test@" + testDomain, "password",
|
api.createWithPassword("test@" + testDomain, "password", CreateAccountOptions.Builder.antiVirus(true)
|
||||||
CreateAccountOptions.Builder.antiVirus(true).autorespond(true).autorespondMessage("out of office"));
|
.autorespond(true).autorespondMessage("out of office"));
|
||||||
|
|
||||||
assertTrue(emailAccountCounter.apply(1));
|
assertTrue(emailAccountCounter.apply(1));
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,8 @@ import java.util.Set;
|
||||||
import org.jclouds.glesys.domain.IpDetails;
|
import org.jclouds.glesys.domain.IpDetails;
|
||||||
import org.jclouds.glesys.internal.BaseGleSYSApiWithAServerLiveTest;
|
import org.jclouds.glesys.internal.BaseGleSYSApiWithAServerLiveTest;
|
||||||
import org.jclouds.glesys.options.ListIpOptions;
|
import org.jclouds.glesys.options.ListIpOptions;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterClass;
|
||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.collect.FluentIterable;
|
import com.google.common.collect.FluentIterable;
|
||||||
|
@ -44,17 +44,24 @@ import com.google.common.collect.Sets;
|
||||||
*/
|
*/
|
||||||
@Test(groups = "live", testName = "IpApiLiveTest", singleThreaded = true)
|
@Test(groups = "live", testName = "IpApiLiveTest", singleThreaded = true)
|
||||||
public class IpApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
public class IpApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
|
public IpApiLiveTest() {
|
||||||
|
hostName = hostName + "-ip";
|
||||||
|
}
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
public void setupApi() {
|
@Override
|
||||||
|
public void setupContext() {
|
||||||
|
super.setupContext();
|
||||||
api = gleContext.getApi().getIpApi();
|
api = gleContext.getApi().getIpApi();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterGroups(groups = {"live"})
|
@AfterClass(groups = { "integration", "live" })
|
||||||
public void releaseIp() {
|
@Override
|
||||||
|
public void tearDownContext() {
|
||||||
if (reservedIp != null) {
|
if (reservedIp != null) {
|
||||||
api.release(reservedIp.getAddress());
|
api.release(reservedIp.getAddress());
|
||||||
}
|
}
|
||||||
|
super.tearDownContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IpApi api;
|
private IpApi api;
|
||||||
|
@ -185,7 +192,6 @@ public class IpApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
assertNull(removed.getServerId());
|
assertNull(removed.getServerId());
|
||||||
assertFalse(removed.isReserved());
|
assertFalse(removed.isReserved());
|
||||||
|
|
||||||
|
|
||||||
// reserve an address again!
|
// reserve an address again!
|
||||||
reserveIp();
|
reserveIp();
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ public class ServerApiExpectTest extends BaseGleSYSApiExpectTest {
|
||||||
public static ServerDetails expectedServerDetails() {
|
public static ServerDetails expectedServerDetails() {
|
||||||
Ip ip = Ip.builder().version4().ip("31.192.231.254").version4().cost(2.0).currency("EUR").build();
|
Ip ip = Ip.builder().version4().ip("31.192.231.254").version4().cost(2.0).currency("EUR").build();
|
||||||
Cost cost = Cost.builder().amount(10.22).currency("EUR").timePeriod("month").build();
|
Cost cost = Cost.builder().amount(10.22).currency("EUR").timePeriod("month").build();
|
||||||
return ServerDetails.builder().id("vz1840356").transferGB(50).hostname("test-email-jclouds").cpuCores(1).memorySizeMB(512)
|
return ServerDetails.builder().id("vz1840356").transferGB(50).hostname("glesys-s").cpuCores(1).memorySizeMB(512)
|
||||||
.diskSizeGB(5).datacenter("Falkenberg").description("glesys-s-6dd").platform("OpenVZ")
|
.diskSizeGB(5).datacenter("Falkenberg").description("glesys-s-6dd").platform("OpenVZ")
|
||||||
.templateName("Ubuntu 10.04 LTS 32-bit").state(Server.State.RUNNING).cost(cost).ips(ip).build();
|
.templateName("Ubuntu 10.04 LTS 32-bit").state(Server.State.RUNNING).cost(cost).ips(ip).build();
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ import org.jclouds.glesys.options.DestroyServerOptions;
|
||||||
import org.jclouds.glesys.options.ServerStatusOptions;
|
import org.jclouds.glesys.options.ServerStatusOptions;
|
||||||
import org.jclouds.glesys.options.UpdateServerOptions;
|
import org.jclouds.glesys.options.UpdateServerOptions;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@ -57,16 +58,21 @@ import com.google.common.collect.FluentIterable;
|
||||||
public class ServerApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
public class ServerApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
public static final String testHostName2 = "jclouds-test2";
|
public static final String testHostName2 = "jclouds-test2";
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
public void setupApi() {
|
@Override
|
||||||
|
public void setupContext() {
|
||||||
|
hostName = hostName + "-server";
|
||||||
|
super.setupContext();
|
||||||
api = gleContext.getApi().getServerApi();
|
api = gleContext.getApi().getServerApi();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterGroups(groups = {"live"})
|
@AfterClass(groups = { "integration", "live" })
|
||||||
public void deleteExtraServer() {
|
@Override
|
||||||
|
public void tearDownContext() {
|
||||||
if (testServerId2 != null) {
|
if (testServerId2 != null) {
|
||||||
api.destroy(testServerId2, DestroyServerOptions.Builder.discardIp());
|
api.destroy(testServerId2, DestroyServerOptions.Builder.discardIp());
|
||||||
}
|
}
|
||||||
|
super.tearDownContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ServerApi api;
|
private ServerApi api;
|
||||||
|
@ -205,13 +211,20 @@ public class ServerApiLiveTest extends BaseGleSYSApiWithAServerLiveTest {
|
||||||
public void testResourceUsage() throws Exception {
|
public void testResourceUsage() throws Exception {
|
||||||
// test server has only been in existence for less than a minute - check all servers
|
// test server has only been in existence for less than a minute - check all servers
|
||||||
for (Server server : api.list()) {
|
for (Server server : api.list()) {
|
||||||
|
try {
|
||||||
ResourceUsage usage = api.getResourceUsage(server.getId(), "diskioread", "minute");
|
ResourceUsage usage = api.getResourceUsage(server.getId(), "diskioread", "minute");
|
||||||
assertEquals(usage.getInfo().getResource(), "diskioread");
|
assertEquals(usage.getInfo().getResource(), "diskioread");
|
||||||
assertEquals(usage.getInfo().getResolution(), "minute");
|
assertEquals(usage.getInfo().getResolution(), "minute");
|
||||||
|
} catch (UnsupportedOperationException e) {
|
||||||
|
|
||||||
usage = api.getResourceUsage(server.getId(), "cpuusage", "minute");
|
}
|
||||||
|
try {
|
||||||
|
ResourceUsage usage = api.getResourceUsage(server.getId(), "cpuusage", "minute");
|
||||||
assertEquals(usage.getInfo().getResource(), "cpuusage");
|
assertEquals(usage.getInfo().getResource(), "cpuusage");
|
||||||
assertEquals(usage.getInfo().getResolution(), "minute");
|
assertEquals(usage.getInfo().getResolution(), "minute");
|
||||||
|
} catch (UnsupportedOperationException e) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.jclouds.glesys.GleSYSAsyncApi;
|
||||||
import org.jclouds.glesys.features.DomainApi;
|
import org.jclouds.glesys.features.DomainApi;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.jclouds.rest.RestContext;
|
import org.jclouds.rest.RestContext;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -40,6 +40,7 @@ import com.google.common.base.Predicate;
|
||||||
*/
|
*/
|
||||||
@Test(groups = "live")
|
@Test(groups = "live")
|
||||||
public class BaseGleSYSApiLiveTest extends BaseComputeServiceContextLiveTest {
|
public class BaseGleSYSApiLiveTest extends BaseComputeServiceContextLiveTest {
|
||||||
|
protected String hostName = System.getProperty("user.name").replace('.','-').toLowerCase();
|
||||||
|
|
||||||
protected RestContext<GleSYSApi, GleSYSAsyncApi> gleContext;
|
protected RestContext<GleSYSApi, GleSYSAsyncApi> gleContext;
|
||||||
|
|
||||||
|
@ -47,7 +48,7 @@ public class BaseGleSYSApiLiveTest extends BaseComputeServiceContextLiveTest {
|
||||||
provider = "glesys";
|
provider = "glesys";
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeGroups(groups = { "integration", "live" })
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
@Override
|
@Override
|
||||||
public void setupContext() {
|
public void setupContext() {
|
||||||
super.setupContext();
|
super.setupContext();
|
||||||
|
|
|
@ -36,8 +36,8 @@ import org.jclouds.glesys.features.ServerApi;
|
||||||
import org.jclouds.glesys.options.DestroyServerOptions;
|
import org.jclouds.glesys.options.DestroyServerOptions;
|
||||||
import org.jclouds.glesys.options.ServerStatusOptions;
|
import org.jclouds.glesys.options.ServerStatusOptions;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterClass;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -50,25 +50,24 @@ import com.google.common.base.Predicate;
|
||||||
@Test(groups = "live", singleThreaded = true)
|
@Test(groups = "live", singleThreaded = true)
|
||||||
public class BaseGleSYSApiWithAServerLiveTest extends BaseGleSYSApiLiveTest {
|
public class BaseGleSYSApiWithAServerLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
protected String serverId;
|
protected String serverId;
|
||||||
protected String hostName = "test-server-jclouds";
|
|
||||||
protected ServerStatusChecker serverStatusChecker;
|
protected ServerStatusChecker serverStatusChecker;
|
||||||
|
|
||||||
public BaseGleSYSApiWithAServerLiveTest() {
|
public BaseGleSYSApiWithAServerLiveTest() {
|
||||||
provider = "glesys";
|
provider = "glesys";
|
||||||
}
|
}
|
||||||
|
|
||||||
@BeforeGroups(groups = { "integration", "live" })
|
@BeforeClass(groups = { "integration", "live" })
|
||||||
@Override
|
@Override
|
||||||
public final void setupContext() {
|
public void setupContext() {
|
||||||
assertNull(serverId, "This method should be called EXACTLY once per run");
|
assertNull(serverId, "This method should be called EXACTLY once per run");
|
||||||
super.setupContext();
|
super.setupContext();
|
||||||
serverStatusChecker = createServer(hostName);
|
serverStatusChecker = createServer(hostName);
|
||||||
serverId = serverStatusChecker.getServerId();
|
serverId = serverStatusChecker.getServerId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterGroups(groups = {"integration", "live"})
|
@AfterClass(groups = { "integration", "live" })
|
||||||
@Override
|
@Override
|
||||||
public final void tearDownContext() {
|
public void tearDownContext() {
|
||||||
gleContext.getApi().getServerApi().destroy(serverId, DestroyServerOptions.Builder.discardIp());
|
gleContext.getApi().getServerApi().destroy(serverId, DestroyServerOptions.Builder.discardIp());
|
||||||
super.tearDownContext();
|
super.tearDownContext();
|
||||||
}
|
}
|
||||||
|
@ -98,7 +97,7 @@ public class BaseGleSYSApiWithAServerLiveTest extends BaseGleSYSApiLiveTest {
|
||||||
assertEquals(testServer.getHostname(), hostName);
|
assertEquals(testServer.getHostname(), hostName);
|
||||||
assertFalse(testServer.getIps().isEmpty());
|
assertFalse(testServer.getIps().isEmpty());
|
||||||
|
|
||||||
ServerStatusChecker runningServerCounter = new ServerStatusChecker(api, testServer.getId(), 180, 10,
|
ServerStatusChecker runningServerCounter = new ServerStatusChecker(api, testServer.getId(), 300, 10,
|
||||||
TimeUnit.SECONDS);
|
TimeUnit.SECONDS);
|
||||||
|
|
||||||
assertTrue(runningServerCounter.apply(Server.State.RUNNING));
|
assertTrue(runningServerCounter.apply(Server.State.RUNNING));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{"response":{"status":{"code":200,"timestamp":"2012-06-21T14:10:57+02:00","text":"OK"},
|
{"response":{"status":{"code":200,"timestamp":"2012-06-21T14:10:57+02:00","text":"OK"},
|
||||||
"server":{
|
"server":{
|
||||||
"serverid":"vz1840356",
|
"serverid":"vz1840356",
|
||||||
"hostname":"test-email-jclouds",
|
"hostname":"glesys-s",
|
||||||
"description":"glesys-s-6dd",
|
"description":"glesys-s-6dd",
|
||||||
"cpucores":1,
|
"cpucores":1,
|
||||||
"memorysize":512,
|
"memorysize":512,
|
||||||
|
|
Loading…
Reference in New Issue