mirror of https://github.com/apache/jclouds.git
format and imports
This commit is contained in:
parent
8402446365
commit
86b07ed768
|
@ -13,7 +13,7 @@ import org.jclouds.smartos.compute.config.SmartOSComputeServiceContextModule;
|
|||
* @author Nigel Magnay
|
||||
*/
|
||||
public class SmartOSApiMetadata extends BaseApiMetadata {
|
||||
|
||||
|
||||
/** The serialVersionUID */
|
||||
private static final long serialVersionUID = 3606170564482119304L;
|
||||
|
||||
|
@ -36,16 +36,16 @@ public class SmartOSApiMetadata extends BaseApiMetadata {
|
|||
|
||||
public static class Builder extends BaseApiMetadata.Builder {
|
||||
|
||||
protected Builder(){
|
||||
protected Builder() {
|
||||
id("smartos-ssh")
|
||||
.name("SmartOS SSH API")
|
||||
.identityName("Username")
|
||||
.defaultIdentity("root")
|
||||
.defaultCredential("smartos")
|
||||
.defaultEndpoint("http://localhost")
|
||||
.documentation(URI.create("http://http://wiki.smartos.org/display/DOC/How+to+create+a+Virtual+Machine+in+SmartOS"))
|
||||
.view(ComputeServiceContext.class)
|
||||
.defaultModule(SmartOSComputeServiceContextModule.class);
|
||||
.name("SmartOS SSH API")
|
||||
.identityName("Username")
|
||||
.defaultIdentity("root")
|
||||
.defaultCredential("smartos")
|
||||
.defaultEndpoint("http://localhost")
|
||||
.documentation(
|
||||
URI.create("http://http://wiki.smartos.org/display/DOC/How+to+create+a+Virtual+Machine+in+SmartOS"))
|
||||
.view(ComputeServiceContext.class).defaultModule(SmartOSComputeServiceContextModule.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -18,23 +18,23 @@
|
|||
*/
|
||||
package org.jclouds.smartos.compute.config;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import org.jclouds.smartos.compute.domain.DataSet;
|
||||
import org.jclouds.smartos.compute.domain.SmartOSHost;
|
||||
import org.jclouds.smartos.compute.domain.VM;
|
||||
import org.jclouds.smartos.compute.domain.VmSpecification;
|
||||
import org.jclouds.compute.ComputeServiceAdapter;
|
||||
import org.jclouds.compute.config.ComputeServiceAdapterContextModule;
|
||||
import org.jclouds.compute.domain.NodeMetadata;
|
||||
import org.jclouds.domain.Location;
|
||||
|
||||
import org.jclouds.smartos.compute.domain.DataSet;
|
||||
import org.jclouds.smartos.compute.domain.SmartOSHost;
|
||||
import org.jclouds.smartos.compute.domain.VM;
|
||||
import org.jclouds.smartos.compute.domain.VmSpecification;
|
||||
import org.jclouds.smartos.compute.functions.DataSetToImage;
|
||||
import org.jclouds.smartos.compute.functions.DatacenterToLocation;
|
||||
import org.jclouds.smartos.compute.functions.VMToNodeMetadata;
|
||||
import org.jclouds.smartos.compute.functions.VmSpecificationToHardware;
|
||||
import org.jclouds.smartos.compute.strategy.SmartOSComputeServiceAdapter;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.inject.TypeLiteral;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Nigel Magnay
|
||||
|
@ -56,7 +56,8 @@ public class SmartOSComputeServiceContextModule extends
|
|||
bind(new TypeLiteral<Function<SmartOSHost, Location>>() {
|
||||
}).to(DatacenterToLocation.class);
|
||||
// to have the compute service adapter override default locations
|
||||
//install(new LocationsFromComputeServiceAdapterModule<VM, VmSpecification, DataSet, SmartOSHost>(){});
|
||||
// install(new LocationsFromComputeServiceAdapterModule<VM, VmSpecification, DataSet,
|
||||
// SmartOSHost>(){});
|
||||
|
||||
}
|
||||
}
|
|
@ -1,141 +1,131 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
/**
|
||||
* Dataset is a pre-built image ready to be cloned.
|
||||
*/
|
||||
public class DataSet {
|
||||
private final UUID uuid;
|
||||
private final String os;
|
||||
private final String published;
|
||||
private final String urn;
|
||||
private final UUID uuid;
|
||||
private final String os;
|
||||
private final String published;
|
||||
private final String urn;
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder toBuilder() {
|
||||
return builder().fromDataSet(this);
|
||||
}
|
||||
public Builder toBuilder() {
|
||||
return builder().fromDataSet(this);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
public static class Builder {
|
||||
|
||||
public UUID uuid;
|
||||
public String os;
|
||||
public String published;
|
||||
public String urn;
|
||||
public UUID uuid;
|
||||
public String os;
|
||||
public String published;
|
||||
public String urn;
|
||||
|
||||
public Builder uuid(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
return this;
|
||||
}
|
||||
public Builder uuid(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder uuid(String uuid) {
|
||||
this.uuid = UUID.fromString(uuid);
|
||||
return this;
|
||||
}
|
||||
public Builder uuid(String uuid) {
|
||||
this.uuid = UUID.fromString(uuid);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder os(String os) {
|
||||
this.os = os;
|
||||
return this;
|
||||
}
|
||||
public Builder os(String os) {
|
||||
this.os = os;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder published(String published) {
|
||||
this.published = published;
|
||||
return this;
|
||||
}
|
||||
public Builder published(String published) {
|
||||
this.published = published;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder urn(String urn) {
|
||||
this.urn = urn;
|
||||
return this;
|
||||
}
|
||||
public Builder urn(String urn) {
|
||||
this.urn = urn;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder fromDsadmString(String string) {
|
||||
String [] sections = string.split(" ");
|
||||
public Builder fromDsadmString(String string) {
|
||||
String[] sections = string.split(" ");
|
||||
|
||||
uuid ( sections[0] );
|
||||
os ( sections[1] );
|
||||
published ( sections[2] );
|
||||
urn ( sections[3] );
|
||||
uuid(sections[0]);
|
||||
os(sections[1]);
|
||||
published(sections[2]);
|
||||
urn(sections[3]);
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public DataSet build() {
|
||||
return new DataSet(uuid, os, published, urn);
|
||||
}
|
||||
|
||||
public DataSet build() {
|
||||
return new DataSet(uuid, os, published, urn);
|
||||
}
|
||||
public Builder fromDataSet(DataSet in) {
|
||||
return uuid(in.getUuid()).os(in.getOs()).published(in.getPublished()).urn(in.getUrn());
|
||||
}
|
||||
}
|
||||
|
||||
public Builder fromDataSet(DataSet in) {
|
||||
return uuid(in.getUuid())
|
||||
.os(in.getOs())
|
||||
.published(in.getPublished())
|
||||
.urn(in.getUrn());
|
||||
}
|
||||
}
|
||||
protected DataSet(UUID uuid, String os, String published, String urn) {
|
||||
this.uuid = uuid;
|
||||
this.os = os;
|
||||
this.published = published;
|
||||
this.urn = urn;
|
||||
}
|
||||
|
||||
protected DataSet(UUID uuid, String os, String published, String urn) {
|
||||
this.uuid = uuid;
|
||||
this.os = os;
|
||||
this.published = published;
|
||||
this.urn = urn;
|
||||
}
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
public String getOs() {
|
||||
return os;
|
||||
}
|
||||
|
||||
public String getOs() {
|
||||
return os;
|
||||
}
|
||||
public String getPublished() {
|
||||
return published;
|
||||
}
|
||||
|
||||
public String getPublished() {
|
||||
return published;
|
||||
}
|
||||
public String getUrn() {
|
||||
return urn;
|
||||
}
|
||||
|
||||
public String getUrn() {
|
||||
return urn;
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
// UUID is primary key
|
||||
return uuid.hashCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
// UUID is primary key
|
||||
return uuid.hashCode();
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
return uuid.equals(((DataSet) obj).uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
return uuid.equals(((DataSet)obj).uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues()
|
||||
.add("uuid", uuid)
|
||||
.add("os", os)
|
||||
.add("published", published)
|
||||
.add("urn", urn).toString();
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues().add("uuid", uuid).add("os", os).add("published", published)
|
||||
.add("urn", urn).toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,19 +1,5 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.net.HostAndPort;
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
import org.jclouds.location.Provider;
|
||||
import org.jclouds.rest.annotations.Credential;
|
||||
import org.jclouds.rest.annotations.Identity;
|
||||
import org.jclouds.ssh.SshClient;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
|
@ -23,274 +9,276 @@ import java.util.UUID;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
import org.jclouds.location.Provider;
|
||||
import org.jclouds.rest.annotations.Credential;
|
||||
import org.jclouds.rest.annotations.Identity;
|
||||
import org.jclouds.ssh.SshClient;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.net.HostAndPort;
|
||||
|
||||
/**
|
||||
* A host machine that runs smartOS
|
||||
*/
|
||||
@Singleton
|
||||
public class SmartOSHost {
|
||||
protected final String hostname;
|
||||
protected final String username;
|
||||
protected final String password;
|
||||
protected final String hostname;
|
||||
protected final String username;
|
||||
protected final String password;
|
||||
|
||||
protected SshClient.Factory sshClientFactory;
|
||||
protected SshClient.Factory sshClientFactory;
|
||||
|
||||
private SshClient _connection;
|
||||
private SshClient _connection;
|
||||
|
||||
public static class HostException extends RuntimeException {
|
||||
public HostException(String s, Throwable throwable) {
|
||||
super(s, throwable);
|
||||
}
|
||||
public static class HostException extends RuntimeException {
|
||||
private static final long serialVersionUID = -2247796213703641847L;
|
||||
|
||||
public HostException(String s) {
|
||||
super(s);
|
||||
}
|
||||
}
|
||||
public HostException(String s, Throwable throwable) {
|
||||
super(s, throwable);
|
||||
}
|
||||
|
||||
public static class NoResponseException extends Exception {
|
||||
public NoResponseException() {
|
||||
}
|
||||
}
|
||||
public HostException(String s) {
|
||||
super(s);
|
||||
}
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
public static class NoResponseException extends Exception {
|
||||
private static final long serialVersionUID = -2247796213703641847L;
|
||||
|
||||
public Builder toBuilder() {
|
||||
return builder().fromSmartOSHost(this);
|
||||
}
|
||||
public NoResponseException() {
|
||||
}
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
protected String hostname;
|
||||
protected String username;
|
||||
protected String password;
|
||||
protected SshClient.Factory sshFactory;
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder hostname(String hostname) {
|
||||
this.hostname = hostname;
|
||||
return this;
|
||||
}
|
||||
public Builder toBuilder() {
|
||||
return builder().fromSmartOSHost(this);
|
||||
}
|
||||
|
||||
public Builder username(String username) {
|
||||
this.username = username;
|
||||
return this;
|
||||
}
|
||||
public static class Builder {
|
||||
protected String hostname;
|
||||
protected String username;
|
||||
protected String password;
|
||||
protected SshClient.Factory sshFactory;
|
||||
|
||||
public Builder password(String password) {
|
||||
this.password = password;
|
||||
return this;
|
||||
}
|
||||
public Builder hostname(String hostname) {
|
||||
this.hostname = hostname;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder sshFactory(SshClient.Factory sshFactory) {
|
||||
this.sshFactory = sshFactory;
|
||||
return this;
|
||||
}
|
||||
public Builder username(String username) {
|
||||
this.username = username;
|
||||
return this;
|
||||
}
|
||||
|
||||
public SmartOSHost build() {
|
||||
return new SmartOSHost(hostname, username, password, sshFactory);
|
||||
}
|
||||
public Builder password(String password) {
|
||||
this.password = password;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder fromSmartOSHost(SmartOSHost in) {
|
||||
return this.hostname ( in.getHostname() )
|
||||
.username ( in.getHostname() )
|
||||
.password ( in.getPassword() )
|
||||
.sshFactory( in.getSshClientFactory() );
|
||||
}
|
||||
}
|
||||
public Builder sshFactory(SshClient.Factory sshFactory) {
|
||||
this.sshFactory = sshFactory;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Inject
|
||||
protected SmartOSHost(@Provider Supplier<URI> provider,
|
||||
@Nullable @Identity String identity,
|
||||
@Nullable @Credential String credential,
|
||||
SshClient.Factory sshFactory) {
|
||||
public SmartOSHost build() {
|
||||
return new SmartOSHost(hostname, username, password, sshFactory);
|
||||
}
|
||||
|
||||
this.hostname = provider.get().getHost();
|
||||
this.username = identity;
|
||||
this.password = credential;
|
||||
this.sshClientFactory = sshFactory;
|
||||
}
|
||||
public Builder fromSmartOSHost(SmartOSHost in) {
|
||||
return this.hostname(in.getHostname()).username(in.getHostname()).password(in.getPassword())
|
||||
.sshFactory(in.getSshClientFactory());
|
||||
}
|
||||
}
|
||||
|
||||
protected SmartOSHost(String hostname, String username, String password, SshClient.Factory sshClientFactory) {
|
||||
this.hostname = hostname;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.sshClientFactory = sshClientFactory;
|
||||
}
|
||||
@Inject
|
||||
protected SmartOSHost(@Provider Supplier<URI> provider, @Nullable @Identity String identity,
|
||||
@Nullable @Credential String credential, SshClient.Factory sshFactory) {
|
||||
|
||||
public String getDescription() {
|
||||
return "SmartOS@" + hostname;
|
||||
}
|
||||
this.hostname = provider.get().getHost();
|
||||
this.username = identity;
|
||||
this.password = credential;
|
||||
this.sshClientFactory = sshFactory;
|
||||
}
|
||||
|
||||
public String getHostname() {
|
||||
return hostname;
|
||||
}
|
||||
protected SmartOSHost(String hostname, String username, String password, SshClient.Factory sshClientFactory) {
|
||||
this.hostname = hostname;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
this.sshClientFactory = sshClientFactory;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
public String getDescription() {
|
||||
return "SmartOS@" + hostname;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
public String getHostname() {
|
||||
return hostname;
|
||||
}
|
||||
|
||||
public SshClient.Factory getSshClientFactory() {
|
||||
return sshClientFactory;
|
||||
}
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
protected SshClient getConnection() {
|
||||
if (_connection == null) {
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
LoginCredentials credentials = new LoginCredentials.Builder()
|
||||
.user(username)
|
||||
.password(password)
|
||||
.build();
|
||||
public SshClient.Factory getSshClientFactory() {
|
||||
return sshClientFactory;
|
||||
}
|
||||
|
||||
_connection = getSshClientFactory().create(
|
||||
HostAndPort.fromParts(hostname, 22),
|
||||
credentials
|
||||
);
|
||||
protected SshClient getConnection() {
|
||||
if (_connection == null) {
|
||||
|
||||
_connection.connect();
|
||||
LoginCredentials credentials = new LoginCredentials.Builder().user(username).password(password).build();
|
||||
|
||||
}
|
||||
return _connection;
|
||||
}
|
||||
_connection = getSshClientFactory().create(HostAndPort.fromParts(hostname, 22), credentials);
|
||||
|
||||
_connection.connect();
|
||||
|
||||
public String exec(String cmd) {
|
||||
return getConnection().exec(cmd).getOutput();
|
||||
}
|
||||
}
|
||||
return _connection;
|
||||
}
|
||||
|
||||
public String vmList() {
|
||||
return exec("vmadm list -p");
|
||||
}
|
||||
public String exec(String cmd) {
|
||||
return getConnection().exec(cmd).getOutput();
|
||||
}
|
||||
|
||||
public String vmList() {
|
||||
return exec("vmadm list -p");
|
||||
}
|
||||
|
||||
public Map<String, String> getVMIpAddresses(UUID vmId)
|
||||
{
|
||||
ImmutableMap.Builder<String, String> netMapBuilder = ImmutableMap.builder();
|
||||
public Map<String, String> getVMIpAddresses(UUID vmId) {
|
||||
ImmutableMap.Builder<String, String> netMapBuilder = ImmutableMap.builder();
|
||||
|
||||
String response = getConnection().exec("zlogin " + vmId.toString() + " ifconfig -a4").getOutput();
|
||||
String response = getConnection().exec("zlogin " + vmId.toString() + " ifconfig -a4").getOutput();
|
||||
|
||||
if( response.length() == 0)
|
||||
return ImmutableMap.of();
|
||||
if (response.length() == 0)
|
||||
return ImmutableMap.of();
|
||||
|
||||
Iterable<String> strings = Splitter.on("\n").split(response);
|
||||
Pattern inetMatcher = Pattern.compile("inet [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
|
||||
Iterable<String> strings = Splitter.on("\n").split(response);
|
||||
Pattern inetMatcher = Pattern.compile("inet [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
|
||||
|
||||
String iface = "";
|
||||
for(String line : strings )
|
||||
{
|
||||
if( line.length() > 0 && Character.isLetterOrDigit(line.charAt(0)) )
|
||||
{
|
||||
iface = line.substring(0, line.indexOf(":") );
|
||||
}
|
||||
else
|
||||
{
|
||||
Matcher matcher = inetMatcher.matcher(line);
|
||||
if( matcher.find() )
|
||||
netMapBuilder.put(iface, matcher.group().substring(5));
|
||||
}
|
||||
}
|
||||
String iface = "";
|
||||
for (String line : strings) {
|
||||
if (line.length() > 0 && Character.isLetterOrDigit(line.charAt(0))) {
|
||||
iface = line.substring(0, line.indexOf(":"));
|
||||
} else {
|
||||
Matcher matcher = inetMatcher.matcher(line);
|
||||
if (matcher.find())
|
||||
netMapBuilder.put(iface, matcher.group().substring(5));
|
||||
}
|
||||
}
|
||||
|
||||
return netMapBuilder.build();
|
||||
return netMapBuilder.build();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* What remotely available images are there in the cloud?
|
||||
*
|
||||
* @return Collection of datasets
|
||||
*/
|
||||
public Iterable<DataSet> getAvailableImages() {
|
||||
return toSpecList(exec("dsadm avail"));
|
||||
}
|
||||
/**
|
||||
* What remotely available images are there in the cloud?
|
||||
*
|
||||
* @return Collection of datasets
|
||||
*/
|
||||
public Iterable<DataSet> getAvailableImages() {
|
||||
return toSpecList(exec("dsadm avail"));
|
||||
}
|
||||
|
||||
public Iterable<DataSet> getLocalDatasets() {
|
||||
return toSpecList(exec("dsadm list"));
|
||||
}
|
||||
public Iterable<DataSet> getLocalDatasets() {
|
||||
return toSpecList(exec("dsadm list"));
|
||||
}
|
||||
|
||||
public Iterable<VM> getVMs() {
|
||||
return toVMList(exec("vmadm list -p"));
|
||||
}
|
||||
public Iterable<VM> getVMs() {
|
||||
return toVMList(exec("vmadm list -p"));
|
||||
}
|
||||
|
||||
public VM createVM(VmSpecification specification) {
|
||||
public VM createVM(VmSpecification specification) {
|
||||
|
||||
String response = getConnection().exec("(cat <<END\n" +
|
||||
specification.toJSONSpecification() + "\nEND\n) | vmadm create").getOutput();
|
||||
String response = getConnection().exec(
|
||||
"(cat <<END\n" + specification.toJSONSpecification() + "\nEND\n) | vmadm create").getOutput();
|
||||
|
||||
Pattern uuidPattern = Pattern.compile("[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}");
|
||||
Matcher matcher = uuidPattern.matcher(response);
|
||||
if (matcher.find()) {
|
||||
String uuid = matcher.group();
|
||||
return getVM( UUID.fromString(uuid) );
|
||||
} else {
|
||||
throw new HostException("Error creating Host: response = " + response + "\n source = " + specification.toJSONSpecification());
|
||||
}
|
||||
Pattern uuidPattern = Pattern.compile("[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}");
|
||||
Matcher matcher = uuidPattern.matcher(response);
|
||||
if (matcher.find()) {
|
||||
String uuid = matcher.group();
|
||||
return getVM(UUID.fromString(uuid));
|
||||
} else {
|
||||
throw new HostException("Error creating Host: response = " + response + "\n source = "
|
||||
+ specification.toJSONSpecification());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private Iterable<DataSet> toSpecList(String string) {
|
||||
private Iterable<DataSet> toSpecList(String string) {
|
||||
|
||||
try {
|
||||
BufferedReader r = new BufferedReader(new StringReader(string));
|
||||
r.readLine(); // Skip
|
||||
String line;
|
||||
ImmutableList.Builder resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
DataSet dataset = DataSet.builder().fromDsadmString(line).build();
|
||||
try {
|
||||
BufferedReader r = new BufferedReader(new StringReader(string));
|
||||
r.readLine(); // Skip
|
||||
String line;
|
||||
ImmutableList.Builder<DataSet> resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
DataSet dataset = DataSet.builder().fromDsadmString(line).build();
|
||||
|
||||
resultBuilder.add(dataset);
|
||||
}
|
||||
return resultBuilder.build();
|
||||
} catch (IOException e) {
|
||||
throw new HostException("Error parsing response when building spec list", e);
|
||||
}
|
||||
}
|
||||
resultBuilder.add(dataset);
|
||||
}
|
||||
return resultBuilder.build();
|
||||
} catch (IOException e) {
|
||||
throw new HostException("Error parsing response when building spec list", e);
|
||||
}
|
||||
}
|
||||
|
||||
private Iterable<VM> toVMList(String string) {
|
||||
try {
|
||||
BufferedReader r = new BufferedReader(new StringReader(string));
|
||||
String line;
|
||||
ImmutableList.Builder resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
VM vm = VM.builder().host(this).fromVmadmString(line).build();
|
||||
private Iterable<VM> toVMList(String string) {
|
||||
try {
|
||||
BufferedReader r = new BufferedReader(new StringReader(string));
|
||||
String line;
|
||||
ImmutableList.Builder<VM> resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
VM vm = VM.builder().host(this).fromVmadmString(line).build();
|
||||
|
||||
resultBuilder.add(vm);
|
||||
}
|
||||
return resultBuilder.build();
|
||||
} catch (IOException e) {
|
||||
throw new HostException("Error parsing response when building VM list", e);
|
||||
}
|
||||
}
|
||||
resultBuilder.add(vm);
|
||||
}
|
||||
return resultBuilder.build();
|
||||
} catch (IOException e) {
|
||||
throw new HostException("Error parsing response when building VM list", e);
|
||||
}
|
||||
}
|
||||
|
||||
public VM getVM(UUID serverId) {
|
||||
for (VM vm : getVMs())
|
||||
if (vm.uuid.equals(serverId))
|
||||
return vm;
|
||||
return null;
|
||||
}
|
||||
public VM getVM(UUID serverId) {
|
||||
for (VM vm : getVMs())
|
||||
if (vm.uuid.equals(serverId))
|
||||
return vm;
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataSet getDataSet(UUID imageId) {
|
||||
for (DataSet ds : getLocalDatasets()) {
|
||||
if (ds.getUuid().equals(imageId))
|
||||
return ds;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public DataSet getDataSet(UUID imageId) {
|
||||
for (DataSet ds : getLocalDatasets()) {
|
||||
if (ds.getUuid().equals(imageId))
|
||||
return ds;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void destroyHost(UUID uuid) {
|
||||
exec("vmadm delete " + uuid.toString());
|
||||
}
|
||||
public void destroyHost(UUID uuid) {
|
||||
exec("vmadm delete " + uuid.toString());
|
||||
}
|
||||
|
||||
public void rebootHost(UUID uuid) {
|
||||
exec("vmadm reboot " + uuid.toString());
|
||||
}
|
||||
public void rebootHost(UUID uuid) {
|
||||
exec("vmadm reboot " + uuid.toString());
|
||||
}
|
||||
|
||||
public void stopHost(UUID uuid) {
|
||||
exec("vmadm stop -p");
|
||||
}
|
||||
public void stopHost(UUID uuid) {
|
||||
exec("vmadm stop -p");
|
||||
}
|
||||
|
||||
public void startHost(UUID uuid) {
|
||||
exec("vmadm start " + uuid.toString());
|
||||
}
|
||||
public void startHost(UUID uuid) {
|
||||
exec("vmadm start " + uuid.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,222 +1,205 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Representing a Virtual Machine (Zone / KVM )
|
||||
**/
|
||||
public class VM {
|
||||
|
||||
public enum State
|
||||
{
|
||||
RUNNING,
|
||||
STOPPED,
|
||||
INCOMPLETE
|
||||
}
|
||||
public enum State {
|
||||
RUNNING, STOPPED, INCOMPLETE
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVM(this);
|
||||
}
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVM(this);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
public static class Builder {
|
||||
|
||||
protected SmartOSHost host;
|
||||
protected UUID uuid;
|
||||
protected String type;
|
||||
protected String ram;
|
||||
protected State state = State.STOPPED;
|
||||
protected String alias;
|
||||
protected SmartOSHost host;
|
||||
protected UUID uuid;
|
||||
protected String type;
|
||||
protected String ram;
|
||||
protected State state = State.STOPPED;
|
||||
protected String alias;
|
||||
|
||||
public Builder uuid(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
return this;
|
||||
}
|
||||
public Builder uuid(UUID uuid) {
|
||||
this.uuid = uuid;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder uuid(String uuid) {
|
||||
this.uuid = UUID.fromString(uuid);
|
||||
return this;
|
||||
}
|
||||
public Builder uuid(String uuid) {
|
||||
this.uuid = UUID.fromString(uuid);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder host(SmartOSHost host) {
|
||||
this.host = host;
|
||||
return this;
|
||||
}
|
||||
public Builder host(SmartOSHost host) {
|
||||
this.host = host;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
public Builder type(String type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder ram(String ram) {
|
||||
this.ram = ram;
|
||||
return this;
|
||||
}
|
||||
public Builder ram(String ram) {
|
||||
this.ram = ram;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder state(String state) {
|
||||
this.state = State.valueOf(state.toUpperCase());
|
||||
return this;
|
||||
}
|
||||
public Builder state(String state) {
|
||||
this.state = State.valueOf(state.toUpperCase());
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder state(State state) {
|
||||
this.state = state;
|
||||
return this;
|
||||
}
|
||||
public Builder state(State state) {
|
||||
this.state = state;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder alias(String alias) {
|
||||
this.alias = alias;
|
||||
return this;
|
||||
}
|
||||
public Builder alias(String alias) {
|
||||
this.alias = alias;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder fromVmadmString(String string) {
|
||||
String[] sections = string.split(":");
|
||||
public Builder fromVmadmString(String string) {
|
||||
String[] sections = string.split(":");
|
||||
|
||||
uuid(sections[0]);
|
||||
uuid(sections[0]);
|
||||
|
||||
type(sections[1]);
|
||||
ram(sections[2]);
|
||||
state(sections[3]);
|
||||
type(sections[1]);
|
||||
ram(sections[2]);
|
||||
state(sections[3]);
|
||||
|
||||
if (sections.length > 4)
|
||||
alias(sections[4]);
|
||||
if (sections.length > 4)
|
||||
alias(sections[4]);
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public VM build() {
|
||||
return new VM(host, uuid, type, ram, state, alias);
|
||||
}
|
||||
|
||||
public VM build() {
|
||||
return new VM(host,uuid,type,ram,state,alias);
|
||||
}
|
||||
public Builder fromVM(VM in) {
|
||||
return host(in.getHost()).uuid(in.getUuid()).type(in.getType()).ram(in.getRam()).state(in.getState())
|
||||
.alias(in.getAlias());
|
||||
}
|
||||
}
|
||||
|
||||
public Builder fromVM(VM in) {
|
||||
return host(in.getHost())
|
||||
.uuid(in.getUuid())
|
||||
.type(in.getType())
|
||||
.ram(in.getRam())
|
||||
.state(in.getState())
|
||||
.alias(in.getAlias());
|
||||
}
|
||||
}
|
||||
protected SmartOSHost host;
|
||||
protected final UUID uuid;
|
||||
protected String type;
|
||||
protected String ram;
|
||||
protected State state;
|
||||
protected String alias;
|
||||
|
||||
public VM(SmartOSHost host, UUID uuid, String type, String ram, State state, String alias) {
|
||||
this.host = host;
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.ram = ram;
|
||||
this.state = state;
|
||||
this.alias = alias;
|
||||
}
|
||||
|
||||
protected SmartOSHost host;
|
||||
protected final UUID uuid;
|
||||
protected String type;
|
||||
protected String ram;
|
||||
protected State state;
|
||||
protected String alias;
|
||||
public State getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
host.destroyHost(uuid);
|
||||
}
|
||||
|
||||
public VM(SmartOSHost host, UUID uuid, String type, String ram, State state, String alias) {
|
||||
this.host = host;
|
||||
this.uuid = uuid;
|
||||
this.type = type;
|
||||
this.ram = ram;
|
||||
this.state = state;
|
||||
this.alias = alias;
|
||||
}
|
||||
public void reboot() {
|
||||
host.rebootHost(uuid);
|
||||
}
|
||||
|
||||
public State getState() {
|
||||
return state;
|
||||
}
|
||||
public void stop() {
|
||||
host.stopHost(uuid);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
host.destroyHost(uuid);
|
||||
}
|
||||
public void start() {
|
||||
host.startHost(uuid);
|
||||
}
|
||||
|
||||
public void reboot() {
|
||||
host.rebootHost(uuid);
|
||||
}
|
||||
public Optional<String> getPublicAddress() throws InterruptedException {
|
||||
Map<String, String> ipAddresses;
|
||||
|
||||
public void stop() {
|
||||
host.stopHost(uuid);
|
||||
}
|
||||
for (int i = 0; i < 30; i++) {
|
||||
ipAddresses = host.getVMIpAddresses(uuid);
|
||||
if (ipAddresses.isEmpty()) {
|
||||
// Got some
|
||||
String ip = ipAddresses.get("net0");
|
||||
if (ip != null && !ip.equals("0.0.0.0"))
|
||||
return Optional.of(ip);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
host.startHost(uuid);
|
||||
}
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
||||
public Optional<String> getPublicAddress() throws InterruptedException {
|
||||
Map<String, String> ipAddresses;
|
||||
return Optional.absent();
|
||||
}
|
||||
|
||||
for( int i=0; i<30; i++ )
|
||||
{
|
||||
ipAddresses = host.getVMIpAddresses(uuid);
|
||||
if( ipAddresses.isEmpty() )
|
||||
{
|
||||
// Got some
|
||||
String ip = ipAddresses.get("net0");
|
||||
if( ip != null && !ip.equals("0.0.0.0"))
|
||||
return Optional.of(ip);
|
||||
}
|
||||
public SmartOSHost getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
return Optional.absent();
|
||||
}
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public SmartOSHost getHost() {
|
||||
return host;
|
||||
}
|
||||
public String getRam() {
|
||||
return ram;
|
||||
}
|
||||
|
||||
public UUID getUuid() {
|
||||
return uuid;
|
||||
}
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
// UUID is primary key
|
||||
return uuid.hashCode();
|
||||
}
|
||||
|
||||
public String getRam() {
|
||||
return ram;
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
return uuid.equals(((DataSet) obj).getUuid());
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
// UUID is primary key
|
||||
return uuid.hashCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
return uuid.equals(((DataSet)obj).getUuid());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues()
|
||||
.add("uuid", uuid)
|
||||
.add("type", type)
|
||||
.add("ram", ram)
|
||||
.add("alias", alias).toString();
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues().add("uuid", uuid).add("type", type).add("ram", ram)
|
||||
.add("alias", alias).toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,109 +2,97 @@ package org.jclouds.smartos.compute.domain;
|
|||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.inject.name.Named;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
/**
|
||||
* Specification of a network card.
|
||||
*/
|
||||
public class VmNIC {
|
||||
|
||||
@SerializedName("nic_tag")
|
||||
protected final String tag;
|
||||
protected final String ip;
|
||||
protected final String netmask;
|
||||
protected final String gateway;
|
||||
@SerializedName("nic_tag")
|
||||
protected final String tag;
|
||||
protected final String ip;
|
||||
protected final String netmask;
|
||||
protected final String gateway;
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVmNIC(this);
|
||||
}
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVmNIC(this);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
public static class Builder {
|
||||
|
||||
public String tag = "admin";
|
||||
public String ip;
|
||||
public String netmask;
|
||||
public String gateway;
|
||||
public String tag = "admin";
|
||||
public String ip;
|
||||
public String netmask;
|
||||
public String gateway;
|
||||
|
||||
public Builder simpleDCHPNic() {
|
||||
tag = "admin";
|
||||
ip = "dhcp";
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder simpleDCHPNic() {
|
||||
tag = "admin";
|
||||
ip = "dhcp";
|
||||
return this;
|
||||
}
|
||||
public Builder tag(String tag) {
|
||||
this.tag = tag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder tag(String tag) {
|
||||
this.tag = tag;
|
||||
return this;
|
||||
}
|
||||
public Builder ip(String ip) {
|
||||
this.ip = ip;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder ip(String ip) {
|
||||
this.ip = ip;
|
||||
return this;
|
||||
}
|
||||
public Builder netmask(String netmask) {
|
||||
this.netmask = netmask;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder netmask(String netmask) {
|
||||
this.netmask = netmask;
|
||||
return this;
|
||||
}
|
||||
public Builder gateway(String gateway) {
|
||||
this.gateway = gateway;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder gateway(String gateway) {
|
||||
this.gateway = gateway;
|
||||
return this;
|
||||
}
|
||||
public VmNIC build() {
|
||||
return new VmNIC(tag, ip, netmask, gateway);
|
||||
}
|
||||
|
||||
public VmNIC build() {
|
||||
return new VmNIC(tag,ip,netmask,gateway);
|
||||
}
|
||||
public Builder fromVmNIC(VmNIC in) {
|
||||
return tag(in.getTag()).ip(in.getIp()).netmask(in.getNetmask()).gateway(in.getGateway());
|
||||
}
|
||||
}
|
||||
|
||||
public Builder fromVmNIC(VmNIC in) {
|
||||
return tag ( in.getTag())
|
||||
.ip ( in.getIp() )
|
||||
.netmask( in.getNetmask() )
|
||||
.gateway( in.getGateway() );
|
||||
}
|
||||
}
|
||||
public VmNIC(String tag, String ip, String netmask, String gateway) {
|
||||
this.tag = tag;
|
||||
this.ip = ip;
|
||||
this.netmask = netmask;
|
||||
this.gateway = gateway;
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
public VmNIC(String tag, String ip, String netmask, String gateway) {
|
||||
this.tag = tag;
|
||||
this.ip = ip;
|
||||
this.netmask = netmask;
|
||||
this.gateway = gateway;
|
||||
}
|
||||
public String getIp() {
|
||||
return ip;
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return tag;
|
||||
}
|
||||
public String getNetmask() {
|
||||
return netmask;
|
||||
}
|
||||
|
||||
public String getIp() {
|
||||
return ip;
|
||||
}
|
||||
public String getGateway() {
|
||||
return gateway;
|
||||
}
|
||||
|
||||
public String getNetmask() {
|
||||
return netmask;
|
||||
}
|
||||
|
||||
public String getGateway() {
|
||||
return gateway;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues()
|
||||
.add("tag", tag)
|
||||
.add("ip", ip)
|
||||
.add("netmask", netmask)
|
||||
.add("gateway", gateway).toString();
|
||||
}
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).omitNullValues().add("tag", tag).add("ip", ip).add("netmask", netmask)
|
||||
.add("gateway", gateway).toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,142 +1,142 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gson.*;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* Specification of a VM to build, based on a dataset.
|
||||
*/
|
||||
public class VmSpecification {
|
||||
protected final String alias;
|
||||
protected final String brand;
|
||||
protected final String alias;
|
||||
protected final String brand;
|
||||
|
||||
@SerializedName("dataset_uuid")
|
||||
protected final DataSet dataset;
|
||||
protected final String dnsDomain;
|
||||
protected final String quota;
|
||||
@SerializedName("dataset_uuid")
|
||||
protected final DataSet dataset;
|
||||
protected final String dnsDomain;
|
||||
protected final String quota;
|
||||
|
||||
protected final List<VmNIC> nics;
|
||||
protected final List<VmNIC> nics;
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVmSpecification(this);
|
||||
}
|
||||
public Builder toBuilder() {
|
||||
return builder().fromVmSpecification(this);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
public static class Builder {
|
||||
|
||||
protected String alias;
|
||||
protected String brand = "joyent";
|
||||
protected DataSet dataset;
|
||||
protected String dnsDomain = "local";
|
||||
protected String quota = "10";
|
||||
protected String alias;
|
||||
protected String brand = "joyent";
|
||||
protected DataSet dataset;
|
||||
protected String dnsDomain = "local";
|
||||
protected String quota = "10";
|
||||
|
||||
protected List<VmNIC> nics = new ArrayList<VmNIC>();
|
||||
protected List<VmNIC> nics = new ArrayList<VmNIC>();
|
||||
|
||||
public Builder alias(String alias) {
|
||||
this.alias = alias;
|
||||
return this;
|
||||
}
|
||||
public Builder alias(String alias) {
|
||||
this.alias = alias;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder brand(String brand) {
|
||||
this.brand = brand;
|
||||
return this;
|
||||
}
|
||||
public Builder brand(String brand) {
|
||||
this.brand = brand;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder dataset(DataSet dataset) {
|
||||
this.dataset = dataset;
|
||||
return this;
|
||||
}
|
||||
public Builder dataset(DataSet dataset) {
|
||||
this.dataset = dataset;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder dnsDomain(String dnsDomain) {
|
||||
this.dnsDomain = dnsDomain;
|
||||
return this;
|
||||
}
|
||||
public Builder dnsDomain(String dnsDomain) {
|
||||
this.dnsDomain = dnsDomain;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder quota(String quota) {
|
||||
this.quota = quota;
|
||||
return this;
|
||||
}
|
||||
public Builder quota(String quota) {
|
||||
this.quota = quota;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder nics(Collection<VmNIC> nic) {
|
||||
this.nics.addAll(nics);
|
||||
return this;
|
||||
}
|
||||
public Builder nics(Collection<VmNIC> nic) {
|
||||
this.nics.addAll(nics);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder nic(VmNIC nic) {
|
||||
this.nics.add(nic);
|
||||
return this;
|
||||
}
|
||||
public Builder nic(VmNIC nic) {
|
||||
this.nics.add(nic);
|
||||
return this;
|
||||
}
|
||||
|
||||
public VmSpecification build() {
|
||||
return new VmSpecification(alias, brand, dataset, dnsDomain, quota, nics);
|
||||
}
|
||||
public VmSpecification build() {
|
||||
return new VmSpecification(alias, brand, dataset, dnsDomain, quota, nics);
|
||||
}
|
||||
|
||||
public Builder fromVmSpecification(VmSpecification in) {
|
||||
return alias (in.getAlias())
|
||||
.brand (in.getBrand())
|
||||
.dataset (in.getDataset())
|
||||
.dnsDomain(in.getDnsDomain())
|
||||
.quota (in.getQuota())
|
||||
.nics(in.getNics());
|
||||
}
|
||||
}
|
||||
public Builder fromVmSpecification(VmSpecification in) {
|
||||
return alias(in.getAlias()).brand(in.getBrand()).dataset(in.getDataset()).dnsDomain(in.getDnsDomain())
|
||||
.quota(in.getQuota()).nics(in.getNics());
|
||||
}
|
||||
}
|
||||
|
||||
protected VmSpecification(String alias, String brand, DataSet dataset, String dnsDomain, String quota, List<VmNIC> nics) {
|
||||
this.alias = alias;
|
||||
this.brand = brand;
|
||||
this.dataset = dataset;
|
||||
this.dnsDomain = dnsDomain;
|
||||
this.quota = quota;
|
||||
this.nics = nics;
|
||||
}
|
||||
protected VmSpecification(String alias, String brand, DataSet dataset, String dnsDomain, String quota,
|
||||
List<VmNIC> nics) {
|
||||
this.alias = alias;
|
||||
this.brand = brand;
|
||||
this.dataset = dataset;
|
||||
this.dnsDomain = dnsDomain;
|
||||
this.quota = quota;
|
||||
this.nics = nics;
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
public String getBrand() {
|
||||
return brand;
|
||||
}
|
||||
public String getBrand() {
|
||||
return brand;
|
||||
}
|
||||
|
||||
public DataSet getDataset() {
|
||||
return dataset;
|
||||
}
|
||||
public DataSet getDataset() {
|
||||
return dataset;
|
||||
}
|
||||
|
||||
public String getDnsDomain() {
|
||||
return dnsDomain;
|
||||
}
|
||||
public String getDnsDomain() {
|
||||
return dnsDomain;
|
||||
}
|
||||
|
||||
public String getQuota() {
|
||||
return quota;
|
||||
}
|
||||
public String getQuota() {
|
||||
return quota;
|
||||
}
|
||||
|
||||
public List<VmNIC> getNics() {
|
||||
return ImmutableList.copyOf(nics);
|
||||
}
|
||||
public List<VmNIC> getNics() {
|
||||
return ImmutableList.copyOf(nics);
|
||||
}
|
||||
|
||||
public String toJSONSpecification() {
|
||||
GsonBuilder gson = new GsonBuilder();
|
||||
gson.registerTypeAdapter(DataSet.class, new FlattenDataset() );
|
||||
Gson g = gson.create();
|
||||
public String toJSONSpecification() {
|
||||
GsonBuilder gson = new GsonBuilder();
|
||||
gson.registerTypeAdapter(DataSet.class, new FlattenDataset());
|
||||
Gson g = gson.create();
|
||||
|
||||
return g.toJson(this);
|
||||
}
|
||||
return g.toJson(this);
|
||||
}
|
||||
|
||||
public class FlattenDataset implements JsonSerializer<DataSet>
|
||||
{
|
||||
@Override
|
||||
public JsonElement serialize(DataSet vmSpecification, Type type, JsonSerializationContext jsonSerializationContext) {
|
||||
return new JsonPrimitive(dataset.getUuid().toString());
|
||||
}
|
||||
}
|
||||
public class FlattenDataset implements JsonSerializer<DataSet> {
|
||||
@Override
|
||||
public JsonElement serialize(DataSet vmSpecification, Type type, JsonSerializationContext jsonSerializationContext) {
|
||||
return new JsonPrimitive(dataset.getUuid().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,13 @@ import javax.annotation.Resource;
|
|||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.smartos.compute.domain.DataSet;
|
||||
import org.jclouds.compute.domain.Image;
|
||||
import org.jclouds.compute.domain.ImageBuilder;
|
||||
import org.jclouds.compute.domain.OperatingSystem;
|
||||
import org.jclouds.compute.domain.OsFamily;
|
||||
import org.jclouds.compute.reference.ComputeServiceConstants;
|
||||
import org.jclouds.logging.Logger;
|
||||
import org.jclouds.smartos.compute.domain.DataSet;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
||||
|
@ -53,7 +53,8 @@ public class DataSetToImage implements Function<DataSet, Image> {
|
|||
OsFamily family;
|
||||
try {
|
||||
family = OsFamily.SOLARIS;
|
||||
builder.operatingSystem(new OperatingSystem.Builder().name(from.getUrn()).description(from.getUrn()).family(family).build());
|
||||
builder.operatingSystem(new OperatingSystem.Builder().name(from.getUrn()).description(from.getUrn())
|
||||
.family(family).build());
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.debug("<< didn't match os(%s)", from);
|
||||
}
|
||||
|
|
|
@ -18,18 +18,19 @@
|
|||
*/
|
||||
package org.jclouds.smartos.compute.functions;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Supplier;
|
||||
import org.jclouds.smartos.compute.domain.SmartOSHost;
|
||||
import org.jclouds.domain.Location;
|
||||
import org.jclouds.domain.LocationBuilder;
|
||||
import org.jclouds.domain.LocationScope;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import org.jclouds.domain.Location;
|
||||
import org.jclouds.domain.LocationBuilder;
|
||||
import org.jclouds.domain.LocationScope;
|
||||
import org.jclouds.smartos.compute.domain.SmartOSHost;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Supplier;
|
||||
|
||||
/**
|
||||
* @author Nigel Magnay
|
||||
|
@ -46,8 +47,8 @@ public class DatacenterToLocation implements Function<SmartOSHost, Location> {
|
|||
|
||||
@Override
|
||||
public Location apply(SmartOSHost from) {
|
||||
return new LocationBuilder().scope(LocationScope.ZONE).id(from.getHostname() + "").description(from.getDescription()).parent(
|
||||
provider.get().get()).build();
|
||||
return new LocationBuilder().scope(LocationScope.ZONE).id(from.getHostname() + "")
|
||||
.description(from.getDescription()).parent(provider.get().get()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,30 +18,31 @@
|
|||
*/
|
||||
package org.jclouds.smartos.compute.functions;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.collect.FindResourceInSet;
|
||||
import org.jclouds.collect.Memoized;
|
||||
import org.jclouds.compute.domain.Hardware;
|
||||
import org.jclouds.compute.domain.Image;
|
||||
import org.jclouds.compute.domain.NodeMetadata;
|
||||
import org.jclouds.compute.domain.NodeMetadataBuilder;
|
||||
import org.jclouds.compute.functions.GroupNamingConvention;
|
||||
import org.jclouds.domain.Credentials;
|
||||
import org.jclouds.domain.Location;
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
import org.jclouds.smartos.compute.domain.VM;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Optional;
|
||||
import com.google.common.base.Supplier;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.sun.corba.se.spi.activation.Server;
|
||||
import org.jclouds.smartos.compute.domain.VM;
|
||||
import org.jclouds.collect.FindResourceInSet;
|
||||
import org.jclouds.collect.Memoized;
|
||||
import org.jclouds.compute.domain.*;
|
||||
import org.jclouds.compute.functions.GroupNamingConvention;
|
||||
import org.jclouds.domain.Credentials;
|
||||
import org.jclouds.domain.Location;
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
import org.omg.PortableInterceptor.ACTIVE;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
/**
|
||||
* @author Nigel Magnay
|
||||
|
@ -49,9 +50,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||
@Singleton
|
||||
public class VMToNodeMetadata implements Function<VM, NodeMetadata> {
|
||||
|
||||
public static final Map<VM.State, NodeMetadata.Status> serverStatusToNodeStatus = ImmutableMap
|
||||
.<VM.State, NodeMetadata.Status> builder()
|
||||
.put(VM.State.RUNNING, NodeMetadata.Status.RUNNING)//
|
||||
public static final Map<VM.State, NodeMetadata.Status> serverStatusToNodeStatus = ImmutableMap
|
||||
.<VM.State, NodeMetadata.Status> builder().put(VM.State.RUNNING, NodeMetadata.Status.RUNNING)//
|
||||
.put(VM.State.STOPPED, NodeMetadata.Status.SUSPENDED)//
|
||||
.put(VM.State.INCOMPLETE, NodeMetadata.Status.PENDING)//
|
||||
.build();
|
||||
|
@ -64,8 +64,8 @@ public class VMToNodeMetadata implements Function<VM, NodeMetadata> {
|
|||
|
||||
@Inject
|
||||
VMToNodeMetadata(Map<String, Credentials> credentialStore, FindHardwareForServer findHardwareForServer,
|
||||
FindLocationForServer findLocationForServer, FindImageForServer findImageForServer,
|
||||
GroupNamingConvention.Factory namingConvention) {
|
||||
FindLocationForServer findLocationForServer, FindImageForServer findImageForServer,
|
||||
GroupNamingConvention.Factory namingConvention) {
|
||||
this.nodeNamingConvention = checkNotNull(namingConvention, "namingConvention").createWithoutPrefix();
|
||||
this.credentialStore = checkNotNull(credentialStore, "credentialStore");
|
||||
this.findHardwareForServer = checkNotNull(findHardwareForServer, "findHardwareForServer");
|
||||
|
@ -87,21 +87,18 @@ public class VMToNodeMetadata implements Function<VM, NodeMetadata> {
|
|||
builder.operatingSystem(image.getOperatingSystem());
|
||||
builder.hardware(findHardwareForServer.apply(from));
|
||||
builder.status(serverStatusToNodeStatus.get(from.getState()));
|
||||
try {
|
||||
if( from.getState() == VM.State.RUNNING )
|
||||
{
|
||||
Optional<String> ip = from.getPublicAddress();
|
||||
if( ip.isPresent() ) {
|
||||
builder.publicAddresses(ImmutableSet.<String> of(ip.get()));
|
||||
builder.privateAddresses(ImmutableSet.<String> of(ip.get()));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
// None?
|
||||
}
|
||||
//builder.privateAddresses(ImmutableSet.<String> of(from.privateAddress));
|
||||
try {
|
||||
if (from.getState() == VM.State.RUNNING) {
|
||||
Optional<String> ip = from.getPublicAddress();
|
||||
if (ip.isPresent()) {
|
||||
builder.publicAddresses(ImmutableSet.<String> of(ip.get()));
|
||||
builder.privateAddresses(ImmutableSet.<String> of(ip.get()));
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// None?
|
||||
}
|
||||
// builder.privateAddresses(ImmutableSet.<String> of(from.privateAddress));
|
||||
builder.credentials(LoginCredentials.fromCredentials(credentialStore.get(from.getUuid() + "")));
|
||||
return builder.build();
|
||||
}
|
||||
|
|
|
@ -20,10 +20,10 @@ package org.jclouds.smartos.compute.functions;
|
|||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.smartos.compute.domain.VmSpecification;
|
||||
import org.jclouds.compute.domain.Hardware;
|
||||
import org.jclouds.compute.domain.HardwareBuilder;
|
||||
import org.jclouds.compute.domain.Processor;
|
||||
import org.jclouds.smartos.compute.domain.VmSpecification;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
@ -41,7 +41,7 @@ public class VmSpecificationToHardware implements Function<VmSpecification, Hard
|
|||
builder.name(from.getAlias());
|
||||
builder.processors(ImmutableList.of(new Processor(1, 1.0)));
|
||||
builder.ram(256);
|
||||
//builder.volumes(ImmutableList.<Volume> of(new VolumeImpl(from.disk, true, false)));
|
||||
// builder.volumes(ImmutableList.<Volume> of(new VolumeImpl(from.disk, true, false)));
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
|
|
@ -20,24 +20,28 @@ package org.jclouds.smartos.compute.strategy;
|
|||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.smartos.compute.domain.*;
|
||||
import org.jclouds.compute.ComputeService;
|
||||
import org.jclouds.compute.ComputeServiceAdapter;
|
||||
import org.jclouds.compute.domain.Template;
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.jclouds.compute.ComputeService;
|
||||
import org.jclouds.compute.ComputeServiceAdapter;
|
||||
import org.jclouds.compute.domain.Template;
|
||||
import org.jclouds.domain.LoginCredentials;
|
||||
import org.jclouds.smartos.compute.domain.DataSet;
|
||||
import org.jclouds.smartos.compute.domain.SmartOSHost;
|
||||
import org.jclouds.smartos.compute.domain.VM;
|
||||
import org.jclouds.smartos.compute.domain.VmNIC;
|
||||
import org.jclouds.smartos.compute.domain.VmSpecification;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
/**
|
||||
* defines the connection between the {@link org.jclouds.smartos.compute.domain.SmartOSHost} implementation and the jclouds
|
||||
* {@link ComputeService}
|
||||
* defines the connection between the {@link org.jclouds.smartos.compute.domain.SmartOSHost}
|
||||
* implementation and the jclouds {@link ComputeService}
|
||||
*
|
||||
*/
|
||||
@Singleton
|
||||
|
@ -50,35 +54,31 @@ public class SmartOSComputeServiceAdapter implements ComputeServiceAdapter<VM, V
|
|||
}
|
||||
|
||||
private SmartOSHost getHost() {
|
||||
return host;
|
||||
return host;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NodeAndInitialCredentials<VM> createNodeWithGroupEncodedIntoName(String tag, String name, Template template) {
|
||||
VmSpecification specification = VmSpecification.builder()
|
||||
.alias(name)
|
||||
VmSpecification specification = VmSpecification.builder().alias(name)
|
||||
.dataset(getHost().getDataSet(UUID.fromString(template.getImage().getProviderId())))
|
||||
.nic(VmNIC.builder().simpleDCHPNic().build())
|
||||
.build();
|
||||
.nic(VmNIC.builder().simpleDCHPNic().build()).build();
|
||||
|
||||
VM from = getHost().createVM(specification);
|
||||
VM from = getHost().createVM(specification);
|
||||
|
||||
return new NodeAndInitialCredentials<VM>(from, from.getUuid() + "", LoginCredentials.builder().user("smartos")
|
||||
return new NodeAndInitialCredentials<VM>(from, from.getUuid() + "", LoginCredentials.builder().user("smartos")
|
||||
.password("smartos").build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<VmSpecification> listHardwareProfiles() {
|
||||
List<VmSpecification> specificationList = new ArrayList<VmSpecification>();
|
||||
List<VmSpecification> specificationList = new ArrayList<VmSpecification>();
|
||||
|
||||
VmSpecification vs = VmSpecification.builder()
|
||||
.alias("Standard Joyent VM")
|
||||
.nic(VmNIC.builder().simpleDCHPNic().build())
|
||||
.build();
|
||||
VmSpecification vs = VmSpecification.builder().alias("Standard Joyent VM")
|
||||
.nic(VmNIC.builder().simpleDCHPNic().build()).build();
|
||||
|
||||
specificationList.add(vs);
|
||||
specificationList.add(vs);
|
||||
|
||||
return specificationList;
|
||||
return specificationList;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -88,17 +88,17 @@ public class SmartOSComputeServiceAdapter implements ComputeServiceAdapter<VM, V
|
|||
|
||||
@Override
|
||||
public DataSet getImage(String id) {
|
||||
return getHost().getDataSet(UUID.fromString(id));
|
||||
return getHost().getDataSet(UUID.fromString(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public Iterable<VM> listNodes() {
|
||||
return getHost().getVMs();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Iterable<SmartOSHost> listLocations() {
|
||||
return ImmutableSet.of();
|
||||
return ImmutableSet.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -108,21 +108,21 @@ public class SmartOSComputeServiceAdapter implements ComputeServiceAdapter<VM, V
|
|||
|
||||
@Override
|
||||
public void destroyNode(String id) {
|
||||
getHost().getVM(UUID.fromString(id)).destroy();
|
||||
getHost().getVM(UUID.fromString(id)).destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rebootNode(String id) {
|
||||
getHost().getVM(UUID.fromString(id)).reboot();
|
||||
getHost().getVM(UUID.fromString(id)).reboot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resumeNode(String id) {
|
||||
getHost().getVM(UUID.fromString(id)).start();
|
||||
getHost().getVM(UUID.fromString(id)).start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suspendNode(String id) {
|
||||
getHost().getVM(UUID.fromString(id)).stop();
|
||||
getHost().getVM(UUID.fromString(id)).stop();
|
||||
}
|
||||
}
|
|
@ -22,16 +22,16 @@ import static org.testng.Assert.assertEquals;
|
|||
|
||||
import java.util.Properties;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Module;
|
||||
import org.jclouds.ContextBuilder;
|
||||
import org.jclouds.compute.ComputeServiceContext;
|
||||
import org.jclouds.internal.ContextImpl;
|
||||
import org.jclouds.rest.internal.BaseRestClientTest;
|
||||
import org.jclouds.smartos.SmartOSApiMetadata;
|
||||
import org.jclouds.sshj.config.SshjSshClientModule;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Module;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
|
@ -40,21 +40,17 @@ import org.testng.annotations.Test;
|
|||
@Test(groups = "unit", testName = "ServerManagerContextBuilderTest")
|
||||
public class SmartOSManagerComputeServiceContextBuilderTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void testCanBuildWithApiMetadata() {
|
||||
ComputeServiceContext context = ContextBuilder.newBuilder(
|
||||
new SmartOSApiMetadata())
|
||||
.modules(ImmutableSet.<Module>of(getSshModule()))
|
||||
.build(ComputeServiceContext.class);
|
||||
ComputeServiceContext context = ContextBuilder.newBuilder(new SmartOSApiMetadata())
|
||||
.modules(ImmutableSet.<Module> of(getSshModule())).build(ComputeServiceContext.class);
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCanBuildById() {
|
||||
ComputeServiceContext context = ContextBuilder.newBuilder("smartos-ssh")
|
||||
.modules(ImmutableSet.<Module>of(getSshModule()))
|
||||
.build(ComputeServiceContext.class);
|
||||
.modules(ImmutableSet.<Module> of(getSshModule())).build(ComputeServiceContext.class);
|
||||
context.close();
|
||||
}
|
||||
|
||||
|
@ -65,8 +61,8 @@ public class SmartOSManagerComputeServiceContextBuilderTest {
|
|||
overrides.setProperty("smartos-ssh.api-version", "1");
|
||||
|
||||
ComputeServiceContext context = ContextBuilder.newBuilder("smartos-ssh")
|
||||
.modules(ImmutableSet.<Module>of(getSshModule()))
|
||||
.overrides(overrides).build(ComputeServiceContext.class);
|
||||
.modules(ImmutableSet.<Module> of(getSshModule())).overrides(overrides)
|
||||
.build(ComputeServiceContext.class);
|
||||
|
||||
context.close();
|
||||
}
|
||||
|
@ -74,15 +70,14 @@ public class SmartOSManagerComputeServiceContextBuilderTest {
|
|||
@Test
|
||||
public void testUnwrapIsCorrectType() {
|
||||
ComputeServiceContext context = ContextBuilder.newBuilder("smartos-ssh")
|
||||
.modules(ImmutableSet.<Module>of(getSshModule()))
|
||||
.build(ComputeServiceContext.class);
|
||||
.modules(ImmutableSet.<Module> of(getSshModule())).build(ComputeServiceContext.class);
|
||||
|
||||
assertEquals(context.unwrap().getClass(), ContextImpl.class);
|
||||
|
||||
context.close();
|
||||
}
|
||||
|
||||
protected Module getSshModule() {
|
||||
return new SshjSshClientModule();
|
||||
}
|
||||
protected Module getSshModule() {
|
||||
return new SshjSshClientModule();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,12 +49,11 @@ public class SmartOSManagerComputeServiceLiveTest extends BaseComputeServiceLive
|
|||
assertEquals(getCores(defaultTemplate.getHardware()), 0.5d);
|
||||
}
|
||||
|
||||
|
||||
// smartos-ssh does not support metadata
|
||||
@Override
|
||||
protected void checkUserMetadataInNodeEquals(NodeMetadata node, ImmutableMap<String, String> userMetadata) {
|
||||
assert node.getUserMetadata().equals(ImmutableMap.<String, String> of()) : String.format(
|
||||
"node userMetadata did not match %s %s", userMetadata, node);
|
||||
"node userMetadata did not match %s %s", userMetadata, node);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,36 +1,39 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@Test(groups = "unit", testName = "DataSetTest")
|
||||
public class DataSetTest {
|
||||
|
||||
@Test
|
||||
public void testParse() throws IOException {
|
||||
// Response from console from a 'dsadm list'
|
||||
InputStream is = getClass().getResourceAsStream("dsadm-list-response.txt");
|
||||
@Test
|
||||
public void testParse() throws IOException {
|
||||
// Response from console from a 'dsadm list'
|
||||
InputStream is = getClass().getResourceAsStream("dsadm-list-response.txt");
|
||||
|
||||
BufferedReader r = new BufferedReader(new InputStreamReader(is));
|
||||
String line = r.readLine(); // skip line
|
||||
ImmutableList.Builder resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
DataSet ds = DataSet.builder().fromDsadmString(line).build();
|
||||
BufferedReader r = new BufferedReader(new InputStreamReader(is));
|
||||
String line = r.readLine(); // skip line
|
||||
ImmutableList.Builder<DataSet> resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
DataSet ds = DataSet.builder().fromDsadmString(line).build();
|
||||
|
||||
resultBuilder.add(ds);
|
||||
}
|
||||
List<DataSet> dataSetList = resultBuilder.build();
|
||||
resultBuilder.add(ds);
|
||||
}
|
||||
List<DataSet> dataSetList = resultBuilder.build();
|
||||
|
||||
Assert.assertEquals(10, dataSetList.size());
|
||||
Assert.assertEquals(10, dataSetList.size());
|
||||
|
||||
Assert.assertEquals(UUID.fromString("c0ffee88-883e-47cf-80d1-ad71cc872180"), dataSetList.get(0).getUuid());
|
||||
Assert.assertEquals("nrm:nrm:realtime-jenkins:1.7", dataSetList.get(0).getUrn());
|
||||
Assert.assertEquals(UUID.fromString("c0ffee88-883e-47cf-80d1-ad71cc872180"), dataSetList.get(0).getUuid());
|
||||
Assert.assertEquals("nrm:nrm:realtime-jenkins:1.7", dataSetList.get(0).getUrn());
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
package org.jclouds.smartos.compute.domain;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
@ -11,28 +7,33 @@ import java.io.InputStreamReader;
|
|||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@Test(groups = "unit", testName = "VMTest")
|
||||
public class VMTest {
|
||||
|
||||
@Test
|
||||
public void testParse() throws IOException {
|
||||
// Response from console from a 'vmadm list -p'
|
||||
InputStream is = getClass().getResourceAsStream("vmadm-list-response.txt");
|
||||
@Test
|
||||
public void testParse() throws IOException {
|
||||
// Response from console from a 'vmadm list -p'
|
||||
InputStream is = getClass().getResourceAsStream("vmadm-list-response.txt");
|
||||
|
||||
BufferedReader r = new BufferedReader(new InputStreamReader(is));
|
||||
String line = null;
|
||||
ImmutableList.Builder resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
VM vm = VM.builder().fromVmadmString(line).build();
|
||||
BufferedReader r = new BufferedReader(new InputStreamReader(is));
|
||||
String line = null;
|
||||
ImmutableList.Builder<VM> resultBuilder = ImmutableList.builder();
|
||||
while ((line = r.readLine()) != null) {
|
||||
VM vm = VM.builder().fromVmadmString(line).build();
|
||||
|
||||
resultBuilder.add(vm);
|
||||
}
|
||||
List<VM> vmList = resultBuilder.build();
|
||||
resultBuilder.add(vm);
|
||||
}
|
||||
List<VM> vmList = resultBuilder.build();
|
||||
|
||||
Assert.assertEquals(2, vmList.size());
|
||||
Assert.assertEquals(2, vmList.size());
|
||||
|
||||
Assert.assertEquals(UUID.fromString("60bd2ae5-4e4d-4952-88f9-1b850259d914"), vmList.get(0).getUuid());
|
||||
Assert.assertEquals(VM.State.STOPPED, vmList.get(0).getState());
|
||||
Assert.assertEquals(UUID.fromString("60bd2ae5-4e4d-4952-88f9-1b850259d914"), vmList.get(0).getUuid());
|
||||
Assert.assertEquals(VM.State.STOPPED, vmList.get(0).getState());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue