Merge pull request #337 from aplowe/master

GleSYS provider: updates to match GleSYS API Beta v0.1.6
This commit is contained in:
Adrian Cole 2012-01-28 05:52:02 -08:00
commit 8be10543e3
43 changed files with 448 additions and 1823 deletions

View File

@ -20,15 +20,20 @@ package org.jclouds.glesys;
import static org.jclouds.Constants.PROPERTY_API_VERSION; import static org.jclouds.Constants.PROPERTY_API_VERSION;
import static org.jclouds.Constants.PROPERTY_ENDPOINT; import static org.jclouds.Constants.PROPERTY_ENDPOINT;
import static org.jclouds.Constants.PROPERTY_ISO3166_CODES;
import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
import java.util.Properties; import java.util.Properties;
import org.jclouds.PropertiesBuilder; import org.jclouds.PropertiesBuilder;
import static org.jclouds.glesys.reference.GleSYSConstants.PROPERTY_GLESYS_DEFAULT_DC;
/** /**
* Builds properties used in GleSYS Clients * Builds properties used in GleSYS Clients
* *
* @author Adrian Cole * @author Adrian Cole
* @author Adam Lowe
*/ */
public class GleSYSPropertiesBuilder extends PropertiesBuilder { public class GleSYSPropertiesBuilder extends PropertiesBuilder {
@Override @Override
@ -36,6 +41,12 @@ public class GleSYSPropertiesBuilder extends PropertiesBuilder {
Properties properties = super.defaultProperties(); Properties properties = super.defaultProperties();
properties.setProperty(PROPERTY_ENDPOINT, "https://api.glesys.com"); properties.setProperty(PROPERTY_ENDPOINT, "https://api.glesys.com");
properties.setProperty(PROPERTY_API_VERSION, "1"); properties.setProperty(PROPERTY_API_VERSION, "1");
properties.setProperty(PROPERTY_ISO3166_CODES, "US-CA,US-VA,BR-SP");
properties.setProperty(PROPERTY_ZONE + ".Amsterdam." + ISO3166_CODES, "NL-NH");
properties.setProperty(PROPERTY_ZONE + ".Falkenberg." + ISO3166_CODES, "SE-N");
properties.setProperty(PROPERTY_ZONE + ".New York City." + ISO3166_CODES, "US-NY");
properties.setProperty(PROPERTY_ZONE + ".Stockholm." + ISO3166_CODES, "SE-AB");
properties.setProperty(PROPERTY_GLESYS_DEFAULT_DC, "Falkenberg");
return properties; return properties;
} }

View File

@ -109,7 +109,7 @@ public class GleSYSProviderMetadata extends BaseProviderMetadata {
*/ */
@Override @Override
public Set<String> getIso3166Codes() { public Set<String> getIso3166Codes() {
return ImmutableSet.of(); return ImmutableSet.of("NL-NH","SE-N","US-NY","SE-AB");
} }
} }

View File

@ -41,8 +41,7 @@ public class GleSYSParserModule extends AbstractModule {
@Provides @Provides
@Singleton @Singleton
public Map<Type, Object> provideCustomAdapterBindings() { public Map<Type, Object> provideCustomAdapterBindings() {
return ImmutableMap.<Type, Object> of(ServerState.class, new GleSYSTypeAdapters.ServerStateAdapter(), return ImmutableMap.<Type, Object> of(ServerState.class, new GleSYSTypeAdapters.ServerStateAdapter());
ServerUptime.class, new GleSYSTypeAdapters.ServerUptimeAdapter());
} }
@Override @Override

View File

@ -1,119 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.domain;
import com.google.common.base.Objects;
/**
* Detailed information on Server bandwidth
*
* @author Adam Lowe
* @see ServerStatus
*/
public class Bandwidth {
public static Builder builder() {
return new Builder();
}
public static class Builder {
private long today;
private long last30Days;
private long max;
public Builder today(long today) {
this.today = today;
return this;
}
public Builder last30Days(long last30Days) {
this.last30Days = last30Days;
return this;
}
public Builder max(long max) {
this.max = max;
return this;
}
public Bandwidth build() {
return new Bandwidth(today, last30Days, max);
}
public Builder fromBandwidth(Bandwidth in) {
return today(in.getToday()).last30Days(in.getLast30Days()).max(in.getMax());
}
}
private final long today;
private final long last30Days;
private final long max;
public Bandwidth(long today, long last30Days, long max) {
this.today = today;
this.last30Days = last30Days;
this.max = max;
}
/**
* @return the bandwidth used today in MB
*/
public long getToday() {
return today;
}
/**
* @return the bandwidth used in the past 30 days in GB
*/
public long getLast30Days() {
return last30Days;
}
/**
* @return the max bandwidth allowed over a 30 day period in GB
*/
public long getMax() {
return max;
}
@Override
public int hashCode() {
return Objects.hashCode(today, last30Days, max);
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object instanceof Bandwidth) {
Bandwidth other = (Bandwidth) object;
return Objects.equal(today, other.today)
&& Objects.equal(last30Days, other.last30Days)
&& Objects.equal(max, other.max);
} else {
return false;
}
}
@Override
public String toString() {
return String.format("[today=%d, last30Days=%d, max=%d]", today, last30Days, max);
}
}

View File

@ -1,153 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.domain;
import com.google.common.base.Objects;
import org.jclouds.javax.annotation.Nullable;
/**
* Detailed information on Server cpu usage
*
* @author Adam Lowe
* @see ServerStatus
*/
public class Cpu {
public static Builder builder() {
return new Builder();
}
public static class Builder {
private double system;
private double user;
private Double nice;
private double idle;
private String unit;
public Builder system(double system) {
this.system = system;
return this;
}
public Builder user(double user) {
this.user = user;
return this;
}
public Builder nice(Double nice) {
this.nice = nice;
return this;
}
public Builder idle(double idle) {
this.idle = idle;
return this;
}
public Builder unit(String unit) {
this.unit = unit;
return this;
}
public Cpu build() {
return new Cpu(system, user, nice, idle, unit);
}
public Builder fromCpu(Cpu in) {
return system(in.getSystem()).user(in.getUser()).nice(in.getNice()).idle(in.getIdle()).unit(in.getUnit());
}
}
private final double system;
private final double user;
private final Double nice;
private final double idle;
private final String unit;
public Cpu(double system, double user, @Nullable Double nice, double idle, String unit) {
this.system = system;
this.user = user;
this.nice = nice;
this.idle = idle;
this.unit = unit;
}
/**
* @return the system time in use in #unit
*/
public double getSystem() {
return system;
}
/**
* @return the user time in use in #unit
*/
public double getUser() {
return user;
}
/**
* @return the nice setting
*/
public Double getNice() {
return nice;
}
/**
* @return the idle time in #unit
*/
public double getIdle() {
return idle;
}
/**
* @return the unit used
*/
public String getUnit() {
return unit;
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object instanceof Cpu) {
Cpu other = (Cpu) object;
return Objects.equal(system, other.system)
&& Objects.equal(user, other.user)
&& Objects.equal(nice, other.nice)
&& Objects.equal(idle, other.idle)
&& Objects.equal(unit, other.unit);
} else {
return false;
}
}
@Override
public int hashCode() {
return Objects.hashCode(system, user, nice, idle, unit);
}
@Override
public String toString() {
return String.format("[system=%f, user=%f, nice=%f, idle=%f, unit=%s]",
system, user, nice, idle, unit);
}
}

View File

@ -1,119 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.domain;
import com.google.common.base.Objects;
/**
* Detailed information on Server disk usage
*
* @author Adam Lowe
* @see ServerStatus
*/
public class Disk {
public static Builder builder() {
return new Builder();
}
public static class Builder {
private long used;
private long size;
private String unit;
public Builder used(long used) {
this.used = used;
return this;
}
public Builder size(long size) {
this.size = size;
return this;
}
public Builder unit(String unit) {
this.unit = unit;
return this;
}
public Disk build() {
return new Disk(used, size, unit);
}
public Builder fromDisk(Disk in) {
return used(in.getUsed()).size(in.getSize()).unit(in.getUnit());
}
}
private final long used;
private final long size;
private final String unit;
public Disk(long used, long size, String unit) {
this.used = used;
this.size = size;
this.unit = unit;
}
/**
* @return the disk used in #unit
*/
public long getUsed() {
return used;
}
/**
* @return the disk size allocated in #unit
*/
public long getSize() {
return size;
}
/**
* @return the unit used
*/
public String getUnit() {
return unit;
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object instanceof Disk) {
Disk other = (Disk) object;
return Objects.equal(used, other.used)
&& Objects.equal(size, other.size)
&& Objects.equal(unit, other.unit);
} else {
return false;
}
}
@Override
public int hashCode() {
return Objects.hashCode(used, size, unit);
}
@Override
public String toString() {
return String.format("[used=%d, size=%d, unit=%s]", used, size, unit);
}
}

View File

@ -19,31 +19,31 @@
package org.jclouds.glesys.domain; package org.jclouds.glesys.domain;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.gson.annotations.SerializedName;
/** /**
* Detailed information on Server memory usage * Detailed information on usage
* *
* @author Adam Lowe * @author Adam Lowe
* @see ServerStatus * @see ServerStatus
*/ */
public class Memory {
public class ResourceUsage {
public static Builder builder() { public static Builder builder() {
return new Builder(); return new Builder();
} }
public static class Builder { public static class Builder {
private long usage; private double usage;
private long size; private double max;
private String unit; private String unit;
public Builder usage(long usage) { public Builder usage(double usage) {
this.usage = usage; this.usage = usage;
return this; return this;
} }
public Builder size(long size) { public Builder max(double max) {
this.size = size; this.max = max;
return this; return this;
} }
@ -52,39 +52,37 @@ public class Memory {
return this; return this;
} }
public Memory build() { public ResourceUsage build() {
return new Memory(usage, size, unit); return new ResourceUsage(usage, max, unit);
} }
public Builder fromMemory(Memory in) { public Builder fromCpu(ResourceUsage in) {
return usage(in.getUsage()).size(in.getSize()).unit(in.getUnit()); return usage(in.getUsage()).max(in.getMax()).unit(in.getUnit());
} }
} }
@SerializedName("memusage") private final double usage;
private final long usage; private final double max;
@SerializedName("memsize")
private final long size;
private final String unit; private final String unit;
public Memory(long usage, long size, String unit) { public ResourceUsage(double usage, double max, String unit) {
this.usage = usage; this.usage = usage;
this.size = size; this.max = max;
this.unit = unit; this.unit = unit;
} }
/** /**
* @return the memory usage in #unit * @return the usage in #unit
*/ */
public long getUsage() { public double getUsage() {
return usage; return usage;
} }
/** /**
* @return the memory size allocated in #unit * @return the max usage in #unit
*/ */
public long getSize() { public double getMax() {
return size; return max;
} }
/** /**
@ -99,10 +97,10 @@ public class Memory {
if (this == object) { if (this == object) {
return true; return true;
} }
if (object instanceof Memory) { if (object instanceof ResourceUsage) {
Memory other = (Memory) object; ResourceUsage other = (ResourceUsage) object;
return Objects.equal(usage, other.usage) return Objects.equal(usage, other.usage)
&& Objects.equal(size, other.size) && Objects.equal(max, other.max)
&& Objects.equal(unit, other.unit); && Objects.equal(unit, other.unit);
} else { } else {
return false; return false;
@ -111,11 +109,12 @@ public class Memory {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hashCode(usage, size, unit); return Objects.hashCode(usage, max, unit);
} }
@Override @Override
public String toString() { public String toString() {
return String.format("[usage=%d, size=%d, unit=%s]", usage, size, unit); return String.format("[usage=%f, max=%f, unit=%s]",
usage, max, unit);
} }
} }

View File

@ -34,6 +34,7 @@ public class ServerConsole {
public static class Builder { public static class Builder {
private String host; private String host;
private int port; private int port;
private String protocol;
private String password; private String password;
public Builder host(String host) { public Builder host(String host) {
@ -51,23 +52,30 @@ public class ServerConsole {
return this; return this;
} }
public Builder protocol(String protocol) {
this.protocol = protocol;
return this;
}
public ServerConsole build() { public ServerConsole build() {
return new ServerConsole(host, port, password); return new ServerConsole(host, port, protocol, password);
} }
public Builder fromServerConsole(ServerConsole in) { public Builder fromServerConsole(ServerConsole in) {
return host(in.getHost()).port(in.getPort()).password(in.getPassword()); return host(in.getHost()).port(in.getPort()).password(in.getPassword()).protocol(in.getProtocol());
} }
} }
private final String host; private final String host;
private final int port; private final int port;
private final String protocol;
private final String password; private final String password;
public ServerConsole(String host, int port, String password) { public ServerConsole(String host, int port, String protocol, String password) {
this.host = host; this.host = host;
this.port = port; this.port = port;
this.protocol = protocol;
this.password = password; this.password = password;
} }
@ -85,6 +93,13 @@ public class ServerConsole {
return port; return port;
} }
/**
* @return the protocol to use to connect to the server
*/
public String getProtocol() {
return protocol;
}
/** /**
* @return the password to use to connect to the server * @return the password to use to connect to the server
*/ */
@ -100,7 +115,8 @@ public class ServerConsole {
if (object instanceof ServerConsole) { if (object instanceof ServerConsole) {
final ServerConsole other = (ServerConsole) object; final ServerConsole other = (ServerConsole) object;
return Objects.equal(host, other.host) return Objects.equal(host, other.host)
&& Objects.equal(port, other.port); && Objects.equal(port, other.port)
&& Objects.equal(protocol, other.protocol);
} else { } else {
return false; return false;
} }
@ -108,12 +124,12 @@ public class ServerConsole {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hashCode(host, port); return Objects.hashCode(host, port, protocol);
} }
@Override @Override
public String toString() { public String toString() {
return String.format("[host=%s, port=%s, password=%s]", host, port, password); return String.format("[host=%s, port=%s, protocol=%s, password=%s]", host, port, protocol, password);
} }
} }

View File

@ -1,126 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Arrays;
import java.util.List;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.gson.annotations.SerializedName;
/**
* Information about a new server
*
* @author Adam Lowe
* @see <a href="https://customer.glesys.com/api.php?a=doc#server_create" />
*/
public class ServerCreated {
public static Builder builder() {
return new Builder();
}
public static class Builder {
private String id;
private String hostname;
private List<Ip> ips;
public Builder id(String id) {
this.id = id;
return this;
}
public Builder ips(List<Ip> ips) {
this.ips = ips;
return this;
}
public Builder ips(Ip... ips) {
return ips(Arrays.asList(ips));
}
public Builder hostname(String hostname) {
this.hostname = hostname;
return this;
}
public ServerCreated build() {
return new ServerCreated(id, hostname, ips);
}
public Builder fromServerCreated(ServerCreated in) {
return id(in.getId()).hostname(in.getHostname()).ips(in.getIps());
}
}
@SerializedName("serverid")
private final String id;
private final String hostname;
@SerializedName("iplist")
private final List<Ip> ips;
public ServerCreated(String id, @Nullable String hostname, List<Ip> ips) {
checkNotNull(id, "id");
this.id = id;
this.hostname = hostname;
this.ips = ips;
}
/**
* @return the id of the server (used for other calls to identify the server.
* @see org.jclouds.glesys.features.ServerClient
*/
public String getId() {
return id;
}
/** @return the hostname of the server */
public String getHostname() {
return hostname;
}
/** @return the IP addresses assigned to the server */
public List<Ip> getIps() {
return ips == null ? ImmutableList.<Ip>of() : ips;
}
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
return object instanceof ServerCreated
&& Objects.equal(id, ((ServerCreated) object).id);
}
@Override
public int hashCode() {
return Objects.hashCode(id);
}
@Override
public String toString() {
return String.format("[id=%s, hostname=%s, ips=%s]", id, hostname, ips);
}
}

View File

@ -18,14 +18,14 @@
*/ */
package org.jclouds.glesys.domain; package org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static com.google.common.base.Preconditions.checkNotNull;
/** /**
* Detailed information about a server such as cpuCores, hardware configuration * Detailed information about a server such as cpuCores, hardware configuration
* (cpu, memory and disk), ip adresses, cost, transfer, os and more. * (cpu, memory and disk), ip adresses, cost, transfer, os and more.
@ -40,10 +40,10 @@ public class ServerDetails extends Server {
public static class Builder extends Server.Builder { public static class Builder extends Server.Builder {
private String description; private String description;
private String template; private String templateName;
private int cpuCores; private int cpuCores;
private int memory; private int memorySize;
private int disk; private int diskSize;
private int transfer; private int transfer;
private Cost cost; private Cost cost;
private List<Ip> ips; private List<Ip> ips;
@ -53,8 +53,8 @@ public class ServerDetails extends Server {
return this; return this;
} }
public Builder template(String template) { public Builder templateName(String templateName) {
this.template = template; this.templateName = templateName;
return this; return this;
} }
@ -63,13 +63,13 @@ public class ServerDetails extends Server {
return this; return this;
} }
public Builder memory(int memory) { public Builder memorySize(int memorySize) {
this.memory = memory; this.memorySize = memorySize;
return this; return this;
} }
public Builder disk(int disk) { public Builder diskSize(int diskSize) {
this.disk = disk; this.diskSize = diskSize;
return this; return this;
} }
@ -93,11 +93,11 @@ public class ServerDetails extends Server {
} }
public ServerDetails build() { public ServerDetails build() {
return new ServerDetails(id, hostname, datacenter, platform, template, description, cpuCores, memory, disk, transfer, cost, ips); return new ServerDetails(id, hostname, datacenter, platform, templateName, description, cpuCores, memorySize, diskSize, transfer, cost, ips);
} }
public Builder fromServerDetails(ServerDetails in) { public Builder fromServerDetails(ServerDetails in) {
return fromServer(in).template(in.getTemplate()).memory(in.getMemory()).disk(in.getDisk()).cpuCores(in.getCpuCores()).cost(in.getCost()) return fromServer(in).templateName(in.getTemplateName()).memorySize(in.getMemorySize()).diskSize(in.getDiskSize()).cpuCores(in.getCpuCores()).cost(in.getCost())
.description(in.getDescription()).ips(in.getIps()); .description(in.getDescription()).ips(in.getIps());
} }
@ -128,24 +128,27 @@ public class ServerDetails extends Server {
} }
private final String description; private final String description;
private final String template; @SerializedName("templatename")
private final String templateName;
@SerializedName("cpucores") @SerializedName("cpucores")
private final int cpuCores; private final int cpuCores;
private final int memory; @SerializedName("memorysize")
private final int disk; private final int memorySize;
@SerializedName("disksize")
private final int diskSize;
private final int transfer; private final int transfer;
private final Cost cost; private final Cost cost;
@SerializedName("iplist") @SerializedName("iplist")
private final List<Ip> ips; private final List<Ip> ips;
public ServerDetails(String id, String hostname, String datacenter, String platform, String template, public ServerDetails(String id, String hostname, String datacenter, String platform, String templateName,
String description, int cpuCores, int memory, int disk, int transfer, Cost cost, List<Ip> ips) { String description, int cpuCores, int memorySize, int diskSize, int transfer, Cost cost, List<Ip> ips) {
super(id, hostname, datacenter, platform); super(id, hostname, datacenter, platform);
this.template = checkNotNull(template, "template"); this.templateName = checkNotNull(templateName, "template");
this.description = description; this.description = description;
this.cpuCores = cpuCores; this.cpuCores = cpuCores;
this.memory = memory; this.memorySize = memorySize;
this.disk = disk; this.diskSize = diskSize;
this.transfer = transfer; this.transfer = transfer;
this.cost = checkNotNull(cost, "cost"); this.cost = checkNotNull(cost, "cost");
this.ips = ips == null ? ImmutableList.<Ip>of() : ips; this.ips = ips == null ? ImmutableList.<Ip>of() : ips;
@ -168,15 +171,15 @@ public class ServerDetails extends Server {
/** /**
* @return the disk of the server in GB * @return the disk of the server in GB
*/ */
public int getDisk() { public int getDiskSize() {
return disk; return diskSize;
} }
/** /**
* @return the memory of the server in MB * @return the memory of the server in MB
*/ */
public int getMemory() { public int getMemorySize() {
return memory; return memorySize;
} }
/** /**
@ -203,15 +206,15 @@ public class ServerDetails extends Server {
/** /**
* @return the name of the template used to create the server * @return the name of the template used to create the server
*/ */
public String getTemplate() { public String getTemplateName() {
return template; return templateName;
} }
@Override @Override
public String toString() { public String toString() {
return String.format( return String.format(
"[id=%s, hostname=%s, datacenter=%s, platform=%s, template=%s, description=%s, cpuCores=%d, memory=%d, disk=%d, transfer=%d, cost=%s, ips=%s]", id, "[id=%s, hostname=%s, datacenter=%s, platform=%s, templateName=%s, description=%s, cpuCores=%d, memorySize=%d, diskSize=%d, transfer=%d, cost=%s, ips=%s]", id,
hostname, datacenter, platform, template, description, cpuCores, memory, disk, transfer, cost, ips); hostname, datacenter, platform, templateName, description, cpuCores, memorySize, diskSize, transfer, cost, ips);
} }
} }

View File

@ -35,65 +35,57 @@ public class ServerStatus {
public static class Builder { public static class Builder {
private ServerState state; private ServerState state;
private Cpu cpu; private ResourceUsage cpu;
private Memory memory; private ResourceUsage memory;
private Disk disk; private ResourceUsage disk;
private Bandwidth bandwidth; private ServerUptime uptime;
private long uptime;
public Builder state(ServerState state) { public Builder state(ServerState state) {
this.state = state; this.state = state;
return this; return this;
} }
public Builder cpu(Cpu cpu) { public Builder cpu(ResourceUsage cpu) {
this.cpu = cpu; this.cpu = cpu;
return this; return this;
} }
public Builder memory(Memory memory) { public Builder memory(ResourceUsage memory) {
this.memory = memory; this.memory = memory;
return this; return this;
} }
public Builder disk(Disk disk) { public Builder disk(ResourceUsage disk) {
this.disk = disk; this.disk = disk;
return this; return this;
} }
public Builder bandwidth(Bandwidth bandwidth) { public Builder uptime(ServerUptime uptime) {
this.bandwidth = bandwidth;
return this;
}
public Builder uptime(long uptime) {
this.uptime = uptime; this.uptime = uptime;
return this; return this;
} }
public ServerStatus build() { public ServerStatus build() {
return new ServerStatus(state, cpu, memory, disk, bandwidth, uptime); return new ServerStatus(state, cpu, memory, disk, uptime);
} }
public Builder fromServerStatus(ServerStatus in) { public Builder fromServerStatus(ServerStatus in) {
return state(in.getState()).cpu(in.getCpu()).memory(in.getMemory()).disk(in.getDisk()).bandwidth(in.getBandwidth()).uptime(in.getUptime()); return state(in.getState()).cpu(in.getCpu()).memory(in.getMemory()).disk(in.getDisk()).uptime(in.getUptime());
} }
} }
private final ServerState state; private final ServerState state;
private final Cpu cpu; private final ResourceUsage cpu;
private final Memory memory; private final ResourceUsage memory;
private final Disk disk; private final ResourceUsage disk;
private final Bandwidth bandwidth;
private final ServerUptime uptime; private final ServerUptime uptime;
public ServerStatus(ServerState state, Cpu cpu, Memory memory, Disk disk, Bandwidth bandwidth, long uptime) { public ServerStatus(ServerState state, ResourceUsage cpu, ResourceUsage memory, ResourceUsage disk, ServerUptime uptime) {
this.state = state; this.state = state;
this.cpu = cpu; this.cpu = cpu;
this.memory = memory; this.memory = memory;
this.disk = disk; this.disk = disk;
this.bandwidth = bandwidth; this.uptime = uptime;
this.uptime = ServerUptime.fromValue(uptime);
} }
/** /**
@ -106,36 +98,29 @@ public class ServerStatus {
/** /**
* @return CPU usage information * @return CPU usage information
*/ */
public Cpu getCpu() { public ResourceUsage getCpu() {
return cpu; return cpu;
} }
/** /**
* @return details of memory usage and limits * @return details of memory usage and limits
*/ */
public Memory getMemory() { public ResourceUsage getMemory() {
return memory; return memory;
} }
/** /**
* @return details of disk usage and limits * @return details of disk usage and limits
*/ */
public Disk getDisk() { public ResourceUsage getDisk() {
return disk; return disk;
} }
/**
* @return details of bandwidth usage and limits
*/
public Bandwidth getBandwidth() {
return bandwidth;
}
/** /**
* @return the uptime of the server * @return the uptime of the server
*/ */
public long getUptime() { public ServerUptime getUptime() {
return uptime.getTime(); return uptime;
} }
@Override @Override
@ -149,7 +134,6 @@ public class ServerStatus {
&& Objects.equal(cpu, other.cpu) && Objects.equal(cpu, other.cpu)
&& Objects.equal(memory, other.memory) && Objects.equal(memory, other.memory)
&& Objects.equal(disk, other.disk) && Objects.equal(disk, other.disk)
&& Objects.equal(bandwidth, other.bandwidth)
&& Objects.equal(uptime, other.uptime); && Objects.equal(uptime, other.uptime);
} else { } else {
return false; return false;
@ -158,13 +142,13 @@ public class ServerStatus {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hashCode(state, cpu, memory, disk, bandwidth, uptime); return Objects.hashCode(state, cpu, memory, disk, uptime);
} }
@Override @Override
public String toString() { public String toString() {
return String.format("[state=%s, cpu=%s, memory=%s, disk=%s, bandwidth=%s, uptime=%s]", return String.format("[state=%s, cpu=%s, memory=%s, disk=%s, uptime=%s]",
state, cpu, memory, disk, bandwidth, uptime); state, cpu, memory, disk, uptime);
} }
} }

View File

@ -77,10 +77,11 @@ public class ServerTemplate implements Comparable<ServerTemplate>{
} }
private final String name; private final String name;
@SerializedName("min_disk_size") @SerializedName("minimumdisksize")
private final int minDiskSize; private final int minDiskSize;
@SerializedName("min_mem_size") @SerializedName("minimummemorysize")
private final int minMemSize; private final int minMemSize;
@SerializedName("operatingsystem")
private final String os; private final String os;
private final String platform; private final String platform;

View File

@ -22,6 +22,7 @@ import com.google.common.base.Joiner;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.common.base.Splitter; import com.google.common.base.Splitter;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -34,59 +35,55 @@ import java.util.concurrent.TimeUnit;
* @see ServerStatus * @see ServerStatus
*/ */
public class ServerUptime { public class ServerUptime {
private final long time; public static Builder builder() {
private final String timeString; return new Builder();
private ServerUptime(long time) {
this.time = time;
long days = TimeUnit.SECONDS.toDays(time);
long hours = TimeUnit.SECONDS.toHours(time - TimeUnit.DAYS.toSeconds(days));
Long[] bits = new Long[]{
0L,
(days / 365),
((days % 365) / 30),
((days % 365) % 30),
hours,
TimeUnit.SECONDS.toMinutes(time - TimeUnit.HOURS.toSeconds(hours) - TimeUnit.DAYS.toSeconds(days)),
time % 60
};
this.timeString = Joiner.on(' ').join(bits);
} }
private ServerUptime(String timeString) { public static class Builder {
Splitter splitter = Splitter.on(' ').omitEmptyStrings().trimResults(); private long current;
List<String> data = new ArrayList<String>(); private String unit;
Iterables.addAll(data, splitter.split(timeString));
long result = Integer.parseInt(data.get(6)); public Builder current(long current) {
result += TimeUnit.SECONDS.convert(Integer.parseInt(data.get(5)), TimeUnit.MINUTES); this.current = current;
result += TimeUnit.SECONDS.convert(Integer.parseInt(data.get(4)), TimeUnit.HOURS); return this;
result += TimeUnit.SECONDS.convert(Integer.parseInt(data.get(3)), TimeUnit.DAYS); }
result += TimeUnit.SECONDS.convert(Integer.parseInt(data.get(2)) * 30, TimeUnit.DAYS);
result += TimeUnit.SECONDS.convert(Integer.parseInt(data.get(1)) * 365, TimeUnit.DAYS); public Builder unit(String unit) {
this.time = result; this.unit = unit;
this.timeString = timeString; return this;
}
public ServerUptime build() {
return new ServerUptime(current, unit);
}
public Builder fromServerUptime(ServerUptime from) {
return current(from.getCurrent()).unit(from.getUnit());
}
}
private final long current;
private final String unit;
public ServerUptime(long current, String unit) {
this.current = current;
this.unit = unit;
} }
/** /**
* @param uptimeString a Glesys uptime string, ex. "0 0 0 0 0 10 1 1" * @return the time the server has been up in #unit
*/ */
public static ServerUptime fromValue(String uptimeString) { public long getCurrent() {
return new ServerUptime(uptimeString); return current;
} }
/** /**
* @param time number of seconds the server has been up * @return the unit used for #time
*/ */
public static ServerUptime fromValue(long time) { public String getUnit() {
return new ServerUptime(time); return unit;
} }
/**
* @return the number of seconds the server has been up
*/
public long getTime() {
return time;
}
@Override @Override
public boolean equals(Object object) { public boolean equals(Object object) {
@ -94,17 +91,18 @@ public class ServerUptime {
return true; return true;
} }
return object instanceof ServerUptime return object instanceof ServerUptime
&& Objects.equal(time, ((ServerUptime) object).getTime()); && Objects.equal(current, ((ServerUptime) object).getCurrent())
&& Objects.equal(unit, ((ServerUptime) object).getUnit());
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hashCode(time); return Objects.hashCode(current, unit);
} }
@Override @Override
public String toString() { public String toString() {
return timeString; return String.format("[current=%d unit=%s]", current, unit);
} }
} }

View File

@ -32,7 +32,6 @@ import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.domain.Server; import org.jclouds.glesys.domain.Server;
import org.jclouds.glesys.domain.ServerAllowedArguments; import org.jclouds.glesys.domain.ServerAllowedArguments;
import org.jclouds.glesys.domain.ServerConsole; import org.jclouds.glesys.domain.ServerConsole;
import org.jclouds.glesys.domain.ServerCreated;
import org.jclouds.glesys.domain.ServerDetails; import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.glesys.domain.ServerLimit; import org.jclouds.glesys.domain.ServerLimit;
import org.jclouds.glesys.domain.ServerStatus; import org.jclouds.glesys.domain.ServerStatus;
@ -112,7 +111,7 @@ public interface ServerAsyncClient {
*/ */
@POST @POST
@Path("/server/console/format/json") @Path("/server/console/format/json")
@SelectJson("remote") @SelectJson("console")
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@ExceptionParser(ReturnNullOnNotFoundOr404.class) @ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<ServerConsole> getServerConsole(@FormParam("serverid") String id); ListenableFuture<ServerConsole> getServerConsole(@FormParam("serverid") String id);
@ -141,44 +140,51 @@ public interface ServerAsyncClient {
*/ */
@POST @POST
@Path("/server/resetlimit/format/json") @Path("/server/resetlimit/format/json")
ListenableFuture<Void> resetServerLimit(@FormParam("serverid") String id, @FormParam("type") String type); @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<SortedMap<String, ServerLimit>> resetServerLimit(@FormParam("serverid") String id, @FormParam("type") String type);
/** /**
* @see ServerClient#rebootServer * @see ServerClient#rebootServer
*/ */
@POST @POST
@SelectJson("server")
@Path("/server/reboot/format/json") @Path("/server/reboot/format/json")
ListenableFuture<Void> rebootServer(@FormParam("serverid") String id); @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerDetails> rebootServer(@FormParam("serverid") String id);
/** /**
* @see ServerClient#startServer * @see ServerClient#startServer
*/ */
@POST @POST
@SelectJson("server")
@Path("/server/start/format/json") @Path("/server/start/format/json")
ListenableFuture<Void> startServer(@FormParam("serverid") String id); @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerDetails> startServer(@FormParam("serverid") String id);
/** /**
* @see ServerClient#stopServer * @see ServerClient#stopServer
*/ */
@POST @POST
@SelectJson("server")
@Path("/server/stop/format/json") @Path("/server/stop/format/json")
ListenableFuture<Void> stopServer(@FormParam("serverid") String id, ServerStopOptions... options); @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerDetails> stopServer(@FormParam("serverid") String id, ServerStopOptions... options);
/** /**
* @see ServerClient#createServer * @see ServerClient#createServer
*/ */
@POST @POST
@Path("/server/create/format/json")
@SelectJson("server") @SelectJson("server")
@Path("/server/create/format/json")
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerCreated> createServer(@FormParam("datacenter") String dataCenter, ListenableFuture<ServerDetails> createServer(@FormParam("datacenter") String datacenter,
@FormParam("platform") String platform, @FormParam("platform") String platform,
@FormParam("hostname") String hostname, @FormParam("hostname") String hostname,
@FormParam("template") String template, @FormParam("templatename") String templateName,
@FormParam("disksize") int diskSize, @FormParam("disksize") int diskSize,
@FormParam("memorysize") int memorySize, @FormParam("memorysize") int memorySize,
@FormParam("cpucores") int cpucores, @FormParam("cpucores") int cpuCores,
@FormParam("rootpw") String rootpw, @FormParam("rootpassword") String rootPassword,
@FormParam("transfer") int transfer, @FormParam("transfer") int transfer,
ServerCreateOptions... options); ServerCreateOptions... options);
@ -189,7 +195,7 @@ public interface ServerAsyncClient {
@Path("/server/clone/format/json") @Path("/server/clone/format/json")
@SelectJson("server") @SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerCreated> cloneServer(@FormParam("serverid") String serverid, ListenableFuture<ServerDetails> cloneServer(@FormParam("serverid") String serverid,
@FormParam("hostname") String hostname, @FormParam("hostname") String hostname,
ServerCloneOptions... options); ServerCloneOptions... options);
@ -198,7 +204,9 @@ public interface ServerAsyncClient {
*/ */
@POST @POST
@Path("/server/edit/format/json") @Path("/server/edit/format/json")
ListenableFuture<Void> editServer(@FormParam("serverid") String serverid, ServerEditOptions... options); @SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON)
ListenableFuture<ServerDetails> editServer(@FormParam("serverid") String serverid, ServerEditOptions... options);
/** /**
* @see ServerClient#destroyServer * @see ServerClient#destroyServer
@ -214,4 +222,11 @@ public interface ServerAsyncClient {
@Path("/server/destroy/format/json") @Path("/server/destroy/format/json")
ListenableFuture<Void> resetPassword(@FormParam("serverid") String id, @FormParam("newpassword") String password); ListenableFuture<Void> resetPassword(@FormParam("serverid") String id, @FormParam("newpassword") String password);
/**
* @see ServerClient#resourceUsage
*/
@POST
@Path("/server/resourceusage/format/json")
void resourceUsage(@FormParam("serverid") String id, @FormParam("resource") String resource, @FormParam("resolution") String resolution);
} }

View File

@ -20,6 +20,7 @@ package org.jclouds.glesys.features;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.SortedMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.ws.rs.FormParam; import javax.ws.rs.FormParam;
@ -28,7 +29,6 @@ import org.jclouds.concurrent.Timeout;
import org.jclouds.glesys.domain.Server; import org.jclouds.glesys.domain.Server;
import org.jclouds.glesys.domain.ServerAllowedArguments; import org.jclouds.glesys.domain.ServerAllowedArguments;
import org.jclouds.glesys.domain.ServerConsole; import org.jclouds.glesys.domain.ServerConsole;
import org.jclouds.glesys.domain.ServerCreated;
import org.jclouds.glesys.domain.ServerDetails; import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.glesys.domain.ServerLimit; import org.jclouds.glesys.domain.ServerLimit;
import org.jclouds.glesys.domain.ServerStatus; import org.jclouds.glesys.domain.ServerStatus;
@ -117,22 +117,21 @@ public interface ServerClient {
* @param id id of the server * @param id id of the server
* @param type the type of limit to reset * @param type the type of limit to reset
*/ */
Map<String, ServerLimit> resetServerLimit(String id, String type);
void resetServerLimit(String id, String type);
/** /**
* Reboot a server * Reboot a server
* *
* @param id id of the server * @param id id of the server
*/ */
void rebootServer(String id); ServerDetails rebootServer(String id);
/** /**
* Start a server * Start a server
* *
* @param id id of the server * @param id id of the server
*/ */
void startServer(String id); ServerDetails startServer(String id);
/** /**
* Stop a server * Stop a server
@ -148,17 +147,17 @@ public interface ServerClient {
* @param datacenter the data center to create the new server in * @param datacenter the data center to create the new server in
* @param platform the platform to use (i.e. "Xen" or "OpenVZ") * @param platform the platform to use (i.e. "Xen" or "OpenVZ")
* @param hostname the host name of the new server * @param hostname the host name of the new server
* @param template the template to use to create the new server * @param templateName the template to use to create the new server
* @param disksize the amount of disk space, in GB, to allocate * @param diskSize the amount of disk space, in GB, to allocate
* @param memorysize the memory, in MB, to allocate * @param memorySize the memory, in MB, to allocate
* @param cpucores the number of CPU cores to allocate * @param cpuCores the number of CPU cores to allocate
* @param rootpw the root password to use * @param rootPassword the root password to use
* @param transfer the transfer size * @param transfer the transfer size
* @param options optional settings ex. description * @param options optional settings ex. description
*/ */
ServerCreated createServer(String datacenter, String platform, ServerDetails createServer(String datacenter,String platform,String hostname,
String hostname, String template, int disksize, int memorysize, String templateName, int diskSize, int memorySize, int cpuCores,
int cpucores, String rootpw, int transfer, ServerCreateOptions... options); String rootPassword, int transfer, ServerCreateOptions... options);
/** /**
* Edit the configuration of a server * Edit the configuration of a server
@ -166,7 +165,7 @@ public interface ServerClient {
* @param serverid the serverId of the server to edit * @param serverid the serverId of the server to edit
* @param options the settings to change * @param options the settings to change
*/ */
void editServer(String serverid, ServerEditOptions... options); ServerDetails editServer(String serverid, ServerEditOptions... options);
/** /**
* Clone a server * Clone a server
@ -175,7 +174,7 @@ public interface ServerClient {
* @param hostname the new host name of the cloned server * @param hostname the new host name of the cloned server
* @param options the settings to change * @param options the settings to change
*/ */
ServerCreated cloneServer(String serverid, String hostname, ServerCloneOptions... options); ServerDetails cloneServer(String serverid, String hostname, ServerCloneOptions... options);
/** /**
* Destroy a server * Destroy a server
@ -183,7 +182,7 @@ public interface ServerClient {
* @param id the id of the server * @param id the id of the server
* @param keepIp if ServerDestroyOptions.keepIp(true) the servers ip will be retained for use in your GleSYS account * @param keepIp if ServerDestroyOptions.keepIp(true) the servers ip will be retained for use in your GleSYS account
*/ */
void destroyServer(String id, ServerDestroyOptions keepIp); ServerDetails destroyServer(String id, ServerDestroyOptions keepIp);
/** /**
* Reset the root password of a server * Reset the root password of a server
@ -191,7 +190,16 @@ public interface ServerClient {
* @param id the id of the server * @param id the id of the server
* @param password the new password to use * @param password the new password to use
*/ */
void resetPassword(@FormParam("serverid") String id, @FormParam("newpassword") String password); void resetPassword(String id, String password);
/**
* Return resource usage over time for server
*
* @param id the id of the server
* @param resource the name of the resource to retrieve usage information for
*/
void resourceUsage(String id, String resource, String resolution);
} }

View File

@ -44,15 +44,4 @@ public class GleSYSTypeAdapters {
} }
} }
public static class ServerUptimeAdapter extends TypeAdapter<ServerUptime> {
@Override
public void write(JsonWriter writer, ServerUptime value) throws IOException {
writer.value(value.toString());
}
@Override
public ServerUptime read(JsonReader reader) throws IOException {
return ServerUptime.fromValue(reader.nextString());
}
}
} }

View File

@ -0,0 +1,32 @@
package org.jclouds.glesys.reference;
import org.jclouds.compute.domain.ComputeMetadata;
import org.jclouds.compute.domain.Hardware;
import org.jclouds.compute.domain.Template;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Configuration properties and constants in GleSYS connections.
*
* @author Adam Lowe
*/
public class GleSYSConstants {
public static final String PROPERTY_GLESYS_DEFAULT_DC = "jclouds.glesys.defaultdc";
public static final String PROPERTY_GLESYS_MIN_DISK = "jclouds.glesys.mindisk";
public static final String PROPERTY_GLESYS_MIN_RAM = "jclouds.glesys.minram";
public static final Pattern JCLOUDS_ID_TO_PLATFORM = Pattern.compile("([a-zA-Z]+) .*");
public static String getPlatform(ComputeMetadata jcloudsObject) {
checkNotNull(jcloudsObject, "jcloudsObject");
Matcher matcher = JCLOUDS_ID_TO_PLATFORM.matcher(jcloudsObject.getId());
if (!matcher.matches()) {
throw new IllegalArgumentException(jcloudsObject.getId() + " not a GleSYS platform-based id!");
}
return matcher.group(1);
}
}

View File

@ -24,7 +24,7 @@ import static org.testng.Assert.*;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import org.jclouds.glesys.GleSYSAsyncClient; import org.jclouds.glesys.GleSYSAsyncClient;
import org.jclouds.glesys.GleSYSClient; import org.jclouds.glesys.GleSYSClient;
import org.jclouds.glesys.domain.ServerCreated; import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.glesys.domain.ServerState; import org.jclouds.glesys.domain.ServerState;
import org.jclouds.glesys.domain.ServerStatus; import org.jclouds.glesys.domain.ServerStatus;
import org.jclouds.glesys.options.ServerStatusOptions; import org.jclouds.glesys.options.ServerStatusOptions;
@ -88,7 +88,7 @@ public class BaseGleSYSClientLiveTest {
protected ServerStatusChecker createServer(String hostName) { protected ServerStatusChecker createServer(String hostName) {
ServerClient client = context.getApi().getServerClient(); ServerClient client = context.getApi().getServerClient();
ServerCreated testServer = client.createServer("Falkenberg", "OpenVZ", hostName, "Ubuntu 10.04 LTS 32-bit", 5, 512, 1, "password", 50); ServerDetails testServer = client.createServer("Falkenberg", "OpenVZ", hostName, "Ubuntu 10.04 LTS 32-bit", 5, 512, 1, "password", 50);
assertNotNull(testServer.getId()); assertNotNull(testServer.getId());
assertEquals(testServer.getHostname(), hostName); assertEquals(testServer.getHostname(), hostName);

View File

@ -20,8 +20,10 @@ package org.jclouds.glesys.features;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import org.jclouds.glesys.GleSYSClient; import org.jclouds.glesys.GleSYSClient;
import org.jclouds.glesys.domain.Domain; import org.jclouds.glesys.domain.Domain;
import org.jclouds.glesys.domain.DomainRecord;
import org.jclouds.glesys.options.DomainAddOptions; import org.jclouds.glesys.options.DomainAddOptions;
import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse; import org.jclouds.http.HttpResponse;
@ -75,6 +77,43 @@ public class DomainClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
assertTrue(client.listDomains().isEmpty()); assertTrue(client.listDomains().isEmpty());
} }
public void testListDomainRecordsWhenResponseIs2xx() throws Exception {
DomainClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/list_records/format/json"))
.headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("domain", "adamlowe.net").build())).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/domain_list_records.json")).build()).getDomainClient();
Set<DomainRecord> expected = ImmutableSortedSet.of(
DomainRecord.builder().id("213227").zone("adamlowe.net").host("@").type("NS").data("ns1.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213228").zone("adamlowe.net").host("@").type("NS").data("ns2.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213229").zone("adamlowe.net").host("@").type("NS").data("ns3.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213230").zone("adamlowe.net").host("@").type("A").data("127.0.0.1").ttl(3600).build(),
DomainRecord.builder().id("213231").zone("adamlowe.net").host("www").type("A").data("127.0.0.1").ttl(3600).build(),
DomainRecord.builder().id("213232").zone("adamlowe.net").host("mail").type("A").data("79.99.4.40").ttl(3600).build(),
DomainRecord.builder().id("213233").zone("adamlowe.net").host("@").type("MX").data("mx01.glesys.se.").ttl(3600).build(),
DomainRecord.builder().id("213234").zone("adamlowe.net").host("@").type("MX").data("mx02.glesys.se.").ttl(3600).build(),
DomainRecord.builder().id("213235").zone("adamlowe.net").host("@").type("TXT").data("v=spf1 include:spf.glesys.se -all").ttl(3600).build()
);
assertEquals(client.listRecords("adamlowe.net"), expected);
}
public void testListDomainRecordsWhenResponseIs4xxReturnsEmpty() throws Exception {
DomainClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/list/format/json"))
.headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.build(),
HttpResponse.builder().statusCode(404).build()).getDomainClient();
assertTrue(client.listDomains().isEmpty());
}
public void testAddDomainWhenResponseIs2xx() throws Exception { public void testAddDomainWhenResponseIs2xx() throws Exception {
DomainClient client = requestSendsResponse( DomainClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/add/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/add/format/json"))

View File

@ -21,12 +21,8 @@ package org.jclouds.glesys.features;
import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import org.jclouds.glesys.GleSYSClient; import org.jclouds.glesys.GleSYSClient;
import org.jclouds.glesys.domain.Server; import org.jclouds.glesys.domain.*;
import org.jclouds.glesys.domain.ServerCreated;
import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.glesys.domain.Ip;
import org.jclouds.glesys.options.*; import org.jclouds.glesys.options.*;
import org.jclouds.glesys.parse.*;
import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse; import org.jclouds.http.HttpResponse;
import org.jclouds.rest.AuthorizationException; import org.jclouds.rest.AuthorizationException;
@ -35,6 +31,8 @@ import org.jclouds.rest.ResourceNotFoundException;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.net.URI; import java.net.URI;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.jclouds.io.Payloads.newUrlEncodedFormPayload; import static org.jclouds.io.Payloads.newUrlEncodedFormPayload;
import static org.testng.Assert.*; import static org.testng.Assert.*;
@ -83,7 +81,32 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(), .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
HttpResponse.builder().statusCode(204).payload(payloadFromResource("/server_allowed_arguments.json")).build()).getServerClient(); HttpResponse.builder().statusCode(204).payload(payloadFromResource("/server_allowed_arguments.json")).build()).getServerClient();
assertEquals(client.getServerAllowedArguments(), new ParseServerAllowedArgumentsTest().expected()); Map<String, ServerAllowedArguments> expected = new LinkedHashMap<String, ServerAllowedArguments>();
ServerAllowedArguments openvz = ServerAllowedArguments.builder()
.dataCenters("Amsterdam", "Falkenberg", "New York City", "Stockholm")
.memorySizes(128, 256, 512, 768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288)
.diskSizes(5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 150)
.cpuCores(1, 2, 3, 4, 5, 6, 7, 8)
.templates("Centos 5", "Centos 5 64-bit", "Centos 6 32-bit", "Centos 6 64-bit", "Debian 5.0 32-bit",
"Debian 5.0 64-bit", "Debian 6.0 32-bit", "Debian 6.0 64-bit", "Fedora Core 11", "Fedora Core 11 64-bit",
"Gentoo", "Gentoo 64-bit", "Scientific Linux 6", "Scientific Linux 6 64-bit", "Slackware 12",
"Ubuntu 10.04 LTS 32-bit", "Ubuntu 10.04 LTS 64-bit", "Ubuntu 11.04 64-bit")
.transfers(50, 100, 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
.build();
ServerAllowedArguments xen = ServerAllowedArguments.builder()
.memorySizes(512, 768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 14336, 16384)
.diskSizes(5, 10, 20, 30, 40, 50, 80, 100, 120, 140, 150, 160, 160, 200, 250, 300)
.cpuCores(1, 2, 3, 4, 5, 6, 7, 8)
.templates("CentOS 5.5 x64", "CentOS 5.5 x86", "Centos 6 x64", "Centos 6 x86", "Debian-6 x64",
"Debian 5.0.1 x64", "FreeBSD 8.2", "Gentoo 10.1 x64", "Ubuntu 8.04 x64", "Ubuntu 10.04 LTS 64-bit",
"Ubuntu 10.10 x64", "Ubuntu 11.04 x64", "Windows Server 2008 R2 x64 std",
"Windows Server 2008 R2 x64 web", "Windows Server 2008 x64 web", "Windows Server 2008 x86 web")
.transfers(50, 100, 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
.dataCenters("Falkenberg")
.build();
expected.put("Xen", xen);
expected.put("OpenVZ", openvz);
assertEquals(client.getServerAllowedArguments(), expected);
} }
public void testGetTemplatesWhenResponseIs2xx() throws Exception { public void testGetTemplatesWhenResponseIs2xx() throws Exception {
@ -94,10 +117,29 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(), .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_templates.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_templates.json")).build()).getServerClient();
assertEquals(client.getTemplates(), new ParseServerTemplatesTest().expected()); ImmutableSet.Builder<ServerTemplate> expectedBuilder = ImmutableSet.<ServerTemplate> builder();
for (String name : new String[] { "Centos 5", "Centos 5 64-bit", "Centos 6 32-bit", "Centos 6 64-bit",
"Debian 5.0 32-bit", "Debian 5.0 64-bit", "Debian 6.0 32-bit", "Debian 6.0 64-bit", "Fedora Core 11",
"Fedora Core 11 64-bit", "Gentoo", "Gentoo 64-bit", "Scientific Linux 6", "Scientific Linux 6 64-bit",
"Slackware 12", "Ubuntu 10.04 LTS 32-bit", "Ubuntu 10.04 LTS 64-bit", "Ubuntu 11.04 64-bit" }) {
expectedBuilder.add(new ServerTemplate(name, 5, 128, "linux", "OpenVZ"));
} }
public void testGetServerWhenResponseIs2xx() throws Exception { for (String name : new String[] { "CentOS 5.5 x64", "CentOS 5.5 x86", "Centos 6 x64", "Centos 6 x86",
"Debian-6 x64", "Debian 5.0.1 x64", "FreeBSD 8.2", "Gentoo 10.1 x64", "Ubuntu 8.04 x64",
"Ubuntu 10.04 LTS 64-bit", "Ubuntu 10.10 x64", "Ubuntu 11.04 x64" }) {
expectedBuilder.add(new ServerTemplate(name, 5, 512, name.startsWith("FreeBSD") ? "freebsd" : "linux", "Xen"));
}
for (String name : new String[] { "Windows Server 2008 R2 x64 std", "Windows Server 2008 R2 x64 web",
"Windows Server 2008 x64 web", "Windows Server 2008 x86 web" }) {
expectedBuilder.add(new ServerTemplate(name, 20, 1024, "windows", "Xen"));
}
assertEquals(client.getTemplates(), expectedBuilder.build());
}
public void testGetServerDetailsWhenResponseIs2xx() throws Exception {
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/details/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/details/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
@ -108,7 +150,29 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient();
ServerDetails actual = client.getServerDetails("server1ssg-1.1"); ServerDetails actual = client.getServerDetails("server1ssg-1.1");
assertEquals(actual.toString(), new ParseServerDetailsTest().expected().toString()); assertEquals(actual.toString(), expectedServerDetails().toString());
}
private ServerDetails expectedServerDetails() {
Ip ip = Ip.builder().version4().ip("31.192.226.45").cost(2.0).build();
Cost cost = Cost.builder().amount(6.38).currency("EUR").timePeriod("month").build();
return ServerDetails.builder().id("vz1375882").transfer(50).hostname("jclouds-unit").cpuCores(1).memorySize(128)
.diskSize(5).description("unit test server").datacenter("Falkenberg").platform("OpenVZ")
.templateName("Debian 6.0 64-bit").cost(cost).ips(ip).build();
}
@Test
public void testServerDetailsWhenResponseIs4xxReturnsNull() throws Exception {
ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/details/format/json"))
.headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server111").build())).build(),
HttpResponse.builder().statusCode(404).build()).getServerClient();
assertNull(client.getServerDetails("server111"));
} }
@Test @Test
@ -119,18 +183,22 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.put("Accept", "application/json") .put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("cpucores", "1").put("memorysize", "512") .put("cpucores", "1")
.put("memorysize", "512")
.put("datacenter", "Falkenberg") .put("datacenter", "Falkenberg")
.put("transfer", "50") .put("transfer", "50")
.put("rootpw", "password") .put("rootpassword", "password")
.put("hostname", "jclouds-test") .put("hostname", "jclouds-test")
.put("platform", "OpenVZ") .put("platform", "OpenVZ")
.put("template", "Ubuntu 32-bit") .put("templatename", "Ubuntu 32-bit")
.put("disksize", "5").build())).build(), .put("disksize", "5").build())).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_noip.json")).build()).getServerClient();
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(Ip.builder().ip("109.74.10.27").build()).build();
assertEquals(client.createServer("Falkenberg", "OpenVZ", "jclouds-test", "Ubuntu 32-bit", 5, 512, 1, "password", 50), expected); Cost cost = Cost.builder().amount(6.38).currency("EUR").timePeriod("month").build();
ServerDetails expected = ServerDetails.builder().id("vz1541880").hostname("mammamia").datacenter("Falkenberg").platform("OpenVZ")
.templateName("Ubuntu 11.04 64-bit").description("description").cpuCores(1).memorySize(128).diskSize(5).transfer(50).cost(cost).build();
assertEquals(client.createServer("Falkenberg", "OpenVZ", "jclouds-test", "Ubuntu 32-bit", 5, 512, 1, "password", 50).toString(), expected.toString());
} }
public void testCreateServerWithOptsWhenResponseIs2xx() throws Exception { public void testCreateServerWithOptsWhenResponseIs2xx() throws Exception {
@ -143,18 +211,18 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.put("cpucores", "1").put("memorysize", "512") .put("cpucores", "1").put("memorysize", "512")
.put("datacenter", "Falkenberg") .put("datacenter", "Falkenberg")
.put("transfer", "50") .put("transfer", "50")
.put("rootpw", "password") .put("rootpassword", "password")
.put("hostname", "jclouds-test") .put("hostname", "jclouds-test")
.put("platform", "OpenVZ") .put("platform", "OpenVZ")
.put("template", "Ubuntu 32-bit") .put("templatename", "Ubuntu 32-bit")
.put("disksize", "5") .put("disksize", "5")
.put("description", "Description-of-server") .put("description", "Description-of-server")
.put("ip", "10.0.0.1").build())).build(), .put("ip", "10.0.0.1").build())).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient();
ServerCreateOptions options = ServerCreateOptions.Builder.description("Description-of-server").ip("10.0.0.1");
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(Ip.builder().ip("109.74.10.27").build()).build();
assertEquals(client.createServer("Falkenberg", "OpenVZ", "jclouds-test", "Ubuntu 32-bit", 5, 512, 1, "password", 50, options), expected); ServerCreateOptions options = ServerCreateOptions.Builder.description("Description-of-server").ip("10.0.0.1");
assertEquals(client.createServer("Falkenberg", "OpenVZ", "jclouds-test", "Ubuntu 32-bit", 5, 512, 1, "password", 50, options), expectedServerDetails());
} }
@Test @Test
@ -162,6 +230,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server111").build())).build(), .put("serverid", "server111").build())).build(),
@ -175,6 +244,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server111") .put("serverid", "server111")
@ -202,10 +272,9 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server111") .put("serverid", "server111")
.put("hostname", "hostname1").build())).build(), .put("hostname", "hostname1").build())).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient();
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(Ip.builder().ip("109.74.10.27").build()).build();
assertEquals(client.cloneServer("server111", "hostname1"), expected); assertEquals(client.cloneServer("server111", "hostname1"), expectedServerDetails());
} }
@Test @Test
@ -222,11 +291,10 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
.put("disksize", "1") .put("disksize", "1")
.put("memorysize", "512") .put("memorysize", "512")
.put("cpucores", "1").build())).build(), .put("cpucores", "1").build())).build(),
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient(); HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient();
ServerCloneOptions options = (ServerCloneOptions) ServerCloneOptions.Builder.description("Description-of-server").disksize(1).memorysize(512).cpucores(1); ServerCloneOptions options = (ServerCloneOptions) ServerCloneOptions.Builder.description("Description-of-server").disksize(1).memorysize(512).cpucores(1);
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(Ip.builder().ip("109.74.10.27").build()).build();
assertEquals(client.cloneServer("server111", "hostname1", options), expected); assertEquals(client.cloneServer("server111", "hostname1", options), expectedServerDetails());
} }
@Test(expectedExceptions = {ResourceNotFoundException.class}) @Test(expectedExceptions = {ResourceNotFoundException.class})
@ -255,7 +323,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
HttpResponse.builder().statusCode(206).payload(payloadFromResource("/server_status.json")).build()) HttpResponse.builder().statusCode(206).payload(payloadFromResource("/server_status.json")).build())
.getServerClient(); .getServerClient();
assertEquals(client.getServerStatus("server111"), new ParseServerStatusTest().expected()); assertEquals(client.getServerStatus("server111"), expectedServerStatus());
} }
public void testGetServerStatusWithOptsWhenResponseIs2xx() throws Exception { public void testGetServerStatusWithOptsWhenResponseIs2xx() throws Exception {
@ -269,7 +337,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
HttpResponse.builder().statusCode(206).payload(payloadFromResource("/server_status.json")).build()) HttpResponse.builder().statusCode(206).payload(payloadFromResource("/server_status.json")).build())
.getServerClient(); .getServerClient();
assertEquals(client.getServerStatus("server321", ServerStatusOptions.Builder.state()), new ParseServerStatusTest().expected()); assertEquals(client.getServerStatus("server321", ServerStatusOptions.Builder.state()), expectedServerStatus());
} }
public void testGetServerStatusWhenResponseIs4xx() throws Exception { public void testGetServerStatusWhenResponseIs4xx() throws Exception {
@ -311,7 +379,9 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_console.json")).build()) HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_console.json")).build())
.getServerClient(); .getServerClient();
assertEquals(client.getServerConsole("server322"), new ParseServerConsoleTest().expected()); ServerConsole expected = ServerConsole.builder().host("79.99.2.147").port(59478).password("1476897311").protocol("vnc").build();
assertEquals(client.getServerConsole("server322"), expected);
} }
public void testGetServerConsoleWhenResponseIs4xx() throws Exception { public void testGetServerConsoleWhenResponseIs4xx() throws Exception {
@ -332,6 +402,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -346,6 +417,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -359,6 +431,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -372,6 +445,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").put("type", "hard").build())).build(), .put("serverid", "server777").put("type", "hard").build())).build(),
@ -386,6 +460,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -399,6 +474,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -413,6 +489,7 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
ServerClient client = requestSendsResponse( ServerClient client = requestSendsResponse(
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json")) HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json"))
.headers(ImmutableMultimap.<String, String>builder() .headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "application/json")
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()) .put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder() .payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
.put("serverid", "server777").build())).build(), .put("serverid", "server777").build())).build(),
@ -449,4 +526,14 @@ public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClien
client.destroyServer("server777", ServerDestroyOptions.Builder.discardIp()); client.destroyServer("server777", ServerDestroyOptions.Builder.discardIp());
} }
private ServerStatus expectedServerStatus() {
ResourceUsage cpu = ResourceUsage.builder().unit("cores").max(1.0).usage(0.0).build();
ResourceUsage disk = ResourceUsage.builder().unit("MB").usage(371.0).max(5120).build();
ResourceUsage memory = ResourceUsage.builder().unit("MB").usage(3.0).max(128).build();
ServerUptime uptime = ServerUptime.builder().current(23).unit("seconds").build();
return ServerStatus.builder().state(ServerState.RUNNING).uptime(uptime).
cpu(cpu).disk(disk).memory(memory).build();
}
} }

View File

@ -135,11 +135,11 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
public void testServerDetails() throws Exception { public void testServerDetails() throws Exception {
ServerDetails details = client.getServerDetails(testServerId); ServerDetails details = client.getServerDetails(testServerId);
checkServer(details); checkServer(details);
assertEquals("Ubuntu 10.04 LTS 32-bit", details.getTemplate()); assertEquals("Ubuntu 10.04 LTS 32-bit", details.getTemplateName());
assertEquals("Falkenberg", details.getDatacenter()); assertEquals("Falkenberg", details.getDatacenter());
assertEquals("OpenVZ", details.getPlatform()); assertEquals("OpenVZ", details.getPlatform());
assertEquals(5, details.getDisk()); assertEquals(5, details.getDiskSize());
assertEquals(512, details.getMemory()); assertEquals(512, details.getMemorySize());
assertEquals(1, details.getCpuCores()); assertEquals(1, details.getCpuCores());
assertEquals(50, details.getTransfer()); assertEquals(50, details.getTransfer());
} }
@ -155,7 +155,7 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
long uptime = 0; long uptime = 0;
while(uptime < 20) { while(uptime < 20) {
uptime = client.getServerStatus(testServerId).getUptime(); uptime = client.getServerStatus(testServerId).getUptime().getCurrent();
} }
assertTrue(uptime > 19); assertTrue(uptime > 19);
@ -164,7 +164,7 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
Thread.sleep(1000); Thread.sleep(1000);
uptime = client.getServerStatus(testServerId).getUptime(); uptime = client.getServerStatus(testServerId).getUptime().getCurrent();
assertTrue(uptime < 20); assertTrue(uptime < 20);
@ -211,7 +211,7 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
// takes a few minutes and requires an extra server (using 2 already) // takes a few minutes and requires an extra server (using 2 already)
@Test(enabled=false) @Test(enabled=false)
public void testCloneServer() throws Exception { public void testCloneServer() throws Exception {
ServerCreated testServer2 = client.cloneServer(testServerId, testHostName2, ServerCloneOptions.Builder.cpucores(1)); ServerDetails testServer2 = client.cloneServer(testServerId, testHostName2, ServerCloneOptions.Builder.cpucores(1));
assertNotNull(testServer2.getId()); assertNotNull(testServer2.getId());
assertEquals(testServer2.getHostname(), "jclouds-test2"); assertEquals(testServer2.getHostname(), "jclouds-test2");
@ -248,12 +248,12 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
private void checkServer(ServerDetails server) { private void checkServer(ServerDetails server) {
// description can be null // description can be null
assert server.getCpuCores() > 0 : server; assert server.getCpuCores() > 0 : server;
assert server.getDisk() > 0 : server; assert server.getDiskSize() > 0 : server;
assert server.getMemory() > 0 : server; assert server.getMemorySize() > 0 : server;
assert server.getCost() != null; assert server.getCost() != null;
assert server.getTransfer() > 0 : server; assert server.getTransfer() > 0 : server;
assertNotNull(server.getTemplate()); assertNotNull(server.getTemplateName());
assertNotNull(server.getIps()); assertNotNull(server.getIps());
} }
@ -261,28 +261,17 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
assertNotNull(status.getState()); assertNotNull(status.getState());
assertNotNull(status.getUptime()); assertNotNull(status.getUptime());
assertNotNull(status.getBandwidth());
assert status.getBandwidth().getToday() >= 0 : status;
assert status.getBandwidth().getLast30Days() >= 0 : status;
assert status.getBandwidth().getMax() >= 0 : status;
assertNotNull(status.getCpu()); for (ResourceUsage usage : new ResourceUsage[] { status.getCpu(), status.getDisk(), status.getMemory() }) {
assert status.getCpu().getSystem() >= 0.0 : status; assertNotNull(usage);
assert status.getCpu().getUser() >= 0.0 : status; assert usage.getMax() >= 0.0 : status;
if (status.getCpu().getNice() != null) { assert usage.getUsage() >= 0.0 : status;
assert status.getCpu().getNice() >= 0.0 : status;
assertNotNull(usage.getUnit());
} }
assert status.getCpu().getIdle() >= 0.0 : status;
assertNotNull(status.getCpu().getUnit());
assertNotNull(status.getDisk()); assertNotNull(status.getUptime());
assert status.getDisk().getSize() >= 0 : status; assert status.getUptime().getCurrent() > 0 : status;
assert status.getDisk().getUsed() >= 0 : status; assertNotNull(status.getUptime().getUnit());
assertNotNull(status.getDisk().getUnit());
assertNotNull(status.getMemory());
assert status.getMemory().getSize() > 0 : status;
assert status.getMemory().getUsage() >= 0 : status;
assertNotNull(status.getMemory().getUnit());
} }
} }

View File

@ -1,59 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ArchiveAllowedArguments;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerAllowedArgumentsTest")
public class ParseArchiveAllowedArgumentsTest extends BaseItemParserTest<ArchiveAllowedArguments> {
@Override
public String resource() {
return "/archive_allowed_arguments.json";
}
@Override
@SelectJson("argumentslist")
@Consumes(MediaType.APPLICATION_JSON)
public ArchiveAllowedArguments expected() {
return ArchiveAllowedArguments.builder().archiveSizes(new Integer[] {
10,20,30,40,50,60,70,80,90,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,550,600,650,700,750,800,850,900,950,1000
}).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,57 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ArchiveDetails;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
*
* @author Adrian Cole
*/
@Test(groups = "unit", testName = "ParseArchiveDetailsTest")
public class ParseArchiveDetailsTest extends BaseItemParserTest<ArchiveDetails> {
@Override
public String resource() {
return "/archive_details.json";
}
@Override
@SelectJson("details")
@Consumes(MediaType.APPLICATION_JSON)
public ArchiveDetails expected() {
return ArchiveDetails.builder().username("xxxxxx_test1").totalSize("30 GB").freeSize("30 GB").locked(false).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,60 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Archive;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
*
* @author Adrian Cole
*/
@Test(groups = "unit", testName = "ParseArchiveListTest")
public class ParseArchiveListTest extends BaseSetParserTest<Archive> {
@Override
public String resource() {
return "/archive_list.json";
}
@Override
@SelectJson("archives")
@Consumes(MediaType.APPLICATION_JSON)
public Set<Archive> expected() {
return ImmutableSet.of(Archive.builder().username("xxxxx_test1").totalSize("30 GB").freeSize("30 GB").locked(false).build());
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,71 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import static org.testng.Assert.fail;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Domain;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.common.collect.Sets;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseDomainListTest")
public class ParseDomainListTest extends BaseSetParserTest<Domain> {
@Override
public String resource() {
return "/domain_list.json";
}
@Override
@SelectJson("domains")
@Consumes(MediaType.APPLICATION_JSON)
public Set<Domain> expected() {
Date creationTime = null;
try {
creationTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-12-20 10:58:51");
} catch (ParseException e) {
fail("Bad dates!");
}
Domain domain = Domain.builder().domain("adamlowe.net").createTime(creationTime).recordCount(9).glesysNameServer(false).build();
return Sets.newHashSet(domain);
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,71 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import java.util.Arrays;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.DomainRecord;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSortedSet;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseDomainRecordListTest")
public class ParseDomainRecordListTest extends BaseSetParserTest<DomainRecord> {
@Override
public String resource() {
return "/domain_list_records.json";
}
@Override
@SelectJson("records")
@Consumes(MediaType.APPLICATION_JSON)
public Set<DomainRecord> expected() {
return ImmutableSortedSet.copyOf(
Arrays.asList(
DomainRecord.builder().id("213227").zone("adamlowe.net").host("@").type("NS").data("ns1.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213228").zone("adamlowe.net").host("@").type("NS").data("ns2.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213229").zone("adamlowe.net").host("@").type("NS").data("ns3.namesystem.se.").ttl(3600).build(),
DomainRecord.builder().id("213230").zone("adamlowe.net").host("@").type("A").data("127.0.0.1").ttl(3600).build(),
DomainRecord.builder().id("213231").zone("adamlowe.net").host("www").type("A").data("127.0.0.1").ttl(3600).build(),
DomainRecord.builder().id("213232").zone("adamlowe.net").host("mail").type("A").data("79.99.4.40").ttl(3600).build(),
DomainRecord.builder().id("213233").zone("adamlowe.net").host("@").type("MX").data("mx01.glesys.se.").ttl(3600).build(),
DomainRecord.builder().id("213234").zone("adamlowe.net").host("@").type("MX").data("mx02.glesys.se.").ttl(3600).build(),
DomainRecord.builder().id("213235").zone("adamlowe.net").host("@").type("TXT").data("v=spf1 include:spf.glesys.se -all").ttl(3600).build()
));
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,69 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Email;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Set;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseEmailListTest")
public class ParseEmailListTest extends BaseSetParserTest<Email> {
@Override
public String resource() {
return "/email_list.json";
}
@Override
@SelectJson("emailaccounts")
@Consumes(MediaType.APPLICATION_JSON)
public Set<Email> expected() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Email.Builder builder = Email.builder().quota("200 MB").usedQuota("0 MB").antispamLevel(3).antiVirus(true).autoRespond(false).autoRespondSaveEmail(true).autoRespondMessage("false");
try {
return ImmutableSet.of(
builder.account("test@adamlowe.net").created(dateFormat.parse("2011-12-22T12:13:14")).modified(dateFormat.parse("2011-12-22T12:13:35")).build(),
builder.account("test2@adamlowe.net").created(dateFormat.parse("2011-12-22T12:14:29")).modified(dateFormat.parse("2011-12-22T12:14:31")).build()
);
} catch(ParseException ex) {
throw new RuntimeException(ex);
}
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,57 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.EmailOverview;
import org.jclouds.glesys.domain.EmailOverviewDomain;
import org.jclouds.glesys.domain.EmailOverviewSummary;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseEmailListTest")
public class ParseEmailOverviewTest extends BaseItemParserTest<EmailOverview> {
@Override
public String resource() {
return "/email_overview.json";
}
@Override
@SelectJson("response")
@Consumes(MediaType.APPLICATION_JSON)
public EmailOverview expected() {
return EmailOverview.builder().summary(EmailOverviewSummary.builder().accounts(2).aliases(0).maxAccounts(50).maxAliases(1000).build()).domains(EmailOverviewDomain.builder().accounts(2).aliases(0).domain("adamlowe.net").build()).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,81 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import java.util.*;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ServerAllowedArguments;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerAllowedArgumentsTest")
public class ParseServerAllowedArgumentsTest extends BaseItemParserTest<Map<String, ServerAllowedArguments>> {
@Override
public String resource() {
return "/server_allowed_arguments.json";
}
@Override
@SelectJson("argumentslist")
@Consumes(MediaType.APPLICATION_JSON)
public Map<String, ServerAllowedArguments> expected() {
Map<String, ServerAllowedArguments> result = new LinkedHashMap<String, ServerAllowedArguments>();
ServerAllowedArguments openvz = ServerAllowedArguments.builder()
.dataCenters("Amsterdam", "Falkenberg", "New York City", "Stockholm")
.memorySizes(128, 256, 512, 768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288)
.diskSizes(5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 150)
.cpuCores(1, 2, 3, 4, 5, 6, 7, 8)
.templates("Centos 5", "Centos 5 64-bit", "Centos 6 32-bit", "Centos 6 64-bit", "Debian 5.0 32-bit",
"Debian 5.0 64-bit", "Debian 6.0 32-bit", "Debian 6.0 64-bit", "Fedora Core 11", "Fedora Core 11 64-bit",
"Gentoo", "Gentoo 64-bit", "Scientific Linux 6", "Scientific Linux 6 64-bit", "Slackware 12",
"Ubuntu 10.04 LTS 32-bit", "Ubuntu 10.04 LTS 64-bit", "Ubuntu 11.04 64-bit")
.transfers(50, 100, 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
.build();
ServerAllowedArguments xen = ServerAllowedArguments.builder()
.memorySizes(512, 768, 1024, 1536, 2048, 2560, 3072, 3584, 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, 12288, 14336, 16384)
.diskSizes(5, 10, 20, 30, 40, 50, 80, 100, 120, 140, 150, 160, 160, 200, 250, 300)
.cpuCores(1, 2, 3, 4, 5, 6, 7, 8)
.templates("CentOS 5.5 x64", "CentOS 5.5 x86", "Centos 6 x64", "Centos 6 x86", "Debian-6 x64",
"Debian 5.0.1 x64", "FreeBSD 8.2", "Gentoo 10.1 x64", "Ubuntu 8.04 x64", "Ubuntu 10.04 LTS 64-bit",
"Ubuntu 10.10 x64", "Ubuntu 11.04 x64", "Windows Server 2008 R2 x64 std",
"Windows Server 2008 R2 x64 web", "Windows Server 2008 x64 web", "Windows Server 2008 x86 web")
.transfers(50, 100, 250, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000)
.dataCenters("Falkenberg")
.build();
result.put("Xen", xen);
result.put("OpenVZ", openvz);
return result;
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,56 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ServerConsole;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerCreatedTest")
public class ParseServerConsoleTest extends BaseItemParserTest<ServerConsole> {
@Override
public String resource() {
return "/server_console.json";
}
@Override
@SelectJson("remote")
@Consumes(MediaType.APPLICATION_JSON)
public ServerConsole expected() {
return ServerConsole.builder().host("79.99.2.147").port(59478).password("1476897311").build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,57 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ServerCreated;
import org.jclouds.glesys.domain.Ip;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerCreatedTest")
public class ParseServerCreatedTest extends BaseItemParserTest<ServerCreated> {
@Override
public String resource() {
return "/server_created.json";
}
@Override
@SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON)
public ServerCreated expected() {
return ServerCreated.builder().id("xm3630641").hostname("jclouds-test-host").ips(Ip.builder().ip("109.74.10.27").version4().cost(2.00).build()).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,61 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Cost;
import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.glesys.domain.Ip;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerDetailsTest")
public class ParseServerDetailsTest extends BaseItemParserTest<ServerDetails> {
@Override
public String resource() {
return "/server_details.json";
}
@Override
@SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON)
public ServerDetails expected() {
Ip ip = Ip.builder().version4().ip("31.192.226.45").cost(2.0).build();
Cost cost = Cost.builder().amount(6.38).currency("EUR").timePeriod("month").build();
return ServerDetails.builder().id("vz1375882").transfer(50).hostname("jclouds-unit").cpuCores(1).memory(128).disk(5)
.description("unit test server").datacenter("Falkenberg").platform("OpenVZ").template("Debian 6.0 64-bit")
.cost(cost).ips(ip).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,62 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Cost;
import org.jclouds.glesys.domain.ServerDetails;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
*
* @author Adrian Cole
*/
@Test(groups = "unit", testName = "ParseServerDetailsWithoutIPsTest")
public class ParseServerDetailsWithoutIPsTest extends BaseItemParserTest<ServerDetails> {
@Override
public String resource() {
return "/server_noip.json";
}
@Override
@SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON)
public ServerDetails expected() {
Cost cost = Cost.builder().amount(6.38).currency("EUR").timePeriod("month").build();
return ServerDetails.builder().id("vz1541880").hostname("mammamia").datacenter("Falkenberg").platform("OpenVZ")
.template("Ubuntu 11.04 64-bit").description("description").cpuCores(1).memory(128).disk(5).transfer(50).cost(cost).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,61 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Server;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
*
* @author Adrian Cole
*/
@Test(groups = "unit", testName = "ParseServerListTest")
public class ParseServerListTest extends BaseSetParserTest<Server> {
@Override
public String resource() {
return "/server_list.json";
}
@Override
@SelectJson("servers")
@Consumes(MediaType.APPLICATION_JSON)
public Set<Server> expected() {
return ImmutableSet.of(Server.builder().id("vz1541880").hostname("mammamia").datacenter("Falkenberg")
.platform("OpenVZ").build());
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,67 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.Bandwidth;
import org.jclouds.glesys.domain.Cpu;
import org.jclouds.glesys.domain.Disk;
import org.jclouds.glesys.domain.Memory;
import org.jclouds.glesys.domain.ServerState;
import org.jclouds.glesys.domain.ServerStatus;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerStatusTest")
public class ParseServerStatusTest extends BaseItemParserTest<ServerStatus> {
@Override
public String resource() {
return "/server_status.json";
}
@Override
@SelectJson("server")
@Consumes(MediaType.APPLICATION_JSON)
public ServerStatus expected() {
Bandwidth bandwidth = Bandwidth.builder().today(0).last30Days(0).max(50).build();
Cpu cpu = Cpu.builder().unit("%").idle(100.0).system(0.0).user(0.0).nice(0.0).build();
Disk disk = Disk.builder().unit("MB").size(0).used(0).build();
Memory memory = Memory.builder().unit("MB").usage(3).size(128).build();
return ServerStatus.builder().state(ServerState.RUNNING).uptime(38 * 60 + 6).bandwidth(bandwidth).
cpu(cpu).disk(disk).memory(memory).build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,80 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import java.util.Set;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.ServerTemplate;
import org.jclouds.glesys.functions.ParseServerTemplatesFromHttpResponse;
import org.jclouds.json.BaseSetParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.ResponseParser;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Adam Lowe
*/
@Test(groups = "unit", testName = "ParseServerTemplatesTest")
public class ParseServerTemplatesTest extends BaseSetParserTest<ServerTemplate> {
@Override
public String resource() {
return "/server_templates.json";
}
@Override
@ResponseParser(ParseServerTemplatesFromHttpResponse.class)
@Consumes(MediaType.APPLICATION_JSON)
public Set<ServerTemplate> expected() {
Builder<ServerTemplate> builder = ImmutableSet.<ServerTemplate> builder();
for (String name : new String[] { "Centos 5", "Centos 5 64-bit", "Centos 6 32-bit", "Centos 6 64-bit",
"Debian 5.0 32-bit", "Debian 5.0 64-bit", "Debian 6.0 32-bit", "Debian 6.0 64-bit", "Fedora Core 11",
"Fedora Core 11 64-bit", "Gentoo", "Gentoo 64-bit", "Scientific Linux 6", "Scientific Linux 6 64-bit",
"Slackware 12", "Ubuntu 10.04 LTS 32-bit", "Ubuntu 10.04 LTS 64-bit", "Ubuntu 11.04 64-bit" }) {
builder.add(new ServerTemplate(name, 5, 128, "linux", "OpenVZ"));
}
for (String name : new String[] { "CentOS 5.5 x64", "CentOS 5.5 x86", "Centos 6 x64", "Centos 6 x86",
"Debian-6 x64", "Debian 5.0.1 x64", "FreeBSD 8.2", "Gentoo 10.1 x64", "Ubuntu 8.04 x64",
"Ubuntu 10.04 LTS 64-bit", "Ubuntu 10.10 x64", "Ubuntu 11.04 x64" }) {
builder.add(new ServerTemplate(name, 5, 512, name.startsWith("FreeBSD") ? "freebsd" : "linux", "Xen"));
}
for (String name : new String[] { "Windows Server 2008 R2 x64 std", "Windows Server 2008 R2 x64 web",
"Windows Server 2008 x64 web", "Windows Server 2008 x86 web" }) {
builder.add(new ServerTemplate(name, 20, 1024, "windows", "Xen"));
}
return builder.build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1,59 +0,0 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds 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.glesys.parse;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.jclouds.glesys.config.GleSYSParserModule;
import org.jclouds.glesys.domain.IpDetails;
import org.jclouds.json.BaseItemParserTest;
import org.jclouds.json.config.GsonModule;
import org.jclouds.rest.annotations.SelectJson;
import org.testng.annotations.Test;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
/**
* @author Mattias Holmqvist
*/
@Test(groups = "unit", testName = "ParseSimpleIpDetailsTest")
public class ParseSimpleIpDetailsTest extends BaseItemParserTest<IpDetails> {
@Override
protected String resource() {
return "/ip_get_details.json";
}
@Override
@SelectJson("details")
@Consumes(MediaType.APPLICATION_JSON)
public IpDetails expected() {
return IpDetails.builder()
.datacenter("Falkenberg")
.ipversion("4")
.platform("OpenVZ")
.ptr("31-192-227-37-static.serverhotell.net.").build();
}
protected Injector injector() {
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
}
}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"argumentslist":{"Xen":{"disksize":["5","10","20","30","40","50","80","100","120","140","150","160","160","200","250","300"],"memorysize":["512","768","1024","1536","2048","2560","3072","3584","4096","5120","6144","7168","8192","9216","10240","11264","12288","14336","16384"],"cpucores":["1","2","3","4","5","6","7","8"],"template":["CentOS 5.5 x64","CentOS 5.5 x86","Centos 6 x64","Centos 6 x86","Debian-6 x64","Debian 5.0.1 x64","FreeBSD 8.2","Gentoo 10.1 x64","Ubuntu 8.04 x64","Ubuntu 10.04 LTS 64-bit","Ubuntu 10.10 x64","Ubuntu 11.04 x64","Windows Server 2008 R2 x64 std","Windows Server 2008 R2 x64 web","Windows Server 2008 x64 web","Windows Server 2008 x86 web"],"transfer":["50","100","250","500","1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"],"datacenter":["Falkenberg"]},"OpenVZ":{"disksize":["5","10","20","30","40","50","60","70","80","90","100","120","140","150"],"memorysize":["128","256","512","768","1024","1536","2048","2560","3072","3584","4096","5120","6144","7168","8192","9216","10240","11264","12288"],"cpucores":["1","2","3","4","5","6","7","8"],"template":["Centos 5","Centos 5 64-bit","Centos 6 32-bit","Centos 6 64-bit","Debian 5.0 32-bit","Debian 5.0 64-bit","Debian 6.0 32-bit","Debian 6.0 64-bit","Fedora Core 11","Fedora Core 11 64-bit","Gentoo","Gentoo 64-bit","Scientific Linux 6","Scientific Linux 6 64-bit","Slackware 12","Ubuntu 10.04 LTS 32-bit","Ubuntu 10.04 LTS 64-bit","Ubuntu 11.04 64-bit"],"transfer":["50","100","250","500","1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"],"datacenter":["Amsterdam","Falkenberg","New York City","Stockholm"]}},"debug":{"input":[]}}} {"response":{"status":{"code":200,"text":"OK"},"argumentslist":{"Xen":{"disksize":["5","10","20","30","40","50","80","100","120","140","150","160","160","200","250","300"],"memorysize":["512","768","1024","1536","2048","2560","3072","3584","4096","5120","6144","7168","8192","9216","10240","11264","12288","14336","16384"],"cpucores":["1","2","3","4","5","6","7","8"],"template":["CentOS 5.5 x64","CentOS 5.5 x86","Centos 6 x64","Centos 6 x86","Debian-6 x64","Debian 5.0.1 x64","FreeBSD 8.2","Gentoo 10.1 x64","Ubuntu 8.04 x64","Ubuntu 10.04 LTS 64-bit","Ubuntu 10.10 x64","Ubuntu 11.04 x64","Windows Server 2008 R2 x64 std","Windows Server 2008 R2 x64 web","Windows Server 2008 x64 web","Windows Server 2008 x86 web"],"transfer":["50","100","250","500","1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"],"datacenter":["Falkenberg"]},"OpenVZ":{"disksize":["5","10","20","30","40","50","60","70","80","90","100","120","140","150"],"memorysize":["128","256","512","768","1024","1536","2048","2560","3072","3584","4096","5120","6144","7168","8192","9216","10240","11264","12288"],"cpucores":["1","2","3","4","5","6","7","8"],"template":["Centos 5","Centos 5 64-bit","Centos 6 32-bit","Centos 6 64-bit","Debian 5.0 32-bit","Debian 5.0 64-bit","Debian 6.0 32-bit","Debian 6.0 64-bit","Fedora Core 11","Fedora Core 11 64-bit","Gentoo","Gentoo 64-bit","Scientific Linux 6","Scientific Linux 6 64-bit","Slackware 12","Ubuntu 10.04 LTS 32-bit","Ubuntu 10.04 LTS 64-bit","Ubuntu 11.04 64-bit"],"transfer":["50","100","250","500","1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"],"datacenter":["Amsterdam","Falkenberg","New York City","Stockholm"]}},"debug":{"input":[]}}}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"remote":{"host":"79.99.2.147","port":"59478","password":"1476897311"},"debug":{"input":{"serverid":"vz1842554"}}}} {"response":{"status":{"code":"200","text":"OK"},"console":{"host":"79.99.2.147","port":"59478","protocol":"vnc","password":"1476897311"},"debug":{"input":{"serverid":"vz1842554"}}}}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"server":{"serverid":"vz1375882","hostname":"jclouds-unit","description":"unit test server","cpucores":"1","memory":"128","disk":"5","transfer":"50","template":"Debian 6.0 64-bit","datacenter":"Falkenberg","managedhosting":"no","platform":"OpenVZ","cost":{"amount":6.38,"currency":"EUR","timeperiod":"month"},"iplist":[{"ip":"31.192.226.45","version":"4","cost":"2.00"}]},"debug":{"input":{"serverid":"vz1375882"}}}} {"response":{"status":{"code":"200","text":"OK"},"server":{"serverid":"vz1375882","hostname":"jclouds-unit","description":"unit test server","cpucores":"1","memorysize":"128","disksize":"5","transfer":"50","templatename":"Debian 6.0 64-bit","datacenter":"Falkenberg","managedhosting":"no","platform":"OpenVZ","cost":{"amount":6.38,"currency":"EUR","timeperiod":"month"},"iplist":[{"ip":"31.192.226.45","version":"4","cost":"2.00"}]},"debug":{"input":{"serverid":"vz1375882"}}}}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"server":{"serverid":"vz1541880","hostname":"mammamia","description":"description","cpucores":"1","memory":"128","disk":"5","transfer":"50","template":"Ubuntu 11.04 64-bit","datacenter":"Falkenberg","managedhosting":"no","platform":"OpenVZ","cost":{"amount":6.38,"currency":"EUR","timeperiod":"month"},"iplist":[]},"debug":{"serverid":"vz1541880"}}} {"response":{"status":{"code":"200","text":"OK"},"server":{"serverid":"vz1541880","hostname":"mammamia","description":"description","cpucores":"1","memorysize":"128","disksize":"5","transfer":"50","templatename":"Ubuntu 11.04 64-bit","datacenter":"Falkenberg","managedhosting":"no","platform":"OpenVZ","cost":{"amount":6.38,"currency":"EUR","timeperiod":"month"},"iplist":[]},"debug":{"serverid":"vz1541880"}}}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"server":{"state":"running","cpu":{"system":"0.00","user":"0.00","nice":"0.00","idle":"100.00","unit":"%"},"memory":{"memusage":"3","memsize":"128","unit":"MB"},"disk":{"diskused":372,"disksize":5120,"unit":"MB"},"bandwidth":{"today":0,"last30days":0,"max":"50"},"uptime":"0 0 0 0 0 38 6"},"debug":{"input":{"serverid":"vz1188183"}}}} {"response":{"status":{"code":200,"text":"OK"},"server":{"state":"running","cpu":{"usage":0,"max":1,"unit":"cores"},"memory":{"usage":3,"max":128,"unit":"MB"},"disk":{"usage":371,"max":5120,"unit":"MB"},"transfer":{"usage":0,"max":50,"unit":"GB last 30 days"},"uptime":{"current":23,"unit":"seconds"}},"debug":{"input":{"serverid":"vz1952928"}}}}

View File

@ -1 +1 @@
{"response":{"status":{"code":"200","text":"OK"},"templates":{"OpenVZ":[{"name":"Centos 5","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Centos 5 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Centos 6 32-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Centos 6 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Debian 5.0 32-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Debian 5.0 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Debian 6.0 32-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Debian 6.0 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Fedora Core 11","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Fedora Core 11 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Gentoo","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Gentoo 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Scientific Linux 6","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Scientific Linux 6 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Slackware 12","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Ubuntu 10.04 LTS 32-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Ubuntu 10.04 LTS 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"},{"name":"Ubuntu 11.04 64-bit","min_disk_size":"5","min_mem_size":"128","os":"linux","platform":"OpenVZ"}],"Xen":[{"name":"CentOS 5.5 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"CentOS 5.5 x86","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Centos 6 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Centos 6 x86","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Debian-6 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Debian 5.0.1 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"FreeBSD 8.2","min_disk_size":"5","min_mem_size":"512","os":"freebsd","platform":"Xen"},{"name":"Gentoo 10.1 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Ubuntu 8.04 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Ubuntu 10.04 LTS 64-bit","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Ubuntu 10.10 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Ubuntu 11.04 x64","min_disk_size":"5","min_mem_size":"512","os":"linux","platform":"Xen"},{"name":"Windows Server 2008 R2 x64 std","min_disk_size":"20","min_mem_size":"1024","os":"windows","platform":"Xen"},{"name":"Windows Server 2008 R2 x64 web","min_disk_size":"20","min_mem_size":"1024","os":"windows","platform":"Xen"},{"name":"Windows Server 2008 x64 web","min_disk_size":"20","min_mem_size":"1024","os":"windows","platform":"Xen"},{"name":"Windows Server 2008 x86 web","min_disk_size":"20","min_mem_size":"1024","os":"windows","platform":"Xen"}]},"debug":{"input":[]}}} {"response":{"status":{"code":200,"text":"OK"},"templates":{"OpenVZ":[{"name":"Centos 5","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Centos 5 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Centos 6 32-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Centos 6 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Debian 5.0 32-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Debian 5.0 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Debian 6.0 32-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Debian 6.0 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Fedora Core 11","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Fedora Core 11 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Gentoo","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Gentoo 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Scientific Linux 6","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Scientific Linux 6 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Slackware 12","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Ubuntu 10.04 LTS 32-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Ubuntu 10.04 LTS 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"},{"name":"Ubuntu 11.04 64-bit","minimumdisksize":"5","minimummemorysize":"128","operatingsystem":"linux","platform":"OpenVZ"}],"Xen":[{"name":"CentOS 5.5 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"CentOS 5.5 x86","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Centos 6 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Centos 6 x86","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Debian-6 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Debian 5.0.1 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"FreeBSD 8.2","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"freebsd","platform":"Xen"},{"name":"Gentoo 10.1 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Ubuntu 8.04 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Ubuntu 10.04 LTS 64-bit","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Ubuntu 10.10 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Ubuntu 11.04 x64","minimumdisksize":"5","minimummemorysize":"512","operatingsystem":"linux","platform":"Xen"},{"name":"Windows Server 2008 R2 x64 std","minimumdisksize":"20","minimummemorysize":"1024","operatingsystem":"windows","platform":"Xen"},{"name":"Windows Server 2008 R2 x64 web","minimumdisksize":"20","minimummemorysize":"1024","operatingsystem":"windows","platform":"Xen"},{"name":"Windows Server 2008 x64 web","minimumdisksize":"20","minimummemorysize":"1024","operatingsystem":"windows","platform":"Xen"},{"name":"Windows Server 2008 x86 web","minimumdisksize":"20","minimummemorysize":"1024","operatingsystem":"windows","platform":"Xen"}]},"debug":{"input":[]}}}