mirror of https://github.com/apache/jclouds.git
Merge pull request #308 from aplowe/master
Improving javadoc comments and converting AsyncClientTests to ClientExpectTests
This commit is contained in:
commit
2f08d13fd6
|
@ -74,18 +74,22 @@ public class Archive implements Comparable<Archive> {
|
||||||
private final String freeSize;
|
private final String freeSize;
|
||||||
private final boolean locked;
|
private final boolean locked;
|
||||||
|
|
||||||
|
/** @return the name (username) of the archive */
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the total size of the archive, ex. "10 GB" */
|
||||||
public String getTotalSize() {
|
public String getTotalSize() {
|
||||||
return totalSize;
|
return totalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the free space left of the archive */
|
||||||
public String getFreeSize() {
|
public String getFreeSize() {
|
||||||
return freeSize;
|
return freeSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return true if the archive is locked */
|
||||||
public boolean isLocked() {
|
public boolean isLocked() {
|
||||||
return locked;
|
return locked;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +101,6 @@ public class Archive implements Comparable<Archive> {
|
||||||
this.locked = locked;
|
this.locked = locked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hashCode(username);
|
return Objects.hashCode(username);
|
||||||
|
|
|
@ -84,18 +84,22 @@ public class Domain implements Comparable<Domain> {
|
||||||
this.glesysNameServer = glesysNameServer;
|
this.glesysNameServer = glesysNameServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the domain name, ex. "jclouds.org" */
|
||||||
public String getDomain() {
|
public String getDomain() {
|
||||||
return domain;
|
return domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the date the domain was registered with GleSYS */
|
||||||
public Date getCreateTime() {
|
public Date getCreateTime() {
|
||||||
return createTime;
|
return createTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the number of DNS records for this domain */
|
||||||
public int getRecordCount() {
|
public int getRecordCount() {
|
||||||
return recordCount;
|
return recordCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return true if a GleSYS nameserver holds the records */
|
||||||
public boolean getGlesysNameServer() {
|
public boolean getGlesysNameServer() {
|
||||||
return glesysNameServer;
|
return glesysNameServer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,26 +95,45 @@ public class DomainRecord implements Comparable<DomainRecord> {
|
||||||
this.ttl = ttl;
|
this.ttl = ttl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the id of the record used to modify it via the API
|
||||||
|
* @see org.jclouds.glesys.features.DomainClient
|
||||||
|
*/
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the zone content of the record
|
||||||
|
*/
|
||||||
public String getZone() {
|
public String getZone() {
|
||||||
return zone;
|
return zone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the host content of the record
|
||||||
|
*/
|
||||||
public String getHost() {
|
public String getHost() {
|
||||||
return host;
|
return host;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the type of the record, ex. "A"
|
||||||
|
*/
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the data content of the record
|
||||||
|
*/
|
||||||
public String getData() {
|
public String getData() {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the TTL/Time-to-live for the record
|
||||||
|
*/
|
||||||
public int getTtl() {
|
public int getTtl() {
|
||||||
return ttl;
|
return ttl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,26 +139,32 @@ public class Email implements Comparable<Email> {
|
||||||
this.modified = modified;
|
this.modified = modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the e-mail address for this e-mail account */
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the quota for this e-mail account */
|
||||||
public String getQuota() {
|
public String getQuota() {
|
||||||
return quota;
|
return quota;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the amount of quota currently in use */
|
||||||
public String getUsedQuota() {
|
public String getUsedQuota() {
|
||||||
return usedQuota;
|
return usedQuota;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the antispam level of the e-mail account */
|
||||||
public int getAntispamLevel() {
|
public int getAntispamLevel() {
|
||||||
return antispamLevel;
|
return antispamLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return true if antivirus is enabled for this e-mail account */
|
||||||
public boolean getAntiVirus() {
|
public boolean getAntiVirus() {
|
||||||
return antiVirus;
|
return antiVirus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return true if auto-respond is enabled for this e-mail account */
|
||||||
public boolean getAutoRespond() {
|
public boolean getAutoRespond() {
|
||||||
return autoRespond;
|
return autoRespond;
|
||||||
}
|
}
|
||||||
|
@ -167,14 +173,17 @@ public class Email implements Comparable<Email> {
|
||||||
return autoRespondMessage;
|
return autoRespondMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return true if saving is enabled for auto-respond e-mails */
|
||||||
public boolean getAutoRespondSaveEmail() {
|
public boolean getAutoRespondSaveEmail() {
|
||||||
return autoRespondSaveEmail;
|
return autoRespondSaveEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return when this account was created */
|
||||||
public Date getCreated() {
|
public Date getCreated() {
|
||||||
return created;
|
return created;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return when this account was last modified */
|
||||||
public Date getModified() {
|
public Date getModified() {
|
||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,8 @@ import com.google.common.collect.ImmutableSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Structure containing all information about e-mail addresses for a GleSYS account
|
||||||
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
||||||
*/
|
*/
|
||||||
|
@ -68,10 +70,12 @@ public class EmailOverview {
|
||||||
this.domains = domains;
|
this.domains = domains;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return summary information about the account */
|
||||||
public EmailOverviewSummary getSummary() {
|
public EmailOverviewSummary getSummary() {
|
||||||
return summary;
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the set of detailed information about the e-mail addresses and aliases for each domain */
|
||||||
public Set<EmailOverviewDomain> getDomains() {
|
public Set<EmailOverviewDomain> getDomains() {
|
||||||
return domains == null ? ImmutableSet.<EmailOverviewDomain>of() : domains;
|
return domains == null ? ImmutableSet.<EmailOverviewDomain>of() : domains;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ package org.jclouds.glesys.domain;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Detailed information about e-mail settings for a single domain
|
||||||
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
||||||
*/
|
*/
|
||||||
|
@ -68,14 +70,17 @@ public class EmailOverviewDomain {
|
||||||
this.aliases = aliases;
|
this.aliases = aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the domain name */
|
||||||
public String getDomain() {
|
public String getDomain() {
|
||||||
return domain;
|
return domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the number of e-mail accounts in the domain */
|
||||||
public int getAccounts() {
|
public int getAccounts() {
|
||||||
return accounts;
|
return accounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the number of e-mail aliases in the domain */
|
||||||
public int getAliases() {
|
public int getAliases() {
|
||||||
return aliases;
|
return aliases;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,8 @@ import com.google.common.base.Objects;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Summary information of e-mail settings and limits for a GleSYS account
|
||||||
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
* @see <a href="https://customer.glesys.com/api.php?a=doc#email_overview" />
|
||||||
*/
|
*/
|
||||||
|
@ -79,18 +81,22 @@ public class EmailOverviewSummary {
|
||||||
this.maxAliases = maxAliases;
|
this.maxAliases = maxAliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the number of e-mail accounts */
|
||||||
public int getAccounts() {
|
public int getAccounts() {
|
||||||
return accounts;
|
return accounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the maximum number of e-mail accounts */
|
||||||
public int getMaxAccounts() {
|
public int getMaxAccounts() {
|
||||||
return maxAccounts;
|
return maxAccounts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the number of e-mail aliases */
|
||||||
public int getAliases() {
|
public int getAliases() {
|
||||||
return aliases;
|
return aliases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the maximum number of e-mail aliases */
|
||||||
public int getMaxAliases() {
|
public int getMaxAliases() {
|
||||||
return maxAliases;
|
return maxAliases;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ import com.google.common.collect.ImmutableList;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connection information to connect to a server with VNC.
|
* Information about a new server
|
||||||
*
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
* @see <a href="https://customer.glesys.com/api.php?a=doc#server_create" />
|
* @see <a href="https://customer.glesys.com/api.php?a=doc#server_create" />
|
||||||
|
@ -49,6 +49,7 @@ public class ServerCreated {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder ips(List<ServerCreatedIp> ips) {
|
public Builder ips(List<ServerCreatedIp> ips) {
|
||||||
this.ips = ips;
|
this.ips = ips;
|
||||||
return this;
|
return this;
|
||||||
|
@ -85,14 +86,20 @@ public class ServerCreated {
|
||||||
this.ips = ips;
|
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() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the hostname of the server */
|
||||||
public String getHostname() {
|
public String getHostname() {
|
||||||
return hostname;
|
return hostname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return the IP addresses assigned to the server */
|
||||||
public List<ServerCreatedIp> getIps() {
|
public List<ServerCreatedIp> getIps() {
|
||||||
return ips == null ? ImmutableList.<ServerCreatedIp>of() : ips;
|
return ips == null ? ImmutableList.<ServerCreatedIp>of() : ips;
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ public class ServerDetails extends Server {
|
||||||
public ServerDetails(String id, String hostname, String datacenter, String platform, String description,
|
public ServerDetails(String id, String hostname, String datacenter, String platform, String description,
|
||||||
int cpuCores, int memory, int disk, Cost cost) {
|
int cpuCores, int memory, int disk, Cost cost) {
|
||||||
super(id, hostname, datacenter, platform);
|
super(id, hostname, datacenter, platform);
|
||||||
this.description = checkNotNull(description, "description");
|
this.description = description;
|
||||||
this.cpuCores = cpuCores;
|
this.cpuCores = cpuCores;
|
||||||
this.memory = memory;
|
this.memory = memory;
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
|
|
|
@ -150,7 +150,7 @@ public class ServerStatus {
|
||||||
&& 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(bandwidth, other.bandwidth)
|
||||||
&& uptime == other.uptime;
|
&& Objects.equal(uptime, other.uptime);
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,6 +81,9 @@ public class ServerUptime {
|
||||||
return new ServerUptime(time);
|
return new ServerUptime(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the number of seconds the server has been up
|
||||||
|
*/
|
||||||
public long getTime() {
|
public long getTime() {
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ public interface ArchiveAsyncClient {
|
||||||
@Path("/archive/allowedarguments/format/json")
|
@Path("/archive/allowedarguments/format/json")
|
||||||
@SelectJson("argumentslist")
|
@SelectJson("argumentslist")
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
ListenableFuture<ArchiveAllowedArguments> getArchiveAllowedArguments();
|
ListenableFuture<ArchiveAllowedArguments> getArchiveAllowedArguments();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,9 +21,10 @@ package org.jclouds.glesys.features;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import org.jclouds.glesys.domain.Domain;
|
import org.jclouds.glesys.domain.Domain;
|
||||||
import org.jclouds.glesys.domain.DomainRecord;
|
import org.jclouds.glesys.domain.DomainRecord;
|
||||||
|
import org.jclouds.glesys.options.DomainAddOptions;
|
||||||
import org.jclouds.glesys.options.DomainOptions;
|
import org.jclouds.glesys.options.DomainOptions;
|
||||||
import org.jclouds.glesys.options.DomainRecordAddOptions;
|
import org.jclouds.glesys.options.DomainRecordAddOptions;
|
||||||
import org.jclouds.glesys.options.DomainRecordModifyOptions;
|
import org.jclouds.glesys.options.DomainRecordEditOptions;
|
||||||
import org.jclouds.http.filters.BasicAuthentication;
|
import org.jclouds.http.filters.BasicAuthentication;
|
||||||
import org.jclouds.rest.annotations.ExceptionParser;
|
import org.jclouds.rest.annotations.ExceptionParser;
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
@ -63,7 +64,7 @@ public interface DomainAsyncClient {
|
||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/add/format/json")
|
@Path("/domain/add/format/json")
|
||||||
ListenableFuture<Void> addDomain(@FormParam("name") String name, DomainOptions... options);
|
ListenableFuture<Void> addDomain(@FormParam("name") String name, DomainAddOptions... options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see DomainClient#editDomain
|
* @see DomainClient#editDomain
|
||||||
|
@ -72,26 +73,42 @@ public interface DomainAsyncClient {
|
||||||
@Path("/domain/edit/format/json")
|
@Path("/domain/edit/format/json")
|
||||||
ListenableFuture<Void> editDomain(@FormParam("domain") String domain, DomainOptions... options);
|
ListenableFuture<Void> editDomain(@FormParam("domain") String domain, DomainOptions... options);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainClient#deleteDomain
|
||||||
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/delete/format/json")
|
@Path("/domain/delete/format/json")
|
||||||
ListenableFuture<Void> deleteDomain(@FormParam("domain") String domain);
|
ListenableFuture<Void> deleteDomain(@FormParam("domain") String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainClient#listRecords
|
||||||
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/list_records/format/json")
|
@Path("/domain/list_records/format/json")
|
||||||
@SelectJson("records")
|
@SelectJson("records")
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
ListenableFuture<Set<DomainRecord>> listRecords(@FormParam("domain") String domain);
|
ListenableFuture<Set<DomainRecord>> listRecords(@FormParam("domain") String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainClient#addRecord
|
||||||
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/add_record/format/json")
|
@Path("/domain/add_record/format/json")
|
||||||
ListenableFuture<Void> addRecord(@FormParam("domain") String domain, @FormParam("host") String host,
|
ListenableFuture<Void> addRecord(@FormParam("domain") String domain, @FormParam("host") String host,
|
||||||
@FormParam("type") String type, @FormParam("data") String data,
|
@FormParam("type") String type, @FormParam("data") String data,
|
||||||
DomainRecordAddOptions... options);
|
DomainRecordAddOptions... options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainClient#editRecord
|
||||||
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/update_record/format/json")
|
@Path("/domain/update_record/format/json")
|
||||||
ListenableFuture<Void> editRecord(@FormParam("record_id") String record_id, DomainRecordModifyOptions... options);
|
ListenableFuture<Void> editRecord(@FormParam("record_id") String record_id, DomainRecordEditOptions... options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainClient#deleteRecord
|
||||||
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/domain/delete_record/format/json")
|
@Path("/domain/delete_record/format/json")
|
||||||
ListenableFuture<Void> deleteRecord(@FormParam("record_id") String recordId);
|
ListenableFuture<Void> deleteRecord(@FormParam("record_id") String recordId);
|
||||||
|
|
|
@ -21,15 +21,16 @@ package org.jclouds.glesys.features;
|
||||||
import org.jclouds.concurrent.Timeout;
|
import org.jclouds.concurrent.Timeout;
|
||||||
import org.jclouds.glesys.domain.Domain;
|
import org.jclouds.glesys.domain.Domain;
|
||||||
import org.jclouds.glesys.domain.DomainRecord;
|
import org.jclouds.glesys.domain.DomainRecord;
|
||||||
|
import org.jclouds.glesys.options.DomainAddOptions;
|
||||||
import org.jclouds.glesys.options.DomainOptions;
|
import org.jclouds.glesys.options.DomainOptions;
|
||||||
import org.jclouds.glesys.options.DomainRecordAddOptions;
|
import org.jclouds.glesys.options.DomainRecordAddOptions;
|
||||||
import org.jclouds.glesys.options.DomainRecordModifyOptions;
|
import org.jclouds.glesys.options.DomainRecordEditOptions;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides synchronous access to Invoice requests.
|
* Provides synchronous access to Domain requests.
|
||||||
* <p/>
|
* <p/>
|
||||||
*
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
|
@ -52,7 +53,7 @@ public interface DomainClient {
|
||||||
* @param domain the name of the domain to add.
|
* @param domain the name of the domain to add.
|
||||||
* @param options optional parameters
|
* @param options optional parameters
|
||||||
*/
|
*/
|
||||||
void addDomain(String domain, DomainOptions... options);
|
void addDomain(String domain, DomainAddOptions... options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a domain to the Glesys dns-system
|
* Add a domain to the Glesys dns-system
|
||||||
|
@ -94,7 +95,7 @@ public interface DomainClient {
|
||||||
* @param options the settings to change
|
* @param options the settings to change
|
||||||
* @see #listRecords to retrieve the necessary ids
|
* @see #listRecords to retrieve the necessary ids
|
||||||
*/
|
*/
|
||||||
void editRecord(String recordId, DomainRecordModifyOptions... options);
|
void editRecord(String recordId, DomainRecordEditOptions... options);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a DNS record
|
* Delete a DNS record
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.jclouds.rest.annotations.SelectJson;
|
||||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides asynchronous access to E-Mail data via the Glesys REST API.
|
* Provides asynchronous access to E-Mail data via the Glesys REST API.
|
||||||
|
@ -50,13 +51,13 @@ import com.google.common.util.concurrent.ListenableFuture;
|
||||||
public interface EmailAsyncClient {
|
public interface EmailAsyncClient {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.features.EmailClient#emailOverview
|
* @see org.jclouds.glesys.features.EmailClient#getEmailOverview
|
||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Path("/email/overview/format/json")
|
@Path("/email/overview/format/json")
|
||||||
@SelectJson("response")
|
@SelectJson("response")
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
@ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
ListenableFuture<EmailOverview> getEmailOverview();
|
ListenableFuture<EmailOverview> getEmailOverview();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -32,7 +32,7 @@ import org.jclouds.glesys.options.EmailEditOptions;
|
||||||
* <p/>
|
* <p/>
|
||||||
*
|
*
|
||||||
* @author Adam Lowe
|
* @author Adam Lowe
|
||||||
* @see org.jclouds.glesys.features.DomainAsyncClient
|
* @see org.jclouds.glesys.features.EmailAsyncClient
|
||||||
* @see <a href="https://customer.glesys.com/api.php" />
|
* @see <a href="https://customer.glesys.com/api.php" />
|
||||||
*/
|
*/
|
||||||
@Timeout(duration = 30, timeUnit = TimeUnit.SECONDS)
|
@Timeout(duration = 30, timeUnit = TimeUnit.SECONDS)
|
||||||
|
@ -46,19 +46,52 @@ public interface EmailClient {
|
||||||
EmailOverview getEmailOverview();
|
EmailOverview getEmailOverview();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Get the set of detailed information about e-mail accounts
|
||||||
*
|
*
|
||||||
* @return
|
* @return the relevant set of details
|
||||||
*/
|
*/
|
||||||
Set<Email> listAccounts(String domain);
|
Set<Email> listAccounts(String domain);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new e-mail account
|
||||||
|
*
|
||||||
|
* @param accountAddress the e-mail address to use (the domain should already exist)
|
||||||
|
* @param password the password to use for the mailbox
|
||||||
|
* @param options optional parameters
|
||||||
|
* @see DomainClient#addDomain
|
||||||
|
*/
|
||||||
void createAccount(String accountAddress, String password, EmailCreateOptions... options);
|
void createAccount(String accountAddress, String password, EmailCreateOptions... options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an e-mail alias for an e-mail account
|
||||||
|
*
|
||||||
|
* @param aliasAddress the address to use for the alias (the domain should already exist)
|
||||||
|
* @param toEmailAddress the existing e-mail account address the alias should forward to
|
||||||
|
* @see DomainClient#addDomain
|
||||||
|
*/
|
||||||
void createAlias(String aliasAddress, String toEmailAddress);
|
void createAlias(String aliasAddress, String toEmailAddress);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust an e-mail account's settings
|
||||||
|
*
|
||||||
|
* @param accountAddress the existing e-mail account address
|
||||||
|
* @param options optional parameters
|
||||||
|
*/
|
||||||
void editAccount(String accountAddress, EmailEditOptions... options);
|
void editAccount(String accountAddress, EmailEditOptions... options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjust (re-target) an e-mail alias
|
||||||
|
*
|
||||||
|
* @param aliasAddress the existing alias e-mail address
|
||||||
|
* @param toEmailAddress the existing e-mail account address the alias should forward to
|
||||||
|
*/
|
||||||
void editAlias(String aliasAddress, String toEmailAddress);
|
void editAlias(String aliasAddress, String toEmailAddress);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete an e-mail account or alias
|
||||||
|
*
|
||||||
|
* @param accountAddress the existing alias e-mail account or alias address
|
||||||
|
*/
|
||||||
void delete(String accountAddress);
|
void delete(String accountAddress);
|
||||||
|
|
||||||
}
|
}
|
|
@ -100,9 +100,9 @@ public interface ServerClient {
|
||||||
/**
|
/**
|
||||||
* Get information about the OS templates available
|
* Get information about the OS templates available
|
||||||
*
|
*
|
||||||
* @return a map of templates, keyed on platform
|
* @return the set of information about each template
|
||||||
*/
|
*/
|
||||||
Map<String, Set<ServerTemplate>> getTemplates();
|
Set<ServerTemplate> getTemplates();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information about valid arguments to #createServer for each platform
|
* Get information about valid arguments to #createServer for each platform
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
/**
|
||||||
|
* 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.options;
|
||||||
|
|
||||||
|
import org.jclouds.http.options.BaseHttpRequestOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
public class DomainAddOptions extends DomainOptions {
|
||||||
|
public static class Builder {
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#primaryNameServer
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions primaryNameServer(String primaryNameServer) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().primaryNameServer(primaryNameServer));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#responsiblePerson
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions responsiblePerson(String responsiblePerson) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().responsiblePerson(responsiblePerson));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#ttl
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions ttl(int ttl) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().ttl(ttl));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#refresh
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions refresh(int refresh) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().refresh(refresh));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#retry
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions retry(int retry) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().retry(retry));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#expire
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions expire(int expire) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().expire(expire));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#minimum
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions minimum(int minimum) {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().minimum(minimum));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainAddOptions#minimalRecords
|
||||||
|
*/
|
||||||
|
public static DomainAddOptions minimalRecords() {
|
||||||
|
return DomainAddOptions.class.cast(new DomainAddOptions().minimalRecords());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure only NS and SOA records will be created by default, when this option is not used a number of default records will be created on the domain.
|
||||||
|
*/
|
||||||
|
public DomainOptions minimalRecords() {
|
||||||
|
formParameters.put("create_records", "0");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -52,7 +52,7 @@ public class DomainOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see DomainOptions#refresh
|
* @see DomainOptions#refresh
|
||||||
*/
|
*/
|
||||||
public static DomainOptions refresh(String refresh) {
|
public static DomainOptions refresh(int refresh) {
|
||||||
DomainOptions options = new DomainOptions();
|
DomainOptions options = new DomainOptions();
|
||||||
return options.refresh(refresh);
|
return options.refresh(refresh);
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ public class DomainOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see DomainOptions#retry
|
* @see DomainOptions#retry
|
||||||
*/
|
*/
|
||||||
public static DomainOptions retry(String retry) {
|
public static DomainOptions retry(int retry) {
|
||||||
DomainOptions options = new DomainOptions();
|
DomainOptions options = new DomainOptions();
|
||||||
return options.retry(retry);
|
return options.retry(retry);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class DomainOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see DomainOptions#expire
|
* @see DomainOptions#expire
|
||||||
*/
|
*/
|
||||||
public static DomainOptions expire(String expire) {
|
public static DomainOptions expire(int expire) {
|
||||||
DomainOptions options = new DomainOptions();
|
DomainOptions options = new DomainOptions();
|
||||||
return options.expire(expire);
|
return options.expire(expire);
|
||||||
}
|
}
|
||||||
|
@ -76,44 +76,71 @@ public class DomainOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see DomainOptions#minimum
|
* @see DomainOptions#minimum
|
||||||
*/
|
*/
|
||||||
public static DomainOptions minimum(String minimum) {
|
public static DomainOptions minimum(int minimum) {
|
||||||
DomainOptions options = new DomainOptions();
|
DomainOptions options = new DomainOptions();
|
||||||
return options.minimum(minimum);
|
return options.minimum(minimum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the primary DNS server for this domain.
|
||||||
|
*/
|
||||||
public DomainOptions primaryNameServer(String primaryNameServer) {
|
public DomainOptions primaryNameServer(String primaryNameServer) {
|
||||||
formParameters.put("primary_ns", primaryNameServer);
|
formParameters.put("primary_ns", primaryNameServer);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the E-mail address of the person responsible for this domain (usually attached to MX records).
|
||||||
|
*/
|
||||||
public DomainOptions responsiblePerson(String responsiblePerson) {
|
public DomainOptions responsiblePerson(String responsiblePerson) {
|
||||||
|
responsiblePerson = responsiblePerson.replaceAll("@", ".");
|
||||||
|
if (!responsiblePerson.endsWith(".")) {
|
||||||
|
responsiblePerson = responsiblePerson + ".";
|
||||||
|
}
|
||||||
formParameters.put("resp_person", responsiblePerson);
|
formParameters.put("resp_person", responsiblePerson);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TTL (time to live). The number of seconds a domain name is cached locally before expiration and return to authoritative nameservers for updates
|
||||||
|
*/
|
||||||
public DomainOptions ttl(int ttl) {
|
public DomainOptions ttl(int ttl) {
|
||||||
formParameters.put("ttl", Integer.toString(ttl));
|
formParameters.put("ttl", Integer.toString(ttl));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainOptions refresh(String refresh) {
|
/**
|
||||||
formParameters.put("refresh", refresh);
|
* Configure the number of seconds between update requests from secondary and slave name servers
|
||||||
|
*/
|
||||||
|
public DomainOptions refresh(int refresh) {
|
||||||
|
formParameters.put("refresh", Integer.toString(refresh));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainOptions retry(String retry) {
|
/**
|
||||||
formParameters.put("retry", retry);
|
* Configure the number of seconds the secondary/slave will wait before retrying when the last attempt failed
|
||||||
|
*/
|
||||||
|
public DomainOptions retry(int retry) {
|
||||||
|
formParameters.put("retry", Integer.toString(retry));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainOptions expire(String expire) {
|
/**
|
||||||
formParameters.put("primary_ns", expire);
|
* Configure the number of seconds a master or slave will wait before considering the data stale if it cannot reach the primary name server
|
||||||
|
*/
|
||||||
|
public DomainOptions expire(int expire) {
|
||||||
|
formParameters.put("expire", Integer.toString(expire));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainOptions minimum(String minimum) {
|
/**
|
||||||
formParameters.put("minimum", minimum);
|
* Configure the minimum/default TTL if the domain does not specify ttl
|
||||||
|
*
|
||||||
|
* @see #ttl
|
||||||
|
*/
|
||||||
|
public DomainOptions minimum(int minimum) {
|
||||||
|
formParameters.put("minimum", Integer.toString(minimum));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -37,24 +37,21 @@ public class DomainRecordAddOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see DomainRecordAddOptions#mxPriority
|
* @see DomainRecordAddOptions#mxPriority
|
||||||
*/
|
*/
|
||||||
public static DomainRecordAddOptions mxPriority(String mxPriority) {
|
public static DomainRecordAddOptions mxPriority(int mxPriority) {
|
||||||
DomainRecordAddOptions options = new DomainRecordAddOptions();
|
DomainRecordAddOptions options = new DomainRecordAddOptions();
|
||||||
return options.mxPriority(mxPriority);
|
return options.mxPriority(mxPriority);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainRecordAddOptions host(String host) {
|
/** Configure TTL/Time-to-live for record */
|
||||||
formParameters.put("host", host);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DomainRecordAddOptions ttl(int ttl) {
|
public DomainRecordAddOptions ttl(int ttl) {
|
||||||
formParameters.put("ttl", Integer.toString(ttl));
|
formParameters.put("ttl", Integer.toString(ttl));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DomainRecordAddOptions mxPriority(String mxPriority) {
|
/** Configure the priority of an MX record */
|
||||||
formParameters.put("mx_priority", mxPriority);
|
public DomainRecordAddOptions mxPriority(int mxPriority) {
|
||||||
|
formParameters.put("mx_priority", Integer.toString(mxPriority));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
/**
|
||||||
|
* 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.options;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
public class DomainRecordEditOptions extends DomainRecordAddOptions {
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
/**
|
||||||
|
* @see DomainRecordEditOptions#host
|
||||||
|
*/
|
||||||
|
public static DomainRecordEditOptions host(String host) {
|
||||||
|
return new DomainRecordEditOptions().host(host);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainRecordEditOptions#type
|
||||||
|
*/
|
||||||
|
public static DomainRecordEditOptions type(String type) {
|
||||||
|
return new DomainRecordEditOptions().type(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainRecordEditOptions#data
|
||||||
|
*/
|
||||||
|
public static DomainRecordEditOptions data(String data) {
|
||||||
|
return new DomainRecordEditOptions().data(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainRecordEditOptions#ttl
|
||||||
|
*/
|
||||||
|
public static DomainRecordEditOptions ttl(int ttl) {
|
||||||
|
return DomainRecordEditOptions.class.cast(new DomainRecordEditOptions().ttl(ttl));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see DomainRecordEditOptions#mxPriority
|
||||||
|
*/
|
||||||
|
public static DomainRecordEditOptions mxPriority(int mxPriority) {
|
||||||
|
return DomainRecordEditOptions.class.cast(new DomainRecordEditOptions().mxPriority(mxPriority));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Configure the hostname attached to this record */
|
||||||
|
public DomainRecordEditOptions host(String host) {
|
||||||
|
formParameters.put("host", host);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Configure the type of record, ex. "A", "CNAME" or "MX" */
|
||||||
|
public DomainRecordEditOptions type(String type) {
|
||||||
|
formParameters.put("type", type);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set the content of this record (depending on type, for an "A" record this would be an ip address) */
|
||||||
|
public DomainRecordEditOptions data(String data) {
|
||||||
|
formParameters.put("data", data);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,83 +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.options;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
|
||||||
public class DomainRecordModifyOptions extends DomainRecordAddOptions {
|
|
||||||
|
|
||||||
public static class Builder {
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.DomainRecordAddOptions#host
|
|
||||||
*/
|
|
||||||
public static DomainRecordModifyOptions host(String host) {
|
|
||||||
DomainRecordModifyOptions options = new DomainRecordModifyOptions();
|
|
||||||
return options.host(host);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.DomainRecordModifyOptions#type
|
|
||||||
*/
|
|
||||||
public static DomainRecordModifyOptions type(String type) {
|
|
||||||
DomainRecordModifyOptions options = new DomainRecordModifyOptions();
|
|
||||||
return options.type(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.DomainRecordModifyOptions#data
|
|
||||||
*/
|
|
||||||
public static DomainRecordModifyOptions data(String data) {
|
|
||||||
DomainRecordModifyOptions options = new DomainRecordModifyOptions();
|
|
||||||
return options.data(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.DomainRecordModifyOptions#ttl
|
|
||||||
*/
|
|
||||||
public static DomainRecordModifyOptions ttl(int ttl) {
|
|
||||||
DomainRecordModifyOptions options = new DomainRecordModifyOptions();
|
|
||||||
return DomainRecordModifyOptions.class.cast(options.ttl(ttl));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.DomainRecordModifyOptions#mxPriority
|
|
||||||
*/
|
|
||||||
public static DomainRecordModifyOptions mxPriority(String mxPriority) {
|
|
||||||
DomainRecordModifyOptions options = new DomainRecordModifyOptions();
|
|
||||||
return DomainRecordModifyOptions.class.cast(options.mxPriority(mxPriority));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public DomainRecordModifyOptions host(String host) {
|
|
||||||
formParameters.put("host", host);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public DomainRecordModifyOptions type(String type) {
|
|
||||||
formParameters.put("type", type);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DomainRecordModifyOptions data(String data) {
|
|
||||||
formParameters.put("data", data);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -57,33 +57,38 @@ public class EmailCreateOptions extends BaseHttpRequestOptions {
|
||||||
/**
|
/**
|
||||||
* @see EmailCreateOptions#autorespondMessage
|
* @see EmailCreateOptions#autorespondMessage
|
||||||
*/
|
*/
|
||||||
public static EmailCreateOptions autorespondMessage(boolean autorespondMessage) {
|
public static EmailCreateOptions autorespondMessage(String autorespondMessage) {
|
||||||
return new EmailCreateOptions().autorespondMessage(autorespondMessage);
|
return new EmailCreateOptions().autorespondMessage(autorespondMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the antispam level of the account */
|
||||||
public EmailCreateOptions antispamLevel(int antispamLevel) {
|
public EmailCreateOptions antispamLevel(int antispamLevel) {
|
||||||
formParameters.put("antispamlevel", Integer.toString(antispamLevel));
|
formParameters.put("antispamlevel", Integer.toString(antispamLevel));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Enable or disable virus checking */
|
||||||
public EmailCreateOptions antiVirus(boolean antiVirus) {
|
public EmailCreateOptions antiVirus(boolean antiVirus) {
|
||||||
formParameters.put("antivirus", Integer.toString(antiVirus ? 1 : 0));
|
formParameters.put("antivirus", Integer.toString(antiVirus ? 1 : 0));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Enable or disable auto-respond */
|
||||||
public EmailCreateOptions autorespond(boolean autorespond) {
|
public EmailCreateOptions autorespond(boolean autorespond) {
|
||||||
formParameters.put("autorespond", Integer.toString(autorespond ? 1 : 0));
|
formParameters.put("autorespond", Integer.toString(autorespond ? 1 : 0));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Enable or disable saving of auto-respond e-mails */
|
||||||
public EmailCreateOptions autorespondSaveEmail(boolean autorespondSaveEmail) {
|
public EmailCreateOptions autorespondSaveEmail(boolean autorespondSaveEmail) {
|
||||||
formParameters.put("autorespondsaveemail", Integer.toString(autorespondSaveEmail ? 1 : 0));
|
formParameters.put("autorespondsaveemail", Integer.toString(autorespondSaveEmail ? 1 : 0));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmailCreateOptions autorespondMessage(boolean autorespondMessage) {
|
/** Configure the auto-respond message */
|
||||||
formParameters.put("autorespondmessage", Integer.toString(autorespondMessage ? 1 : 0));
|
public EmailCreateOptions autorespondMessage(String autorespondMessage) {
|
||||||
|
formParameters.put("autorespondmessage", autorespondMessage);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,31 +26,50 @@ package org.jclouds.glesys.options;
|
||||||
public class EmailEditOptions extends EmailCreateOptions {
|
public class EmailEditOptions extends EmailCreateOptions {
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#antispamLevel
|
||||||
|
*/
|
||||||
public static EmailEditOptions antispamLevel(int antispamLevel) {
|
public static EmailEditOptions antispamLevel(int antispamLevel) {
|
||||||
return EmailEditOptions.class.cast(new EmailEditOptions().antispamLevel(antispamLevel));
|
return EmailEditOptions.class.cast(new EmailEditOptions().antispamLevel(antispamLevel));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#antiVirus
|
||||||
|
*/
|
||||||
public static EmailEditOptions antiVirus(boolean antiVirus) {
|
public static EmailEditOptions antiVirus(boolean antiVirus) {
|
||||||
return EmailEditOptions.class.cast(new EmailEditOptions().antiVirus(antiVirus));
|
return EmailEditOptions.class.cast(new EmailEditOptions().antiVirus(antiVirus));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#autorespond
|
||||||
|
*/
|
||||||
public static EmailEditOptions autorespond(boolean autorespond) {
|
public static EmailEditOptions autorespond(boolean autorespond) {
|
||||||
return EmailEditOptions.class.cast(new EmailEditOptions().autorespond(autorespond));
|
return EmailEditOptions.class.cast(new EmailEditOptions().autorespond(autorespond));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#autorespondSaveEmail
|
||||||
|
*/
|
||||||
public static EmailEditOptions autorespondSaveEmail(boolean autorespondSaveEmail) {
|
public static EmailEditOptions autorespondSaveEmail(boolean autorespondSaveEmail) {
|
||||||
return EmailEditOptions.class.cast(new EmailEditOptions().autorespondSaveEmail(autorespondSaveEmail));
|
return EmailEditOptions.class.cast(new EmailEditOptions().autorespondSaveEmail(autorespondSaveEmail));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EmailEditOptions autorespondMessage(boolean autorespondMessage) {
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#autorespondMessage
|
||||||
|
*/
|
||||||
|
public static EmailEditOptions autorespondMessage(String autorespondMessage) {
|
||||||
return EmailEditOptions.class.cast(new EmailEditOptions().autorespondMessage(autorespondMessage));
|
return EmailEditOptions.class.cast(new EmailEditOptions().autorespondMessage(autorespondMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EmailEditOptions autorespondMessage(String password) {
|
/**
|
||||||
|
* @see org.jclouds.glesys.options.EmailEditOptions#password
|
||||||
|
*/
|
||||||
|
public static EmailEditOptions password(String password) {
|
||||||
return new EmailEditOptions().password(password);
|
return new EmailEditOptions().password(password);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Reset the password for this account */
|
||||||
public EmailEditOptions password(String password) {
|
public EmailEditOptions password(String password) {
|
||||||
formParameters.put("password", password);
|
formParameters.put("password", password);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -27,59 +27,48 @@ public class ServerCloneOptions extends ServerEditOptions {
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#disksize
|
* @see org.jclouds.glesys.options.ServerCloneOptions#disksize
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions disksize(int disksize) {
|
public static ServerCloneOptions disksize(int disksize) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return ServerCloneOptions.class.cast(new ServerCloneOptions().disksize(disksize));
|
||||||
return ServerCloneOptions.class.cast(options.disksize(disksize));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#memorysize
|
* @see org.jclouds.glesys.options.ServerCloneOptions#memorysize
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions memorysize(int memorysize) {
|
public static ServerCloneOptions memorysize(int memorysize) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return ServerCloneOptions.class.cast(new ServerCloneOptions().memorysize(memorysize));
|
||||||
return ServerCloneOptions.class.cast(options.memorysize(memorysize));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#cpucores
|
* @see org.jclouds.glesys.options.ServerCloneOptions#cpucores
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions cpucores(int cpucores) {
|
public static ServerCloneOptions cpucores(int cpucores) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return ServerCloneOptions.class.cast(new ServerCloneOptions().cpucores(cpucores));
|
||||||
return ServerCloneOptions.class.cast(options.cpucores(cpucores));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#cpucores
|
* @see org.jclouds.glesys.options.ServerCloneOptions#cpucores
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions transfer(int transfer) {
|
public static ServerCloneOptions transfer(int transfer) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return ServerCloneOptions.class.cast(new ServerCloneOptions().transfer(transfer));
|
||||||
return ServerCloneOptions.class.cast(options.transfer(transfer));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#hostname
|
|
||||||
*/
|
|
||||||
public static ServerCloneOptions hostname(String hostname) {
|
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
|
||||||
return ServerCloneOptions.class.cast(options.hostname(hostname));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.options.ServerEditOptions#description
|
* @see org.jclouds.glesys.options.ServerEditOptions#description
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions description(String description) {
|
public static ServerCloneOptions description(String description) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return ServerCloneOptions.class.cast(new ServerCloneOptions().description(description));
|
||||||
return ServerCloneOptions.class.cast(options.description(description));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.jclouds.glesys.options.ServerCloneOptions#dataCenter
|
* @see org.jclouds.glesys.options.ServerCloneOptions#dataCenter
|
||||||
*/
|
*/
|
||||||
public static ServerCloneOptions dataCenter(String dataCenter) {
|
public static ServerCloneOptions dataCenter(String dataCenter) {
|
||||||
ServerCloneOptions options = new ServerCloneOptions();
|
return new ServerCloneOptions().dataCenter(dataCenter);
|
||||||
return options.dataCenter(dataCenter);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure which datacenter to create the clone in
|
||||||
|
*/
|
||||||
public ServerCloneOptions dataCenter(String dataCenter) {
|
public ServerCloneOptions dataCenter(String dataCenter) {
|
||||||
formParameters.put("datacenter", dataCenter);
|
formParameters.put("datacenter", dataCenter);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -76,31 +76,37 @@ public class ServerEditOptions extends BaseHttpRequestOptions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the size of the disk, in GB, of the server */
|
||||||
public ServerEditOptions disksize(int disksize) {
|
public ServerEditOptions disksize(int disksize) {
|
||||||
formParameters.put("disksize", Integer.toString(disksize));
|
formParameters.put("disksize", Integer.toString(disksize));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the amount of RAM, in MB, allocated to the server */
|
||||||
public ServerEditOptions memorysize(int memorysize) {
|
public ServerEditOptions memorysize(int memorysize) {
|
||||||
formParameters.put("memorysize", Integer.toString(memorysize));
|
formParameters.put("memorysize", Integer.toString(memorysize));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the number of CPU cores allocated to the server */
|
||||||
public ServerEditOptions cpucores(int cpucores) {
|
public ServerEditOptions cpucores(int cpucores) {
|
||||||
formParameters.put("cpucores", Integer.toString(cpucores));
|
formParameters.put("cpucores", Integer.toString(cpucores));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the transfer setting for the server */
|
||||||
public ServerEditOptions transfer(int transfer) {
|
public ServerEditOptions transfer(int transfer) {
|
||||||
formParameters.put("cpucores", Integer.toString(transfer));
|
formParameters.put("cpucores", Integer.toString(transfer));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the host name of the server (must be unique within the GleSYS account) */
|
||||||
public ServerEditOptions hostname(String hostname) {
|
public ServerEditOptions hostname(String hostname) {
|
||||||
formParameters.put("hostname", hostname);
|
formParameters.put("hostname", hostname);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Configure the description of the server */
|
||||||
public ServerEditOptions description(String description) {
|
public ServerEditOptions description(String description) {
|
||||||
formParameters.put("description", description);
|
formParameters.put("description", description);
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -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.features;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.jclouds.rest.functions.MapHttp4xxCodesToExceptions;
|
|
||||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.inject.TypeLiteral;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests annotation parsing of {@code ArchiveAsyncClient}
|
|
||||||
*
|
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
|
||||||
@Test(groups = "unit", testName = "ArchiveAsyncClientTest")
|
|
||||||
public class ArchiveAsyncClientTest extends BaseGleSYSAsyncClientTest<ArchiveAsyncClient> {
|
|
||||||
public ArchiveAsyncClientTest() {
|
|
||||||
asyncClientClass = ArchiveAsyncClient.class;
|
|
||||||
remoteServicePrefix = "archive";
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map.Entry<String, String> userName = newEntry("username", "x");
|
|
||||||
|
|
||||||
public void testListArchives() throws Exception {
|
|
||||||
testMethod("listArchives", "list", "POST", true, ReturnEmptySetOnNotFoundOr404.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testArchiveDetails() throws Exception {
|
|
||||||
testMethod("getArchiveDetails", "details", "POST", true, ReturnNullOnNotFoundOr404.class, userName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCreateArchive() throws Exception {
|
|
||||||
testMethod("createArchive", "create", "POST", false, MapHttp4xxCodesToExceptions.class, userName,
|
|
||||||
newEntry("password", "somepass"), newEntry("size", 5));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDeleteArchive() throws Exception {
|
|
||||||
testMethod("deleteArchive", "delete", "POST", false, MapHttp4xxCodesToExceptions.class, userName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testResizeArchive() throws Exception {
|
|
||||||
testMethod("resizeArchive", "resize", "POST", false, MapHttp4xxCodesToExceptions.class, userName,
|
|
||||||
newEntry("size", "5 GB"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testChangeArchivePassword() throws Exception {
|
|
||||||
testMethod("changeArchivePassword", "changepassword", "POST", false, MapHttp4xxCodesToExceptions.class, userName,
|
|
||||||
newEntry("password", "newpass"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetArchiveAllowedArguments() throws Exception {
|
|
||||||
testMethod("getArchiveAllowedArguments", "allowedarguments", "GET", true, ReturnEmptySetOnNotFoundOr404.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TypeLiteral<RestAnnotationProcessor<ArchiveAsyncClient>> createTypeLiteral() {
|
|
||||||
return new TypeLiteral<RestAnnotationProcessor<ArchiveAsyncClient>>() {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,224 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import org.jclouds.glesys.GleSYSClient;
|
||||||
|
import org.jclouds.glesys.domain.Archive;
|
||||||
|
import org.jclouds.glesys.domain.ArchiveAllowedArguments;
|
||||||
|
import org.jclouds.glesys.domain.ArchiveDetails;
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.http.HttpResponseException;
|
||||||
|
import org.jclouds.rest.BaseRestClientExpectTest;
|
||||||
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.jclouds.io.Payloads.newUrlEncodedFormPayload;
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests parsing of {@code ArchiveAsyncClient}
|
||||||
|
*
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "ArchiveClientExpectTest")
|
||||||
|
public class ArchiveClientExpectTest extends BaseRestClientExpectTest<GleSYSClient> {
|
||||||
|
public ArchiveClientExpectTest() {
|
||||||
|
provider = "glesys";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListArchivesWhenReponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/archive_list.json")).build())
|
||||||
|
.getArchiveClient();
|
||||||
|
|
||||||
|
List<Archive> expected = ImmutableList.<Archive>of(
|
||||||
|
Archive.builder().username("xxxxx_test1").freeSize("20 GB").totalSize("20 GB").locked(false).build());
|
||||||
|
|
||||||
|
assertEquals(client.listArchives(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListArchivesWhenResponseIs4xxReturnsEmpty() {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getArchiveClient();
|
||||||
|
|
||||||
|
assertTrue(client.listArchives().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testArchiveDetailsWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/details/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(
|
||||||
|
ImmutableMultimap.<String, String>builder().put("username", "xxxxxx_test1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/archive_details.json")).build())
|
||||||
|
.getArchiveClient();
|
||||||
|
ArchiveDetails expected = ArchiveDetails.builder().username("xxxxxx_test1").freeSize("30 GB").totalSize("30 GB").locked(false).build();
|
||||||
|
|
||||||
|
assertEquals(client.getArchiveDetails("xxxxxx_test1"), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testArchiveDetailsWhenResponseIs4xxReturnsNull() {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/details/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(
|
||||||
|
ImmutableMultimap.<String, String>builder().put("username", "xxxxxx_test1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build())
|
||||||
|
.getArchiveClient();
|
||||||
|
assertNull(client.getArchiveDetails("xxxxxx_test1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateArchiveWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/create/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "xxxxxx_test1")
|
||||||
|
.put("size", "5")
|
||||||
|
.put("password", "somepass").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getArchiveClient();
|
||||||
|
client.createArchive("xxxxxx_test1", "somepass", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteArchiveWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/delete/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "xxxxxx_test1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getArchiveClient();
|
||||||
|
|
||||||
|
client.deleteArchive("xxxxxx_test1");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {HttpResponseException.class})
|
||||||
|
public void testDeleteArchiveWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/delete/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "xxxxxx_test1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(402).build()).getArchiveClient();
|
||||||
|
client.deleteArchive("xxxxxx_test1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testResizeArchiveWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/resize/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "username1")
|
||||||
|
.put("size", "5").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getArchiveClient();
|
||||||
|
|
||||||
|
client.resizeArchive("username1", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testResizeArchiveWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/archive/resize/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "username1")
|
||||||
|
.put("size", "5").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getArchiveClient();
|
||||||
|
|
||||||
|
client.resizeArchive("username1", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testChangeArchivePasswordWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST")
|
||||||
|
.endpoint(URI.create("https://api.glesys.com/archive/changepassword/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "username")
|
||||||
|
.put("password", "newpass").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getArchiveClient();
|
||||||
|
|
||||||
|
client.changeArchivePassword("username", "newpass");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testChangeArchivePasswordWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST")
|
||||||
|
.endpoint(URI.create("https://api.glesys.com/archive/changepassword/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("username", "username")
|
||||||
|
.put("password", "newpass").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getArchiveClient();
|
||||||
|
|
||||||
|
client.changeArchivePassword("username", "newpass");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetArchiveAllowedArgumentsWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("GET")
|
||||||
|
.endpoint(URI.create("https://api.glesys.com/archive/allowedarguments/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==")
|
||||||
|
.build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/archive_allowed_arguments.json")).build()).getArchiveClient();
|
||||||
|
ArchiveAllowedArguments expected = ArchiveAllowedArguments.builder().archiveSizes(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();
|
||||||
|
|
||||||
|
assertEquals(client.getArchiveAllowedArguments(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetArchiveAllowedArguments4xxWhenResponseIs2xx() throws Exception {
|
||||||
|
ArchiveClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("GET")
|
||||||
|
.endpoint(URI.create("https://api.glesys.com/archive/allowedarguments/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getArchiveClient();
|
||||||
|
|
||||||
|
assertNull(client.getArchiveAllowedArguments());
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,11 +45,8 @@ import com.google.common.collect.Maps;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
*/
|
||||||
public abstract class BaseGleSYSAsyncClientTest<T> extends RestClientTest<T> {
|
public abstract class BaseGleSYSAsyncClientTest<T> extends RestClientTest<T> {
|
||||||
protected Class<T> asyncClientClass;
|
|
||||||
protected String remoteServicePrefix;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void checkFilters(HttpRequest request) {
|
protected void checkFilters(HttpRequest request) {
|
||||||
|
@ -62,83 +59,4 @@ public abstract class BaseGleSYSAsyncClientTest<T> extends RestClientTest<T> {
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
return new RestContextFactory().createContextSpec("glesys", "username", "apiKey", props);
|
return new RestContextFactory().createContextSpec("glesys", "username", "apiKey", props);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
protected Map.Entry<String, String> newEntry(String key, Object value) {
|
|
||||||
return Maps.immutableEntry(key, value.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test that a method call is annotated correctly.
|
|
||||||
* <p/>
|
|
||||||
* @param localMethod the method to call in asyncClientClass
|
|
||||||
* @param remoteCall the name of the expected call on the remote server
|
|
||||||
* @param httpMethod "GET" or "POST"
|
|
||||||
* @param expectResponse if true check Accept header and response parsers
|
|
||||||
* @param exceptionParser the class of exception handler expected
|
|
||||||
* @param args either Map.Entry or BaseHttpRequestOptions that make up the arguments to the method
|
|
||||||
*/
|
|
||||||
//TODO: kill this and related logic and transition to BaseRestClientExpectTest<GleSYSClient>
|
|
||||||
@Deprecated
|
|
||||||
protected void testMethod(String localMethod, String remoteCall, String httpMethod, boolean expectResponse,
|
|
||||||
Class<?> exceptionParser, Object... args) throws Exception {
|
|
||||||
testMethod(localMethod, remoteCall, httpMethod, expectResponse, ParseFirstJsonValueNamed.class, exceptionParser,
|
|
||||||
args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
protected void testMethod(String localMethod, String remoteCall, String httpMethod, boolean expectResponse, Class<?> responseParser, Class<?> exceptionParser, Object... args) throws Exception {
|
|
||||||
List<String> argStrings = new ArrayList<String>();
|
|
||||||
List<Object> argValues = new ArrayList<Object>();
|
|
||||||
|
|
||||||
for (Object arg : args) {
|
|
||||||
if (arg instanceof BaseHttpRequestOptions) {
|
|
||||||
for (Map.Entry<String, String> httpEntry : ((BaseHttpRequestOptions) arg).buildFormParameters().entries()) {
|
|
||||||
argStrings.add(httpEntry.getKey() + "=" + httpEntry.getValue());
|
|
||||||
}
|
|
||||||
argValues.add(arg);
|
|
||||||
} else {
|
|
||||||
Map.Entry<String, String> entry = (Map.Entry<String, String>) arg;
|
|
||||||
argStrings.add(entry.getKey() + "=" + Strings2.urlEncode(entry.getValue()));
|
|
||||||
argValues.add(entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Method method = null;
|
|
||||||
for (Method m : asyncClientClass.getMethods()) {
|
|
||||||
if (m.getName().equals(localMethod)) {
|
|
||||||
assertNull(method, "More than one method called " + localMethod + " in class " + asyncClientClass);
|
|
||||||
method = m;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assertNotNull(method, "Failed to locate method " + localMethod + " in class " + asyncClientClass);
|
|
||||||
|
|
||||||
HttpRequest httpRequest = processor.createRequest(method, argValues.toArray());
|
|
||||||
|
|
||||||
assertRequestLineEquals(httpRequest, httpMethod + " https://api.glesys.com/" + remoteServicePrefix + "/" + remoteCall + "/format/json HTTP/1.1");
|
|
||||||
|
|
||||||
if (expectResponse) {
|
|
||||||
assertNonPayloadHeadersEqual(httpRequest, "Accept: application/json\n");
|
|
||||||
assertResponseParserClassEquals(method, httpRequest, responseParser);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argStrings.isEmpty()) {
|
|
||||||
assertPayloadEquals(httpRequest, null, null, false);
|
|
||||||
} else {
|
|
||||||
assertNotNull(httpRequest.getPayload());
|
|
||||||
String payload = (String) httpRequest.getPayload().getRawContent();
|
|
||||||
Iterable<String> in = Splitter.on("&").split(payload);
|
|
||||||
assertContentHeadersEqual(httpRequest, "application/x-www-form-urlencoded", null, null, null, 0L + payload.length(), null);
|
|
||||||
assertEquals(ImmutableSortedSet.copyOf(in), ImmutableSortedSet.copyOf(argStrings));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
assertSaxResponseParserClassEquals(method, null);
|
|
||||||
assertExceptionParserClassEquals(method, exceptionParser);
|
|
||||||
|
|
||||||
checkFilters(httpRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.features;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.jclouds.glesys.options.DomainOptions;
|
|
||||||
import org.jclouds.rest.functions.MapHttp4xxCodesToExceptions;
|
|
||||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.inject.TypeLiteral;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests annotation parsing of {@code DomainAsyncClient}
|
|
||||||
*
|
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
|
||||||
@Test(groups = "unit", testName = "DomainAsyncClientTest")
|
|
||||||
public class DomainAsyncClientTest extends BaseGleSYSAsyncClientTest<DomainAsyncClient> {
|
|
||||||
public DomainAsyncClientTest() {
|
|
||||||
asyncClientClass = DomainAsyncClient.class;
|
|
||||||
remoteServicePrefix = "domain";
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map.Entry<String, String> domainName = newEntry("domain", "cl666666someuser");
|
|
||||||
|
|
||||||
public void testListDomains() throws Exception {
|
|
||||||
testMethod("listDomains", "list", "POST", true, ReturnEmptySetOnNotFoundOr404.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAddDomain() throws Exception {
|
|
||||||
testMethod("addDomain", "add", "POST", false, MapHttp4xxCodesToExceptions.class, newEntry("name", "cl66666_x"),
|
|
||||||
DomainOptions.Builder.primaryNameServer("ns1.somewhere.x").expire("1").minimum("1").refresh("1").
|
|
||||||
responsiblePerson("Tester").retry("1").ttl(1));
|
|
||||||
testMethod("addDomain", "add", "POST", false, MapHttp4xxCodesToExceptions.class, newEntry("name", "cl66666_x"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testEditDomain() throws Exception {
|
|
||||||
testMethod("editDomain", "edit", "POST", false, MapHttp4xxCodesToExceptions.class, newEntry("domain", "x"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDeleteDomain() throws Exception {
|
|
||||||
testMethod("deleteDomain", "delete", "POST", false, MapHttp4xxCodesToExceptions.class, domainName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TypeLiteral<RestAnnotationProcessor<DomainAsyncClient>> createTypeLiteral() {
|
|
||||||
return new TypeLiteral<RestAnnotationProcessor<DomainAsyncClient>>() {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,164 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.jclouds.glesys.GleSYSClient;
|
||||||
|
import org.jclouds.glesys.domain.Domain;
|
||||||
|
import org.jclouds.glesys.options.DomainAddOptions;
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.rest.BaseRestClientExpectTest;
|
||||||
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.jclouds.io.Payloads.newUrlEncodedFormPayload;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests annotation parsing of {@code DomainAsyncClient}
|
||||||
|
*
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "DomainClientExpectTest")
|
||||||
|
public class DomainClientExpectTest extends BaseRestClientExpectTest<GleSYSClient> {
|
||||||
|
public DomainClientExpectTest() {
|
||||||
|
provider = "glesys";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListDomainsWhenResponseIs2xx() throws Exception {
|
||||||
|
//DomainClient client = createMock("list", "POST", 200, "/domain_list.json");
|
||||||
|
|
||||||
|
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(200).payload(payloadFromResource("/domain_list.json")).build()).getDomainClient();
|
||||||
|
|
||||||
|
Set<Domain> expected = ImmutableSet.<Domain>of(
|
||||||
|
Domain.builder().domain("adamlowe.net").createTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-12-20 10:58:51")).build());
|
||||||
|
|
||||||
|
assertEquals(client.listDomains(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListDomainsWhenResponseIs4xxReturnsEmpty() 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 {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/add/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("name", "cl66666_x").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getDomainClient();
|
||||||
|
|
||||||
|
client.addDomain("cl66666_x");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void testAddDomainWithOptsWhenResponseIs2xx() throws Exception {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/add/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("name", "cl66666_x")
|
||||||
|
.put("primary_ns", "ns1.somewhere.x")
|
||||||
|
.put("expire", "1")
|
||||||
|
.put("minimum", "1")
|
||||||
|
.put("refresh", "1")
|
||||||
|
.put("resp_person", "Tester.")
|
||||||
|
.put("retry", "1")
|
||||||
|
.put("ttl", "1")
|
||||||
|
.build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getDomainClient();
|
||||||
|
DomainAddOptions options = (DomainAddOptions) DomainAddOptions.Builder.primaryNameServer("ns1.somewhere.x")
|
||||||
|
.expire(1).minimum(1).refresh(1).responsiblePerson("Tester").retry(1).ttl(1);
|
||||||
|
|
||||||
|
client.addDomain("cl66666_x", options);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEditDomainWhenResponseIs2xx() throws Exception {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/edit/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("domain", "x").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getDomainClient();
|
||||||
|
|
||||||
|
client.editDomain("x");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testEditDomainWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/edit/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("domain", "x").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getDomainClient();
|
||||||
|
|
||||||
|
client.editDomain("x");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteDomainWhenResponseIs2xx() throws Exception {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/delete/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("domain", "x").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getDomainClient();
|
||||||
|
|
||||||
|
client.deleteDomain("x");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testDeleteDomainWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
DomainClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/domain/delete/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder().put(
|
||||||
|
"Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("domain", "x").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getDomainClient();
|
||||||
|
|
||||||
|
client.deleteDomain("x");
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,12 +18,17 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.glesys.features;
|
package org.jclouds.glesys.features;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertNotNull;
|
||||||
import static org.testng.Assert.assertTrue;
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.jclouds.glesys.domain.Domain;
|
||||||
import org.jclouds.glesys.domain.DomainRecord;
|
import org.jclouds.glesys.domain.DomainRecord;
|
||||||
|
import org.jclouds.glesys.options.DomainOptions;
|
||||||
|
import org.jclouds.glesys.options.DomainRecordEditOptions;
|
||||||
import org.jclouds.predicates.RetryablePredicate;
|
import org.jclouds.predicates.RetryablePredicate;
|
||||||
import org.testng.annotations.AfterGroups;
|
import org.testng.annotations.AfterGroups;
|
||||||
import org.testng.annotations.BeforeGroups;
|
import org.testng.annotations.BeforeGroups;
|
||||||
|
@ -79,6 +84,12 @@ public class DomainClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
private RetryablePredicate<Integer> domainCounter;
|
private RetryablePredicate<Integer> domainCounter;
|
||||||
private RetryablePredicate<Integer> recordCounter;
|
private RetryablePredicate<Integer> recordCounter;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditDomain() throws Exception {
|
||||||
|
client.editDomain(testDomain, DomainOptions.Builder.responsiblePerson("tester.jclouds.org"));
|
||||||
|
assertTrue(client.listDomains().contains(Domain.builder().domain(testDomain).build()));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCreateRecord() throws Exception {
|
public void testCreateRecord() throws Exception {
|
||||||
int before = client.listRecords(testDomain).size();
|
int before = client.listRecords(testDomain).size();
|
||||||
|
@ -86,6 +97,46 @@ public class DomainClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
client.addRecord(testDomain, "test", "A", "127.0.0.1");
|
client.addRecord(testDomain, "test", "A", "127.0.0.1");
|
||||||
|
|
||||||
assertTrue(recordCounter.apply(before + 1));
|
assertTrue(recordCounter.apply(before + 1));
|
||||||
|
|
||||||
|
for(DomainRecord record : client.listRecords(testDomain)) {
|
||||||
|
if ("test".equals(record.getHost())) {
|
||||||
|
assertEquals(record.getType(), "A");
|
||||||
|
assertEquals(record.getData(), "127.0.0.1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditRecord() throws Exception {
|
||||||
|
int before = client.listRecords(testDomain).size();
|
||||||
|
|
||||||
|
client.addRecord(testDomain, "testeditbefore", "A", "127.0.0.1");
|
||||||
|
|
||||||
|
assertTrue(recordCounter.apply(before + 1));
|
||||||
|
|
||||||
|
String recordId = null;
|
||||||
|
for(DomainRecord record : client.listRecords(testDomain)) {
|
||||||
|
if ("testeditbefore".equals(record.getHost())) {
|
||||||
|
assertEquals(record.getType(), "A");
|
||||||
|
assertEquals(record.getData(), "127.0.0.1");
|
||||||
|
recordId = record.getId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotNull(recordId);
|
||||||
|
|
||||||
|
client.editRecord(recordId, DomainRecordEditOptions.Builder.host("testeditafter"));
|
||||||
|
|
||||||
|
boolean found = false;
|
||||||
|
for(DomainRecord record : client.listRecords(testDomain)) {
|
||||||
|
if (recordId.equals(record.getId())) {
|
||||||
|
assertEquals(record.getHost(), "testeditafter");
|
||||||
|
assertEquals(record.getType(), "A");
|
||||||
|
assertEquals(record.getData(), "127.0.0.1");
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assertTrue(found);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -1,68 +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.features;
|
|
||||||
|
|
||||||
import org.jclouds.rest.functions.MapHttp4xxCodesToExceptions;
|
|
||||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.inject.TypeLiteral;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests annotation parsing of {@code ArchiveAsyncClient}
|
|
||||||
*
|
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
|
||||||
@Test(groups = "unit", testName = "EmailAsyncClientTest")
|
|
||||||
public class EmailAsyncClientTest extends BaseGleSYSAsyncClientTest<EmailAsyncClient> {
|
|
||||||
public EmailAsyncClientTest() {
|
|
||||||
asyncClientClass = EmailAsyncClient.class;
|
|
||||||
remoteServicePrefix = "email";
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testList() throws Exception {
|
|
||||||
testMethod("listAccounts", "list", "POST", true, ReturnEmptySetOnNotFoundOr404.class, newEntry("domain","test"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testOverview() throws Exception {
|
|
||||||
testMethod("getEmailOverview", "overview", "POST", true, ReturnEmptySetOnNotFoundOr404.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCreateAccount() throws Exception {
|
|
||||||
testMethod("createAccount", "createaccount", "POST", false, MapHttp4xxCodesToExceptions.class,
|
|
||||||
newEntry("emailaccount", "jclouds.org"), newEntry("password", "test@jclouds.org"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCreateAlias() throws Exception {
|
|
||||||
testMethod("createAlias", "createalias", "POST", false, MapHttp4xxCodesToExceptions.class,
|
|
||||||
newEntry("emailalias", "test2@jclouds.org"), newEntry("goto", "test@jclouds.org"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testEditAlias() throws Exception {
|
|
||||||
testMethod("editAlias", "editalias", "POST", false, MapHttp4xxCodesToExceptions.class,
|
|
||||||
newEntry("emailalias", "test2@jclouds.org"), newEntry("goto", "test1@jclouds.org"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TypeLiteral<RestAnnotationProcessor<EmailAsyncClient>> createTypeLiteral() {
|
|
||||||
return new TypeLiteral<RestAnnotationProcessor<EmailAsyncClient>>() {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,211 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.jclouds.glesys.GleSYSClient;
|
||||||
|
import org.jclouds.glesys.domain.Email;
|
||||||
|
import org.jclouds.glesys.domain.EmailOverview;
|
||||||
|
import org.jclouds.glesys.domain.EmailOverviewDomain;
|
||||||
|
import org.jclouds.glesys.domain.EmailOverviewSummary;
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.http.HttpResponseException;
|
||||||
|
import org.jclouds.rest.AuthorizationException;
|
||||||
|
import org.jclouds.rest.BaseRestClientExpectTest;
|
||||||
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.jclouds.io.Payloads.newUrlEncodedFormPayload;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertNull;
|
||||||
|
import static org.testng.Assert.assertTrue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests annotation parsing of {@code EmailClient}
|
||||||
|
*
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "EmailAsyncClientTest")
|
||||||
|
public class EmailClientExpectTest extends BaseRestClientExpectTest<GleSYSClient> {
|
||||||
|
public EmailClientExpectTest() {
|
||||||
|
provider = "glesys";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListWhenResponseIs2xx() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(
|
||||||
|
ImmutableMultimap.<String, String>builder().put("domain", "test").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/email_list.json")).build()).getEmailClient();
|
||||||
|
|
||||||
|
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");
|
||||||
|
Set<Email> expected =
|
||||||
|
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()
|
||||||
|
);
|
||||||
|
|
||||||
|
assertEquals(client.listAccounts("test"), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListWhenResponseIs404IsEmpty() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(
|
||||||
|
ImmutableMultimap.<String, String>builder().put("domain", "test").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getEmailClient();
|
||||||
|
|
||||||
|
assertTrue(client.listAccounts("test").isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOverviewWhenResponseIs2xx() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/overview/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/email_overview.json")).build()).getEmailClient();
|
||||||
|
|
||||||
|
EmailOverviewSummary summary = EmailOverviewSummary.builder().accounts(2).maxAccounts(50).aliases(0).maxAliases(1000).build();
|
||||||
|
EmailOverviewDomain domain = EmailOverviewDomain.builder().domain("adamlowe.net").accounts(2).aliases(0).build();
|
||||||
|
EmailOverview expected = EmailOverview.builder().summary(summary).domains(domain).build();
|
||||||
|
|
||||||
|
assertEquals(client.getEmailOverview(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOverviewWhenResponseIs404ReturnsNull() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/overview/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getEmailClient();
|
||||||
|
|
||||||
|
assertNull(client.getEmailOverview());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateAccountWhenResponseIs2xx() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/createaccount/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailaccount", "test@jclouds.org")
|
||||||
|
.put("password", "newpass")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.createAccount("test@jclouds.org", "newpass");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testCreateAccountWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/createaccount/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailaccount", "test@jclouds.org")
|
||||||
|
.put("password", "newpass")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.createAccount("test@jclouds.org", "newpass");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateAliasWhenResponseIs2xx() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/createalias/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailalias", "test2@jclouds.org")
|
||||||
|
.put("goto", "test@jclouds.org")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.createAlias("test2@jclouds.org", "test@jclouds.org");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {AuthorizationException.class})
|
||||||
|
public void testCreateAliasWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/createalias/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailalias", "test2@jclouds.org")
|
||||||
|
.put("goto", "test@jclouds.org")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(401).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.createAlias("test2@jclouds.org", "test@jclouds.org");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEditAliasWhenResponseIs2xx() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/editalias/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailalias", "test2@jclouds.org")
|
||||||
|
.put("goto", "test@jclouds.org")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.editAlias("test2@jclouds.org", "test@jclouds.org");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testEditAliasWhenResponseIs4xxThrows() throws Exception {
|
||||||
|
EmailClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/email/editalias/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("emailalias", "test2@jclouds.org")
|
||||||
|
.put("goto", "test@jclouds.org")
|
||||||
|
.build()))
|
||||||
|
.build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getEmailClient();
|
||||||
|
|
||||||
|
client.editAlias("test2@jclouds.org", "test@jclouds.org");
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,24 +16,6 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* 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.features;
|
package org.jclouds.glesys.features;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
@ -64,13 +46,6 @@ public class EmailClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
super.setupClient();
|
super.setupClient();
|
||||||
client = context.getApi().getEmailClient();
|
client = context.getApi().getEmailClient();
|
||||||
|
|
||||||
try {
|
|
||||||
client.delete("test@" + testDomain);
|
|
||||||
client.delete("test2@" + testDomain);
|
|
||||||
context.getApi().getDomainClient().deleteDomain(testDomain);
|
|
||||||
} catch(Exception e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
serverId = createServer("test-email-jclouds").getServerId();
|
serverId = createServer("test-email-jclouds").getServerId();
|
||||||
|
|
||||||
createDomain(testDomain);
|
createDomain(testDomain);
|
||||||
|
@ -80,14 +55,15 @@ public class EmailClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
public boolean apply(Integer value) {
|
public boolean apply(Integer value) {
|
||||||
return client.listAccounts(testDomain).size() == value;
|
return client.listAccounts(testDomain).size() == value;
|
||||||
}
|
}
|
||||||
}, 30, 1, TimeUnit.SECONDS);
|
}, 90, 5, TimeUnit.SECONDS);
|
||||||
|
|
||||||
|
assertTrue(emailAccountCounter.apply(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@AfterGroups(groups = {"live"})
|
@AfterGroups(groups = {"live"})
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
client.delete("test@" + testDomain);
|
client.delete("test@" + testDomain);
|
||||||
|
client.delete("test1@" + testDomain);
|
||||||
assertTrue(emailAccountCounter.apply(0));
|
assertTrue(emailAccountCounter.apply(0));
|
||||||
context.getApi().getDomainClient().deleteDomain(testDomain);
|
context.getApi().getDomainClient().deleteDomain(testDomain);
|
||||||
context.getApi().getServerClient().destroyServer(serverId, ServerDestroyOptions.Builder.discardIp());
|
context.getApi().getServerClient().destroyServer(serverId, ServerDestroyOptions.Builder.discardIp());
|
||||||
|
@ -100,22 +76,34 @@ public class EmailClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
private RetryablePredicate<Integer> emailAccountCounter;
|
private RetryablePredicate<Integer> emailAccountCounter;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createEmail() {
|
public void testCreateEmail() {
|
||||||
client.createAccount("test@" + testDomain, "password", EmailCreateOptions.Builder.antiVirus(true));
|
client.createAccount("test@" + testDomain, "password",
|
||||||
|
EmailCreateOptions.Builder.antiVirus(true).autorespond(true).autorespondMessage("out of office"));
|
||||||
|
|
||||||
assertTrue(emailAccountCounter.apply(1));
|
assertTrue(emailAccountCounter.apply(1));
|
||||||
|
|
||||||
|
client.createAccount("test1@" + testDomain, "password");
|
||||||
|
|
||||||
|
assertTrue(emailAccountCounter.apply(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = "createEmail")
|
@Test(dependsOnMethods = "testCreateEmail")
|
||||||
public void createAlias() {
|
public void testAliases() {
|
||||||
client.createAlias("test2@" + testDomain, "test@" + testDomain);
|
client.createAlias("test2@" + testDomain, "test@" + testDomain);
|
||||||
EmailOverview overview = client.getEmailOverview();
|
EmailOverview overview = client.getEmailOverview();
|
||||||
assertTrue(overview.getSummary().getAliases() == 1);
|
assertTrue(overview.getSummary().getAliases() == 1);
|
||||||
|
|
||||||
|
// TODO verify the result of editing the alias
|
||||||
|
client.editAlias("test2@" + testDomain, "test1@" + testDomain);
|
||||||
|
overview = client.getEmailOverview();
|
||||||
|
assertTrue(overview.getSummary().getAliases() == 1);
|
||||||
|
|
||||||
client.delete("test2@" + testDomain);
|
client.delete("test2@" + testDomain);
|
||||||
overview = client.getEmailOverview();
|
overview = client.getEmailOverview();
|
||||||
assertTrue(overview.getSummary().getAliases() == 0);
|
assertTrue(overview.getSummary().getAliases() == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = "createEmail")
|
@Test(dependsOnMethods = "testCreateEmail")
|
||||||
public void testOverview() throws Exception {
|
public void testOverview() throws Exception {
|
||||||
EmailOverview overview = client.getEmailOverview();
|
EmailOverview overview = client.getEmailOverview();
|
||||||
assertNotNull(overview.getSummary());
|
assertNotNull(overview.getSummary());
|
||||||
|
@ -130,13 +118,13 @@ public class EmailClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
assertTrue(overview.getDomains().contains(domain));
|
assertTrue(overview.getDomains().contains(domain));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = "createEmail")
|
@Test(dependsOnMethods = "testCreateEmail")
|
||||||
public void testListAccounts() throws Exception {
|
public void testListAccounts() throws Exception {
|
||||||
Set<Email> accounts = client.listAccounts(testDomain);
|
Set<Email> accounts = client.listAccounts(testDomain);
|
||||||
assertTrue(accounts.size() >= 1);
|
assertTrue(accounts.size() >= 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = "createEmail")
|
@Test(dependsOnMethods = "testCreateEmail")
|
||||||
public void testEditAccount() throws Exception {
|
public void testEditAccount() throws Exception {
|
||||||
Set<Email> accounts = client.listAccounts(testDomain);
|
Set<Email> accounts = client.listAccounts(testDomain);
|
||||||
for (Email account : accounts) {
|
for (Email account : accounts) {
|
||||||
|
|
|
@ -1,136 +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.features;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.jclouds.glesys.functions.ParseServerTemplatesFromHttpResponse;
|
|
||||||
import org.jclouds.glesys.options.ServerCloneOptions;
|
|
||||||
import org.jclouds.glesys.options.ServerCreateOptions;
|
|
||||||
import org.jclouds.glesys.options.ServerDestroyOptions;
|
|
||||||
import org.jclouds.glesys.options.ServerEditOptions;
|
|
||||||
import org.jclouds.glesys.options.ServerStatusOptions;
|
|
||||||
import org.jclouds.glesys.options.ServerStopOptions;
|
|
||||||
import org.jclouds.rest.functions.MapHttp4xxCodesToExceptions;
|
|
||||||
import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
|
|
||||||
import org.jclouds.rest.internal.RestAnnotationProcessor;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.inject.TypeLiteral;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests annotation parsing of {@code ServerAsyncClient}
|
|
||||||
*
|
|
||||||
* @author Adrian Cole
|
|
||||||
* @author Adam Lowe
|
|
||||||
*/
|
|
||||||
@Test(groups = "unit", testName = "ServerAsyncClientTest")
|
|
||||||
public class ServerAsyncClientTest extends BaseGleSYSAsyncClientTest<ServerAsyncClient> {
|
|
||||||
|
|
||||||
public ServerAsyncClientTest() {
|
|
||||||
asyncClientClass = ServerAsyncClient.class;
|
|
||||||
remoteServicePrefix = "server";
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map.Entry<String, String> serverIdOnly = newEntry("serverid", "abcd");
|
|
||||||
|
|
||||||
public void testListServers() throws Exception {
|
|
||||||
testMethod("listServers", "list", "POST", true, ReturnEmptySetOnNotFoundOr404.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetAllowedArguments() throws Exception {
|
|
||||||
testMethod("getServerAllowedArguments", "allowedarguments", "GET", true, MapHttp4xxCodesToExceptions.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetTemplates() throws Exception {
|
|
||||||
testMethod("getTemplates", "templates", "GET", true, ParseServerTemplatesFromHttpResponse.class,
|
|
||||||
MapHttp4xxCodesToExceptions.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetServer() throws Exception {
|
|
||||||
testMethod("getServerDetails", "details", "POST", true, ReturnNullOnNotFoundOr404.class, serverIdOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCreateServer() throws Exception {
|
|
||||||
testMethod("createServer", "create", "POST", true, MapHttp4xxCodesToExceptions.class,
|
|
||||||
newEntry("datacenter", "Falkenberg"), newEntry("platform", "OpenVZ"),
|
|
||||||
newEntry("hostname", "jclouds-test"), newEntry("template", "Ubuntu%2032-bit"),
|
|
||||||
newEntry("disksize", 5), newEntry("memorysize", 512), newEntry("cpucores", 1),
|
|
||||||
newEntry("rootpw", "password"), newEntry("transfer", 50));
|
|
||||||
testMethod("createServer", "create", "POST", true, MapHttp4xxCodesToExceptions.class,
|
|
||||||
newEntry("datacenter", "Falkenberg"), newEntry("platform", "OpenVZ"),
|
|
||||||
newEntry("hostname", "jclouds-test"), newEntry("template", "Ubuntu%2032-bit"),
|
|
||||||
newEntry("disksize", 5), newEntry("memorysize", 512), newEntry("cpucores", 1),
|
|
||||||
newEntry("rootpw", "password"), newEntry("transfer", 50),
|
|
||||||
ServerCreateOptions.Builder.description("Description-of-server").ip("10.0.0.1"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testEditServer() throws Exception {
|
|
||||||
testMethod("editServer", "edit", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly);
|
|
||||||
testMethod("editServer", "edit", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly,
|
|
||||||
ServerEditOptions.Builder.description("Description-of-server").disksize(1).memorysize(512).cpucores(1).hostname("jclouds-test"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCloneServer() throws Exception {
|
|
||||||
testMethod("cloneServer", "clone", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly, newEntry("hostname", "somename"));
|
|
||||||
testMethod("cloneServer", "clone", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly, newEntry("hostname", "somename"),
|
|
||||||
ServerCloneOptions.Builder.description("Description-of-server").disksize(1).memorysize(512).cpucores(1).hostname("jclouds-test"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetServerStatus() throws Exception {
|
|
||||||
testMethod("getServerStatus", "status", "POST", true, ReturnNullOnNotFoundOr404.class, serverIdOnly);
|
|
||||||
testMethod("getServerStatus", "status", "POST", true, ReturnNullOnNotFoundOr404.class, serverIdOnly, ServerStatusOptions.Builder.state());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetServerLimits() throws Exception {
|
|
||||||
testMethod("getServerLimits", "limits", "POST", true, ReturnNullOnNotFoundOr404.class, serverIdOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetServerConsole() throws Exception {
|
|
||||||
testMethod("getServerConsole", "console", "POST", true, ReturnNullOnNotFoundOr404.class, serverIdOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testStartServer() throws Exception {
|
|
||||||
testMethod("startServer", "start", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testStopServer() throws Exception {
|
|
||||||
testMethod("stopServer", "stop", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly);
|
|
||||||
testMethod("stopServer", "stop", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly, ServerStopOptions.Builder.hard());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRebootServer() throws Exception {
|
|
||||||
testMethod("rebootServer", "reboot", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDestroyServer() throws Exception {
|
|
||||||
testMethod("destroyServer", "destroy", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly, ServerDestroyOptions.Builder.keepIp());
|
|
||||||
testMethod("destroyServer", "destroy", "POST", false, MapHttp4xxCodesToExceptions.class, serverIdOnly, ServerDestroyOptions.Builder.discardIp());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TypeLiteral<RestAnnotationProcessor<ServerAsyncClient>> createTypeLiteral() {
|
|
||||||
return new TypeLiteral<RestAnnotationProcessor<ServerAsyncClient>>() {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,452 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMultimap;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import org.jclouds.glesys.GleSYSClient;
|
||||||
|
import org.jclouds.glesys.domain.Server;
|
||||||
|
import org.jclouds.glesys.domain.ServerCreated;
|
||||||
|
import org.jclouds.glesys.domain.ServerCreatedIp;
|
||||||
|
import org.jclouds.glesys.domain.ServerDetails;
|
||||||
|
import org.jclouds.glesys.options.*;
|
||||||
|
import org.jclouds.glesys.parse.*;
|
||||||
|
import org.jclouds.http.HttpRequest;
|
||||||
|
import org.jclouds.http.HttpResponse;
|
||||||
|
import org.jclouds.rest.AuthorizationException;
|
||||||
|
import org.jclouds.rest.BaseRestClientExpectTest;
|
||||||
|
import org.jclouds.rest.ResourceNotFoundException;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import static org.jclouds.io.Payloads.newUrlEncodedFormPayload;
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests annotation parsing of {@code ServerAsyncClient}
|
||||||
|
*
|
||||||
|
* @author Adrian Cole
|
||||||
|
* @author Adam Lowe
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "ServerAsyncClientTest")
|
||||||
|
public class ServerClientExpectTest extends BaseRestClientExpectTest<GleSYSClient> {
|
||||||
|
|
||||||
|
public ServerClientExpectTest() {
|
||||||
|
provider = "glesys";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListServersWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(204).payload(payloadFromResource("/server_list.json")).build()).getServerClient();
|
||||||
|
Server expected = Server.builder().id("vz1541880").hostname("mammamia").datacenter("Falkenberg").platform("OpenVZ").build();
|
||||||
|
|
||||||
|
assertEquals(client.listServers(), ImmutableSet.<Server>of(expected));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testListServersWhenReponseIs404IsEmpty() {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/list/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getServerClient();
|
||||||
|
|
||||||
|
assertTrue(client.listServers().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetAllowedArgumentsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("GET").endpoint(URI.create("https://api.glesys.com/server/allowedarguments/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(204).payload(payloadFromResource("/server_allowed_arguments.json")).build()).getServerClient();
|
||||||
|
|
||||||
|
assertEquals(client.getServerAllowedArguments(), new ParseServerAllowedArgumentsTest().expected());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetTemplatesWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("GET").endpoint(URI.create("https://api.glesys.com/server/templates/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build()).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_templates.json")).build()).getServerClient();
|
||||||
|
|
||||||
|
assertEquals(client.getTemplates(), new ParseServerTemplatesTest().expected());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerWhenResponseIs2xx() 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", "server1ssg-1.1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_details.json")).build()).getServerClient();
|
||||||
|
|
||||||
|
ServerDetails actual = client.getServerDetails("server1ssg-1.1");
|
||||||
|
assertEquals(actual.toString(), new ParseServerDetailsTest().expected().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/create/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("cpucores", "1").put("memorysize", "512")
|
||||||
|
.put("datacenter", "Falkenberg")
|
||||||
|
.put("transfer", "50")
|
||||||
|
.put("rootpw", "password")
|
||||||
|
.put("hostname", "jclouds-test")
|
||||||
|
.put("platform", "OpenVZ")
|
||||||
|
.put("template", "Ubuntu 32-bit")
|
||||||
|
.put("disksize", "5").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient();
|
||||||
|
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(ServerCreatedIp.builder().ip("109.74.10.27").build()).build();
|
||||||
|
|
||||||
|
assertEquals(client.createServer("Falkenberg", "OpenVZ", "jclouds-test", "Ubuntu 32-bit", 5, 512, 1, "password", 50), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateServerWithOptsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/create/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("cpucores", "1").put("memorysize", "512")
|
||||||
|
.put("datacenter", "Falkenberg")
|
||||||
|
.put("transfer", "50")
|
||||||
|
.put("rootpw", "password")
|
||||||
|
.put("hostname", "jclouds-test")
|
||||||
|
.put("platform", "OpenVZ")
|
||||||
|
.put("template", "Ubuntu 32-bit")
|
||||||
|
.put("disksize", "5")
|
||||||
|
.put("description", "Description-of-server")
|
||||||
|
.put("ip", "10.0.0.1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.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(ServerCreatedIp.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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server111").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(206).build()).getServerClient();
|
||||||
|
|
||||||
|
client.editServer("server111");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEditServerWithOptsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/edit/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server111")
|
||||||
|
.put("description", "Description-of-server")
|
||||||
|
.put("disksize", "1")
|
||||||
|
.put("memorysize", "512")
|
||||||
|
.put("cpucores", "1")
|
||||||
|
.put("hostname", "jclouds-test")
|
||||||
|
.build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build()).getServerClient();
|
||||||
|
|
||||||
|
ServerEditOptions options =
|
||||||
|
ServerEditOptions.Builder.description("Description-of-server").disksize(1).memorysize(512).cpucores(1).hostname("jclouds-test");
|
||||||
|
|
||||||
|
client.editServer("server111", options);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCloneServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/clone/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")
|
||||||
|
.put("hostname", "hostname1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient();
|
||||||
|
ServerCreated expected = ServerCreated.builder().hostname("jclouds-test").id("xm3630641").ips(ServerCreatedIp.builder().ip("109.74.10.27").build()).build();
|
||||||
|
|
||||||
|
assertEquals(client.cloneServer("server111", "hostname1"), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCloneServerWithOptsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/clone/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")
|
||||||
|
.put("hostname", "hostname1")
|
||||||
|
.put("description", "Description-of-server")
|
||||||
|
.put("disksize", "1")
|
||||||
|
.put("memorysize", "512")
|
||||||
|
.put("cpucores", "1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_created.json")).build()).getServerClient();
|
||||||
|
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(ServerCreatedIp.builder().ip("109.74.10.27").build()).build();
|
||||||
|
|
||||||
|
assertEquals(client.cloneServer("server111", "hostname1", options), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {ResourceNotFoundException.class})
|
||||||
|
public void testCloneServerWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/clone/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")
|
||||||
|
.put("hostname", "hostname1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build()).getServerClient();
|
||||||
|
|
||||||
|
client.cloneServer("server111", "hostname1");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerStatusWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/status/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(206).payload(payloadFromResource("/server_status.json")).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
assertEquals(client.getServerStatus("server111"), new ParseServerStatusTest().expected());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerStatusWithOptsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/status/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server321").put("statustype", "state").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(206).payload(payloadFromResource("/server_status.json")).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
assertEquals(client.getServerStatus("server321", ServerStatusOptions.Builder.state()), new ParseServerStatusTest().expected());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerStatusWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/status/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server321").put("statustype", "state").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
assertNull(client.getServerStatus("server321", ServerStatusOptions.Builder.state()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerLimitsWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/limits/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server321").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_limits.json")).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.getServerLimits("server321");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerConsoleWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/console/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server322").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).payload(payloadFromResource("/server_console.json")).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
assertEquals(client.getServerConsole("server322"), new ParseServerConsoleTest().expected());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetServerConsoleWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/console/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server322").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(404).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
assertNull(client.getServerConsole("server322"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStartServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.startServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {AuthorizationException.class})
|
||||||
|
public void testStartServerWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/start/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(401).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.startServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStopServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.stopServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testHardStopServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").put("type", "hard").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.stopServer("server777", ServerStopOptions.Builder.hard());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {AuthorizationException.class})
|
||||||
|
public void testStopServerWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/stop/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(401).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.stopServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRebootServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.rebootServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {AuthorizationException.class})
|
||||||
|
public void testRebootServerWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/reboot/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(401).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.rebootServer("server777");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDestroyServerWhenResponseIs2xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/destroy/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").put("keepip", "1").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(200).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.destroyServer("server777", ServerDestroyOptions.Builder.keepIp());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expectedExceptions = {AuthorizationException.class})
|
||||||
|
public void testDestroyServerWhenResponseIs4xx() throws Exception {
|
||||||
|
ServerClient client = requestSendsResponse(
|
||||||
|
HttpRequest.builder().method("POST").endpoint(URI.create("https://api.glesys.com/server/destroy/format/json"))
|
||||||
|
.headers(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Authorization", "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build())
|
||||||
|
.payload(newUrlEncodedFormPayload(ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("serverid", "server777").put("keepip", "0").build())).build(),
|
||||||
|
HttpResponse.builder().statusCode(401).build())
|
||||||
|
.getServerClient();
|
||||||
|
|
||||||
|
client.destroyServer("server777", ServerDestroyOptions.Builder.discardIp());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -98,26 +98,19 @@ public class ServerClientLiveTest extends BaseGleSYSClientLiveTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testListTemplates() throws Exception {
|
public void testListTemplates() throws Exception {
|
||||||
Map<String,Set<ServerTemplate>> templates = client.getTemplates();
|
Set<ServerTemplate> templates = client.getTemplates();
|
||||||
|
|
||||||
assertTrue(templates.containsKey("OpenVZ"));
|
for(ServerTemplate template : templates) {
|
||||||
assertTrue(templates.containsKey("Xen"));
|
checkTemplate(template);
|
||||||
|
|
||||||
for(ServerTemplate template : templates.get("OpenVZ")) {
|
|
||||||
checkTemplate(template, "OpenVZ");
|
|
||||||
}
|
|
||||||
|
|
||||||
for(ServerTemplate template : templates.get("Xen")) {
|
|
||||||
checkTemplate(template, "Xen");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkTemplate(ServerTemplate t, String platform) {
|
private void checkTemplate(ServerTemplate t) {
|
||||||
assertNotNull(t);
|
assertNotNull(t);
|
||||||
assertNotNull(t.getName());
|
assertNotNull(t.getName());
|
||||||
assertNotNull(t.getOs());
|
assertNotNull(t.getOs());
|
||||||
|
|
||||||
assertEquals(t.getPlatform(), platform);
|
assertNotNull(t.getPlatform());
|
||||||
assert t.getMinDiskSize() > 0 : t;
|
assert t.getMinDiskSize() > 0 : t;
|
||||||
assert t.getMinMemSize() > 0 : t;
|
assert t.getMinMemSize() > 0 : t;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,6 @@ public class ParseServerAllowedArgumentsTest extends BaseItemParserTest<Map<Stri
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected Injector injector() {
|
protected Injector injector() {
|
||||||
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
|
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* 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.ServerCreated;
|
||||||
|
import org.jclouds.glesys.domain.ServerCreatedIp;
|
||||||
|
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 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() {
|
||||||
|
Cost cost = Cost.builder().amount(6.38).currency("EUR").timePeriod("month").build();
|
||||||
|
return ServerDetails.builder().id("vz1908384").hostname("jclouds-unit").cpuCores(1).
|
||||||
|
memory(128).disk(5).
|
||||||
|
description("unit test server").datacenter("Falkenberg").platform("OpenVZ").cost(cost).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Injector injector() {
|
||||||
|
return Guice.createInjector(new GleSYSParserModule(), new GsonModule());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
{"response":{"status":{"code":"200","text":"OK"},"server":{"serverid":"vz1908384","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":[]},"debug":{"input":{"serverid":"vz1908384"}}}}
|
|
@ -0,0 +1 @@
|
||||||
|
{"response":{"status":{"code":"200","text":"OK"},"limits":{"numiptent":{"held":"24","maxheld":"24","barrier":"800","limit":"800","failcnt":0},"numfile":{"held":"91","maxheld":"140","barrier":"4000","limit":"4000","failcnt":0},"dcachesize":{"held":"695143","maxheld":"724260","barrier":"3500000","limit":"4375000","failcnt":0},"numothersock":{"held":"63","maxheld":"66","barrier":"6000","limit":"6000","failcnt":0},"dgramrcvbuf":{"held":"0","maxheld":"0","barrier":"209715200","limit":"262144000","failcnt":0},"othersockbuf":{"held":"4624","maxheld":"13080","barrier":"209715200","limit":"262144000","failcnt":0},"tcprcvbuf":{"held":"32768","maxheld":"32768","barrier":"209715200","limit":"262144000","failcnt":0},"tcpsndbuf":{"held":"34880","maxheld":"34880","barrier":"209715200","limit":"262144000","failcnt":0},"numsiginfo":{"held":"0","maxheld":"15","barrier":"256","limit":"256","failcnt":0},"numpty":{"held":"0","maxheld":"0","barrier":"32","limit":"32","failcnt":0},"numflock":{"held":"1","maxheld":"2","barrier":"376","limit":"412","failcnt":0},"numtcpsock":{"held":"2","maxheld":"2","barrier":"6000","limit":"6000","failcnt":0},"oomguarpages":{"held":"362","maxheld":"464","barrier":"32768","limit":"32768","failcnt":0},"vmguarpages":{"held":"0","maxheld":"0","barrier":"32768","limit":"32768","failcnt":0},"physpages":{"held":"2056","maxheld":"5194","barrier":"0","limit":"9223372036854775807","failcnt":0},"numproc":{"held":"21","maxheld":"33","barrier":"2000","limit":"2000","failcnt":0},"shmpages":{"held":"0","maxheld":"0","barrier":"512000","limit":"512000","failcnt":0},"privvmpages":{"held":"650","maxheld":"1718","barrier":"32768","limit":"32768","failcnt":0},"lockedpages":{"held":"0","maxheld":"0","barrier":"256","limit":"256","failcnt":0},"kmemsize":{"held":"1964946","maxheld":"2932736","barrier":"7680000","limit":"11520000","failcnt":0}},"debug":{"input":{"serverid":"vz1908384"}}}}
|
Loading…
Reference in New Issue