mirror of https://github.com/apache/jclouds.git
[JCLOUDS-1360] add support for block device mappings to Nova
This commit is contained in:
parent
9b59d099d1
commit
ec03b710a7
|
@ -131,6 +131,7 @@ public class NovaComputeServiceAdapter implements
|
||||||
if (templateOptions.getKeyPairName() != null) {
|
if (templateOptions.getKeyPairName() != null) {
|
||||||
options.keyPairName(templateOptions.getKeyPairName());
|
options.keyPairName(templateOptions.getKeyPairName());
|
||||||
}
|
}
|
||||||
|
if (!templateOptions.getBlockDeviceMappings().isEmpty()) options.blockDeviceMappings(templateOptions.getBlockDeviceMappings());
|
||||||
|
|
||||||
logger.debug(">> creating new server region(%s) name(%s) image(%s) flavor(%s) options(%s)", regionId, name, imageId, flavorId, options);
|
logger.debug(">> creating new server region(%s) name(%s) image(%s) flavor(%s) options(%s)", regionId, name, imageId, flavorId, options);
|
||||||
final ServerCreated lightweightServer = novaApi.getServerApi(regionId).create(name, imageId, flavorId, options);
|
final ServerCreated lightweightServer = novaApi.getServerApi(regionId).create(name, imageId, flavorId, options);
|
||||||
|
|
|
@ -28,6 +28,7 @@ import java.util.Set;
|
||||||
import org.jclouds.compute.options.TemplateOptions;
|
import org.jclouds.compute.options.TemplateOptions;
|
||||||
import org.jclouds.domain.LoginCredentials;
|
import org.jclouds.domain.LoginCredentials;
|
||||||
import org.jclouds.openstack.nova.v2_0.NovaApi;
|
import org.jclouds.openstack.nova.v2_0.NovaApi;
|
||||||
|
import org.jclouds.openstack.nova.v2_0.domain.BlockDeviceMapping;
|
||||||
import org.jclouds.openstack.nova.v2_0.domain.Network;
|
import org.jclouds.openstack.nova.v2_0.domain.Network;
|
||||||
import org.jclouds.openstack.nova.v2_0.options.CreateServerOptions;
|
import org.jclouds.openstack.nova.v2_0.options.CreateServerOptions;
|
||||||
import org.jclouds.scriptbuilder.domain.Statement;
|
import org.jclouds.scriptbuilder.domain.Statement;
|
||||||
|
@ -91,6 +92,8 @@ public class NovaTemplateOptions extends TemplateOptions implements Cloneable {
|
||||||
protected boolean configDrive;
|
protected boolean configDrive;
|
||||||
protected Set<Network> novaNetworks;
|
protected Set<Network> novaNetworks;
|
||||||
protected String availabilityZone;
|
protected String availabilityZone;
|
||||||
|
// TODO move up to TemplateOptions as SoftLayer also have something similar?
|
||||||
|
protected Set<BlockDeviceMapping> blockDeviceMappings = ImmutableSet.of();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
|
@ -107,13 +110,14 @@ public class NovaTemplateOptions extends TemplateOptions implements Cloneable {
|
||||||
&& equal(this.diskConfig, that.diskConfig)
|
&& equal(this.diskConfig, that.diskConfig)
|
||||||
&& equal(this.configDrive, that.configDrive)
|
&& equal(this.configDrive, that.configDrive)
|
||||||
&& equal(this.novaNetworks, that.novaNetworks)
|
&& equal(this.novaNetworks, that.novaNetworks)
|
||||||
&& equal(this.availabilityZone, that.availabilityZone);
|
&& equal(this.availabilityZone, that.availabilityZone)
|
||||||
|
&& equal(this.blockDeviceMappings, that.blockDeviceMappings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hashCode(super.hashCode(), autoAssignFloatingIp, floatingIpPoolNames, generateKeyPair, keyPairName,
|
return Objects.hashCode(super.hashCode(), autoAssignFloatingIp, floatingIpPoolNames, generateKeyPair, keyPairName,
|
||||||
Arrays.hashCode(userData), diskConfig, configDrive, novaNetworks, availabilityZone);
|
Arrays.hashCode(userData), diskConfig, configDrive, novaNetworks, availabilityZone, blockDeviceMappings);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -131,6 +135,7 @@ public class NovaTemplateOptions extends TemplateOptions implements Cloneable {
|
||||||
toString.add("configDrive", configDrive);
|
toString.add("configDrive", configDrive);
|
||||||
toString.add("novaNetworks", novaNetworks);
|
toString.add("novaNetworks", novaNetworks);
|
||||||
toString.add("availabilityZone", availabilityZone);
|
toString.add("availabilityZone", availabilityZone);
|
||||||
|
toString.add("blockDeviceMappings", blockDeviceMappings);
|
||||||
return toString;
|
return toString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,6 +200,21 @@ public class NovaTemplateOptions extends TemplateOptions implements Cloneable {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see #getBlockDeviceMappings()
|
||||||
|
*/
|
||||||
|
public NovaTemplateOptions blockDeviceMappings(BlockDeviceMapping... blockDeviceMappings) {
|
||||||
|
return blockDeviceMappings(ImmutableSet.copyOf(checkNotNull(blockDeviceMappings, "blockDeviceMappings")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see #getBlockDeviceMappings()
|
||||||
|
*/
|
||||||
|
public NovaTemplateOptions blockDeviceMappings(Iterable<BlockDeviceMapping> blockDeviceMappings) {
|
||||||
|
this.blockDeviceMappings = ImmutableSet.copyOf(blockDeviceMappings);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The floating IP pool name(s) to use when allocating a FloatingIP. Applicable
|
* The floating IP pool name(s) to use when allocating a FloatingIP. Applicable
|
||||||
* only if #shouldAutoAssignFloatingIp() returns true. If not set will attempt to
|
* only if #shouldAutoAssignFloatingIp() returns true. If not set will attempt to
|
||||||
|
@ -259,6 +279,10 @@ public class NovaTemplateOptions extends TemplateOptions implements Cloneable {
|
||||||
return availabilityZone;
|
return availabilityZone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<BlockDeviceMapping> getBlockDeviceMappings() {
|
||||||
|
return blockDeviceMappings;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue