mirror of https://github.com/apache/jclouds.git
added missing provider id field, default location to hardware/image, fixed packages
This commit is contained in:
parent
4cc5e03ae8
commit
4581b924cf
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.compute.strategy;
|
package org.jclouds.openstack.nova.v1_1.compute;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -75,6 +75,8 @@ public class NovaComputeServiceAdapter implements ComputeServiceAdapter<Server,
|
||||||
public NodeAndInitialCredentials<Server> createNodeWithGroupEncodedIntoName(String tag, String name, Template template)
|
public NodeAndInitialCredentials<Server> createNodeWithGroupEncodedIntoName(String tag, String name, Template template)
|
||||||
{
|
{
|
||||||
ServerClient serverClient = template.getLocation() != null ? novaClient.getServerClientForRegion(template.getLocation().getId()) : defaultLocationServerClient;
|
ServerClient serverClient = template.getLocation() != null ? novaClient.getServerClientForRegion(template.getLocation().getId()) : defaultLocationServerClient;
|
||||||
|
// TODO: make NovaTemplateOptions with the following:
|
||||||
|
// security group, key pair, floating ip (attach post server-create?)
|
||||||
Server server = serverClient.createServer(name, template.getImage().getId(), template.getHardware().getId());
|
Server server = serverClient.createServer(name, template.getImage().getId(), template.getHardware().getId());
|
||||||
return new NodeAndInitialCredentials<Server>(server, server.getId() + "", LoginCredentials.builder().password(server.getAdminPass()).build());
|
return new NodeAndInitialCredentials<Server>(server, server.getId() + "", LoginCredentials.builder().password(server.getAdminPass()).build());
|
||||||
}
|
}
|
|
@ -28,11 +28,11 @@ import org.jclouds.domain.Location;
|
||||||
import org.jclouds.functions.IdentityFunction;
|
import org.jclouds.functions.IdentityFunction;
|
||||||
import org.jclouds.openstack.nova.v1_1.NovaAsyncClient;
|
import org.jclouds.openstack.nova.v1_1.NovaAsyncClient;
|
||||||
import org.jclouds.openstack.nova.v1_1.NovaClient;
|
import org.jclouds.openstack.nova.v1_1.NovaClient;
|
||||||
|
import org.jclouds.openstack.nova.v1_1.compute.NovaComputeServiceAdapter;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.FlavorToHardware;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.FlavorToHardware;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToImage;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToImage;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToOperatingSystem;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToOperatingSystem;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.ServerToNodeMetadata;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.ServerToNodeMetadata;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.strategy.NovaComputeServiceAdapter;
|
|
||||||
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
||||||
import org.jclouds.openstack.nova.v1_1.domain.Server;
|
import org.jclouds.openstack.nova.v1_1.domain.Server;
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,17 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.jclouds.compute.domain.Hardware;
|
import org.jclouds.compute.domain.Hardware;
|
||||||
import org.jclouds.compute.domain.HardwareBuilder;
|
import org.jclouds.compute.domain.HardwareBuilder;
|
||||||
import org.jclouds.compute.domain.Processor;
|
import org.jclouds.compute.domain.Processor;
|
||||||
import org.jclouds.compute.domain.internal.VolumeImpl;
|
import org.jclouds.compute.domain.internal.VolumeImpl;
|
||||||
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A function for transforming the nova specific Flavor object to the generic Hardware object.
|
* A function for transforming the nova specific Flavor object to the generic Hardware object.
|
||||||
|
@ -33,15 +37,27 @@ import com.google.common.base.Function;
|
||||||
*/
|
*/
|
||||||
public class FlavorToHardware implements Function<Flavor, Hardware>
|
public class FlavorToHardware implements Function<Flavor, Hardware>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private final Supplier<Location> defaultLocation;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public FlavorToHardware(Supplier<Location> defaultLocation)
|
||||||
|
{
|
||||||
|
this.defaultLocation = defaultLocation;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Hardware apply(Flavor flavor)
|
public Hardware apply(Flavor flavor)
|
||||||
{
|
{
|
||||||
return new HardwareBuilder()
|
return new HardwareBuilder()
|
||||||
|
// TODO: scope id to region, if there's a chance for conflict
|
||||||
.id(flavor.getId())
|
.id(flavor.getId())
|
||||||
|
.providerId(flavor.getId())
|
||||||
.name(flavor.getName())
|
.name(flavor.getName())
|
||||||
.ram(flavor.getRam())
|
.ram(flavor.getRam())
|
||||||
.processor(new Processor(flavor.getVcpus(), 1.0))
|
.processor(new Processor(flavor.getVcpus(), 1.0))
|
||||||
.volume(new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true))
|
.volume(new VolumeImpl(Float.valueOf(flavor.getDisk()), true, true))
|
||||||
|
.location(defaultLocation.get())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,10 @@ import javax.inject.Inject;
|
||||||
import org.jclouds.compute.domain.Image;
|
import org.jclouds.compute.domain.Image;
|
||||||
import org.jclouds.compute.domain.ImageBuilder;
|
import org.jclouds.compute.domain.ImageBuilder;
|
||||||
import org.jclouds.compute.domain.OperatingSystem;
|
import org.jclouds.compute.domain.OperatingSystem;
|
||||||
|
import org.jclouds.domain.Location;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A function for transforming a nova-specific Image into a generic Image object.
|
* A function for transforming a nova-specific Image into a generic Image object.
|
||||||
|
@ -34,21 +36,26 @@ import com.google.common.base.Function;
|
||||||
public class NovaImageToImage implements Function<org.jclouds.openstack.nova.v1_1.domain.Image, Image>
|
public class NovaImageToImage implements Function<org.jclouds.openstack.nova.v1_1.domain.Image, Image>
|
||||||
{
|
{
|
||||||
private final Function<org.jclouds.openstack.nova.v1_1.domain.Image, OperatingSystem> imageToOs;
|
private final Function<org.jclouds.openstack.nova.v1_1.domain.Image, OperatingSystem> imageToOs;
|
||||||
|
private final Supplier<Location> defaultLocation;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public NovaImageToImage(Function<org.jclouds.openstack.nova.v1_1.domain.Image, OperatingSystem> imageToOs)
|
public NovaImageToImage(Function<org.jclouds.openstack.nova.v1_1.domain.Image, OperatingSystem> imageToOs, Supplier<Location> defaultLocation)
|
||||||
{
|
{
|
||||||
this.imageToOs = imageToOs;
|
this.imageToOs = imageToOs;
|
||||||
|
this.defaultLocation = defaultLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Image apply(org.jclouds.openstack.nova.v1_1.domain.Image image)
|
public Image apply(org.jclouds.openstack.nova.v1_1.domain.Image image)
|
||||||
{
|
{
|
||||||
return new ImageBuilder()
|
return new ImageBuilder()
|
||||||
|
// TODO: scope id to region, if there's a chance for conflict
|
||||||
.id(image.getId())
|
.id(image.getId())
|
||||||
|
.providerId(image.getId())
|
||||||
.name(image.getName())
|
.name(image.getName())
|
||||||
.operatingSystem(imageToOs.apply(image))
|
.operatingSystem(imageToOs.apply(image))
|
||||||
.description(image.getName())
|
.description(image.getName())
|
||||||
|
.location(defaultLocation.get())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,9 @@ public class ServerToNodeMetadata implements Function<Server, NodeMetadata>
|
||||||
public NodeMetadata apply(Server server)
|
public NodeMetadata apply(Server server)
|
||||||
{
|
{
|
||||||
return new NodeMetadataBuilder()
|
return new NodeMetadataBuilder()
|
||||||
|
// TODO: scope id to region, if there's a chance for conflict
|
||||||
.id(server.getId())
|
.id(server.getId())
|
||||||
|
.providerId(server.getId())
|
||||||
.name(server.getName())
|
.name(server.getName())
|
||||||
.publicAddresses(Iterables.transform(server.getPublicAddresses(), new AddressToStringTransformationFunction()))
|
.publicAddresses(Iterables.transform(server.getPublicAddresses(), new AddressToStringTransformationFunction()))
|
||||||
.privateAddresses(Iterables.transform(server.getPrivateAddresses(), new AddressToStringTransformationFunction()))
|
.privateAddresses(Iterables.transform(server.getPrivateAddresses(), new AddressToStringTransformationFunction()))
|
||||||
|
|
|
@ -43,9 +43,10 @@ import com.google.common.collect.LinkedHashMultimap;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A server is a virtual machine instance in the compute system. Flavor and
|
* A server is a virtual machine instance in the compute system. Flavor and image are requisite
|
||||||
* image are requisite elements when creating a server.
|
* elements when creating a server.
|
||||||
*
|
*
|
||||||
* @author Adrian Cole
|
* @author Adrian Cole
|
||||||
* @see <a href=
|
* @see <a href=
|
||||||
|
@ -178,8 +179,7 @@ public class Server extends Resource {
|
||||||
* @see Server#getAddresses()
|
* @see Server#getAddresses()
|
||||||
*/
|
*/
|
||||||
public Builder addresses(Multimap<Address.Type, Address> addresses) {
|
public Builder addresses(Multimap<Address.Type, Address> addresses) {
|
||||||
this.addresses = ImmutableMultimap.copyOf(checkNotNull(addresses,
|
this.addresses = ImmutableMultimap.copyOf(checkNotNull(addresses, "addresses"));
|
||||||
"addresses"));
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,16 +187,15 @@ public class Server extends Resource {
|
||||||
* @see Server#getPrivateAddresses()
|
* @see Server#getPrivateAddresses()
|
||||||
*/
|
*/
|
||||||
public Builder privateAddresses(Address... privateAddresses) {
|
public Builder privateAddresses(Address... privateAddresses) {
|
||||||
return privateAddresses(ImmutableSet.copyOf(checkNotNull(
|
return privateAddresses(ImmutableSet.copyOf(checkNotNull(privateAddresses, "privateAddresses")));
|
||||||
privateAddresses, "privateAddresses")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see Server#getPrivateAddresses()
|
* @see Server#getPrivateAddresses()
|
||||||
*/
|
*/
|
||||||
public Builder privateAddresses(Set<Address> privateAddresses) {
|
public Builder privateAddresses(Set<Address> privateAddresses) {
|
||||||
this.addresses.replaceValues(Address.Type.PRIVATE, ImmutableSet
|
this.addresses.replaceValues(Address.Type.PRIVATE, ImmutableSet.copyOf(checkNotNull(privateAddresses,
|
||||||
.copyOf(checkNotNull(privateAddresses, "privateAddresses")));
|
"privateAddresses")));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,16 +203,15 @@ public class Server extends Resource {
|
||||||
* @see Server#getPublicAddresses()
|
* @see Server#getPublicAddresses()
|
||||||
*/
|
*/
|
||||||
public Builder publicAddresses(Address... publicAddresses) {
|
public Builder publicAddresses(Address... publicAddresses) {
|
||||||
return publicAddresses(ImmutableSet.copyOf(checkNotNull(
|
return publicAddresses(ImmutableSet.copyOf(checkNotNull(publicAddresses, "publicAddresses")));
|
||||||
publicAddresses, "publicAddresses")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see Server#getPublicAddresses()
|
* @see Server#getPublicAddresses()
|
||||||
*/
|
*/
|
||||||
public Builder publicAddresses(Set<Address> publicAddresses) {
|
public Builder publicAddresses(Set<Address> publicAddresses) {
|
||||||
this.addresses.replaceValues(Address.Type.PUBLIC, ImmutableSet
|
this.addresses.replaceValues(Address.Type.PUBLIC, ImmutableSet.copyOf(checkNotNull(publicAddresses,
|
||||||
.copyOf(checkNotNull(publicAddresses, "publicAddresses")));
|
"publicAddresses")));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,15 +219,14 @@ public class Server extends Resource {
|
||||||
* @see Server#getAdminPass()
|
* @see Server#getAdminPass()
|
||||||
*/
|
*/
|
||||||
public Builder adminPass(String adminPass) {
|
public Builder adminPass(String adminPass) {
|
||||||
this.adminPass = adminPass;
|
this.adminPass = adminPass;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Server build() {
|
public Server build() {
|
||||||
// return new Server(id, name, links, addresses);
|
// return new Server(id, name, links, addresses);
|
||||||
return new Server(id, name, links, tenantId, userId, updated,
|
return new Server(id, name, links, tenantId, userId, updated, created, hostId, accessIPv4, accessIPv6, status,
|
||||||
created, hostId, accessIPv4, accessIPv6, status, progress,
|
progress, image, flavor, adminPass, addresses, metadata);
|
||||||
image, flavor, adminPass, addresses, metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder fromServer(Server in) {
|
public Builder fromServer(Server in) {
|
||||||
|
@ -287,11 +284,10 @@ public class Server extends Resource {
|
||||||
protected final Map<Address.Type, Set<Address>> addresses;
|
protected final Map<Address.Type, Set<Address>> addresses;
|
||||||
protected Map<String, String> metadata;
|
protected Map<String, String> metadata;
|
||||||
|
|
||||||
protected Server(String id, String name, Set<Link> links, String tenantId,
|
protected Server(String id, String name, Set<Link> links, String tenantId, String userId, Date updated,
|
||||||
String userId, Date updated, Date created, String hostId,
|
Date created, String hostId, String accessIPv4, String accessIPv6, ServerStatus status, int progress,
|
||||||
String accessIPv4, String accessIPv6, ServerStatus status,
|
Resource image, Resource flavor, String adminPass, Multimap<Address.Type, Address> addresses,
|
||||||
int progress, Resource image, Resource flavor, String adminPass,
|
Map<String, String> metadata) {
|
||||||
Multimap<Address.Type, Address> addresses, Map<String, String> metadata) {
|
|
||||||
super(id, name, links);
|
super(id, name, links);
|
||||||
this.tenantId = tenantId;
|
this.tenantId = tenantId;
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
|
@ -305,8 +301,7 @@ public class Server extends Resource {
|
||||||
this.image = image;
|
this.image = image;
|
||||||
this.flavor = flavor;
|
this.flavor = flavor;
|
||||||
this.metadata = Maps.newHashMap(metadata);
|
this.metadata = Maps.newHashMap(metadata);
|
||||||
this.addresses = Multimaps2.toOldSchool(ImmutableMultimap
|
this.addresses = Multimaps2.toOldSchool(ImmutableMultimap.copyOf(checkNotNull(addresses, "addresses")));
|
||||||
.copyOf(checkNotNull(addresses, "addresses")));
|
|
||||||
this.adminPass = adminPass;
|
this.adminPass = adminPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,72 +357,68 @@ public class Server extends Resource {
|
||||||
* @return the private ip addresses assigned to the server
|
* @return the private ip addresses assigned to the server
|
||||||
*/
|
*/
|
||||||
public Set<Address> getPrivateAddresses() {
|
public Set<Address> getPrivateAddresses() {
|
||||||
Collection<Address> privateAddresses = getAddresses().get(Address.Type.PRIVATE);
|
Collection<Address> privateAddresses = getAddresses().get(Address.Type.PRIVATE);
|
||||||
if (privateAddresses == null) {
|
if (privateAddresses == null) {
|
||||||
return ImmutableSet.<Address> of();
|
return ImmutableSet.<Address> of();
|
||||||
} else {
|
} else {
|
||||||
return ImmutableSet.copyOf(privateAddresses);
|
return ImmutableSet.copyOf(privateAddresses);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the public ip addresses assigned to the server
|
* @return the public ip addresses assigned to the server
|
||||||
*/
|
*/
|
||||||
public Set<Address> getPublicAddresses() {
|
public Set<Address> getPublicAddresses() {
|
||||||
Collection<Address> publicAddrs = getAddresses().get(Address.Type.PUBLIC);
|
Collection<Address> publicAddrs = getAddresses().get(Address.Type.PUBLIC);
|
||||||
if (publicAddrs == null) {
|
if (publicAddrs == null) {
|
||||||
return ImmutableSet.<Address> of();
|
return ImmutableSet.<Address> of();
|
||||||
} else {
|
} else {
|
||||||
return ImmutableSet.copyOf(publicAddrs);
|
return ImmutableSet.copyOf(publicAddrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the ip addresses assigned to the server
|
* @return the ip addresses assigned to the server
|
||||||
*/
|
*/
|
||||||
public Multimap<Type, Address> getAddresses() {
|
public Multimap<Type, Address> getAddresses() {
|
||||||
ImmutableSetMultimap.Builder returnMapBuilder = new ImmutableSetMultimap.Builder<Type, Address>();
|
ImmutableSetMultimap.Builder<Type, Address> returnMapBuilder = new ImmutableSetMultimap.Builder<Type, Address>();
|
||||||
|
|
||||||
Set<Address> publicAddresses = addresses.get(Address.Type.PUBLIC);
|
Set<Address> publicAddresses = addresses.get(Address.Type.PUBLIC);
|
||||||
Set<Address> privateAddresses = addresses.get(Address.Type.PRIVATE);
|
Set<Address> privateAddresses = addresses.get(Address.Type.PRIVATE);
|
||||||
|
if (publicAddresses != null) {
|
||||||
|
returnMapBuilder.putAll(Address.Type.PUBLIC, Iterables.filter(publicAddresses, Predicates
|
||||||
|
.not(IsPrivateAddress.INSTANCE)));
|
||||||
|
}
|
||||||
|
if (privateAddresses != null) {
|
||||||
|
returnMapBuilder.putAll(Address.Type.PRIVATE, Iterables.filter(privateAddresses, IsPrivateAddress.INSTANCE));
|
||||||
|
returnMapBuilder.putAll(Address.Type.PUBLIC, Iterables.filter(privateAddresses, Predicates
|
||||||
|
.not(IsPrivateAddress.INSTANCE)));
|
||||||
|
}
|
||||||
|
ImmutableSetMultimap<Type, Address> returnMap = returnMapBuilder.build();
|
||||||
|
|
||||||
if (privateAddresses.size() > 1) {
|
return returnMap.size() > 0 ? returnMap : Multimaps2.fromOldSchool(addresses);
|
||||||
if (publicAddresses != null) {
|
|
||||||
returnMapBuilder.putAll(Address.Type.PUBLIC, Iterables.filter(publicAddresses, Predicates.not(IsPrivateAddress.INSTANCE)));
|
|
||||||
}
|
|
||||||
returnMapBuilder.putAll(Address.Type.PRIVATE, Iterables.filter(privateAddresses, IsPrivateAddress.INSTANCE));
|
|
||||||
returnMapBuilder.putAll(Address.Type.PUBLIC, Iterables.filter(privateAddresses, Predicates.not(IsPrivateAddress.INSTANCE)));
|
|
||||||
} else {
|
|
||||||
return Multimaps2.fromOldSchool(addresses);
|
|
||||||
}
|
|
||||||
|
|
||||||
return returnMapBuilder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static enum IsPrivateAddress implements Predicate<Address> {
|
private static enum IsPrivateAddress implements Predicate<Address> {
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
public boolean apply (Address in) {
|
public boolean apply(Address in) {
|
||||||
return InetAddresses2.IsPrivateIPAddress.INSTANCE.apply(in.getAddr());
|
return InetAddresses2.IsPrivateIPAddress.INSTANCE.apply(in.getAddr());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the administrative password for this server.
|
* @return the administrative password for this server.
|
||||||
*/
|
*/
|
||||||
public String getAdminPass() {
|
public String getAdminPass() {
|
||||||
return adminPass;
|
return adminPass;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return toStringHelper("").add("id", id).add("name", name)
|
return toStringHelper("").add("id", id).add("name", name).add("tenantId", tenantId).add("userId", userId).add(
|
||||||
.add("tenantId", tenantId).add("userId", userId).add("hostId", hostId)
|
"hostId", hostId).add("updated", updated).add("created", created).add("accessIPv4", accessIPv4).add(
|
||||||
.add("updated", updated).add("created", created)
|
"accessIPv6", accessIPv6).add("status", status).add("progress", progress).add("image", image).add(
|
||||||
.add("accessIPv4", accessIPv4).add("accessIPv6", accessIPv6)
|
"flavor", flavor).add("metadata", metadata).add("links", links).add("addresses", addresses).add(
|
||||||
.add("status", status).add("progress", progress)
|
"adminPass", adminPass).toString();
|
||||||
.add("image", image).add("flavor", flavor)
|
|
||||||
.add("metadata", metadata)
|
|
||||||
.add("links", links).add("addresses", addresses)
|
|
||||||
.add("adminPass",adminPass).toString();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.features;
|
package org.jclouds.openstack.nova.v1_1.compute;
|
||||||
|
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.functions;
|
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
||||||
|
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertFalse;
|
import static org.testng.Assert.assertFalse;
|
||||||
|
@ -25,10 +25,13 @@ import static org.testng.Assert.assertNotNull;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.jclouds.compute.domain.Hardware;
|
import org.jclouds.compute.domain.Hardware;
|
||||||
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.FlavorToHardware;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.FlavorToHardware;
|
||||||
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
import org.jclouds.openstack.nova.v1_1.domain.Flavor;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.base.Suppliers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the function used to transform Flavor objects into Hardware objects
|
* Tests the function used to transform Flavor objects into Hardware objects
|
||||||
*
|
*
|
||||||
|
@ -48,10 +51,11 @@ public class FlavorToHardwareTest
|
||||||
.vcpus(16)
|
.vcpus(16)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Hardware converted = new FlavorToHardware().apply(flavorToConvert);
|
Hardware converted = new FlavorToHardware(Suppliers.<Location>ofInstance(null)).apply(flavorToConvert);
|
||||||
|
|
||||||
assertEquals(converted.getName(), flavorToConvert.getName());
|
assertEquals(converted.getName(), flavorToConvert.getName());
|
||||||
assertEquals(converted.getId(), flavorToConvert.getId());
|
assertEquals(converted.getId(), flavorToConvert.getId());
|
||||||
|
assertEquals(converted.getProviderId(), flavorToConvert.getId());
|
||||||
assertEquals(converted.getRam(), flavorToConvert.getRam());
|
assertEquals(converted.getRam(), flavorToConvert.getRam());
|
||||||
|
|
||||||
assertNotNull(converted.getProcessors());
|
assertNotNull(converted.getProcessors());
|
||||||
|
@ -61,5 +65,6 @@ public class FlavorToHardwareTest
|
||||||
assertNotNull(converted.getVolumes());
|
assertNotNull(converted.getVolumes());
|
||||||
assertFalse(converted.getVolumes().isEmpty());
|
assertFalse(converted.getVolumes().isEmpty());
|
||||||
assertEquals(converted.getVolumes().iterator().next().getSize(), Float.valueOf(flavorToConvert.getDisk()));
|
assertEquals(converted.getVolumes().iterator().next().getSize(), Float.valueOf(flavorToConvert.getDisk()));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.functions;
|
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
||||||
|
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
@ -26,11 +26,13 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
import org.jclouds.compute.domain.OperatingSystem;
|
import org.jclouds.compute.domain.OperatingSystem;
|
||||||
import org.jclouds.compute.domain.OsFamily;
|
import org.jclouds.compute.domain.OsFamily;
|
||||||
|
import org.jclouds.domain.Location;
|
||||||
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToImage;
|
import org.jclouds.openstack.nova.v1_1.compute.functions.NovaImageToImage;
|
||||||
import org.jclouds.openstack.nova.v1_1.domain.Image;
|
import org.jclouds.openstack.nova.v1_1.domain.Image;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.base.Suppliers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the function that transforms nova-specific images to generic images.
|
* Tests the function that transforms nova-specific images to generic images.
|
||||||
|
@ -45,10 +47,12 @@ public class NovaImageToImageTest
|
||||||
UUID id = UUID.randomUUID();
|
UUID id = UUID.randomUUID();
|
||||||
Image novaImageToConvert = Image.builder().id(id.toString()).name("Test Image " + id).build();
|
Image novaImageToConvert = Image.builder().id(id.toString()).name("Test Image " + id).build();
|
||||||
OperatingSystem operatingSystem = new OperatingSystem(OsFamily.UBUNTU, "My Test OS", "My Test Version", "x86", "My Test OS", true);
|
OperatingSystem operatingSystem = new OperatingSystem(OsFamily.UBUNTU, "My Test OS", "My Test Version", "x86", "My Test OS", true);
|
||||||
NovaImageToImage converter = new NovaImageToImage(new MockImageToOsConverter(operatingSystem));
|
NovaImageToImage converter = new NovaImageToImage(new MockImageToOsConverter(operatingSystem),Suppliers.<Location>ofInstance(null));
|
||||||
org.jclouds.compute.domain.Image convertedImage = converter.apply(novaImageToConvert);
|
org.jclouds.compute.domain.Image convertedImage = converter.apply(novaImageToConvert);
|
||||||
|
|
||||||
assertEquals(convertedImage.getId(), novaImageToConvert.getId());
|
assertEquals(convertedImage.getId(), novaImageToConvert.getId());
|
||||||
|
assertEquals(convertedImage.getProviderId(), novaImageToConvert.getId());
|
||||||
|
|
||||||
assertEquals(convertedImage.getName(), novaImageToConvert.getName());
|
assertEquals(convertedImage.getName(), novaImageToConvert.getName());
|
||||||
assertEquals(convertedImage.getOperatingSystem(), operatingSystem);
|
assertEquals(convertedImage.getOperatingSystem(), operatingSystem);
|
||||||
}
|
}
|
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.functions;
|
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
||||||
|
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertFalse;
|
import static org.testng.Assert.assertFalse;
|
|
@ -16,7 +16,7 @@
|
||||||
* specific language governing permissions and limitations
|
* specific language governing permissions and limitations
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.jclouds.openstack.nova.v1_1.functions;
|
package org.jclouds.openstack.nova.v1_1.compute.functions;
|
||||||
|
|
||||||
import static org.testng.Assert.assertEquals;
|
import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
@ -45,7 +45,7 @@ public class ServerToNodeMetadataTest
|
||||||
.id(id.toString())
|
.id(id.toString())
|
||||||
.name("Test Server " + id)
|
.name("Test Server " + id)
|
||||||
.privateAddresses(Address.createV4("10.0.0.1"))
|
.privateAddresses(Address.createV4("10.0.0.1"))
|
||||||
.publicAddresses(Address.createV4("10.0.1.1"))
|
.publicAddresses(Address.createV4("1.0.1.1"))
|
||||||
.status(ServerStatus.ACTIVE)
|
.status(ServerStatus.ACTIVE)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
@ -54,6 +54,7 @@ public class ServerToNodeMetadataTest
|
||||||
NodeMetadata convertedNodeMetadata = converter.apply(serverToConvert);
|
NodeMetadata convertedNodeMetadata = converter.apply(serverToConvert);
|
||||||
|
|
||||||
assertEquals(serverToConvert.getId(), convertedNodeMetadata.getId());
|
assertEquals(serverToConvert.getId(), convertedNodeMetadata.getId());
|
||||||
|
assertEquals(serverToConvert.getId(), convertedNodeMetadata.getProviderId());
|
||||||
assertEquals(serverToConvert.getName(), convertedNodeMetadata.getName());
|
assertEquals(serverToConvert.getName(), convertedNodeMetadata.getName());
|
||||||
assertEquals(serverToConvert.getStatus().getNodeState(), convertedNodeMetadata.getState());
|
assertEquals(serverToConvert.getStatus().getNodeState(), convertedNodeMetadata.getState());
|
||||||
|
|
||||||
|
@ -63,6 +64,6 @@ public class ServerToNodeMetadataTest
|
||||||
|
|
||||||
assertNotNull(convertedNodeMetadata.getPublicAddresses());
|
assertNotNull(convertedNodeMetadata.getPublicAddresses());
|
||||||
assertEquals(convertedNodeMetadata.getPublicAddresses().size(), 1);
|
assertEquals(convertedNodeMetadata.getPublicAddresses().size(), 1);
|
||||||
assertEquals(convertedNodeMetadata.getPublicAddresses().iterator().next(), "10.0.1.1");
|
assertEquals(convertedNodeMetadata.getPublicAddresses().iterator().next(), "1.0.1.1");
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue