mirror of https://github.com/apache/jclouds.git
Merge branch 'master' of git://github.com/jclouds/jclouds
This commit is contained in:
commit
7368b68a1e
|
@ -2,6 +2,7 @@
|
|||
syntax: glob
|
||||
target/
|
||||
test-output/
|
||||
bin/
|
||||
.settings/
|
||||
.classpath
|
||||
.project
|
||||
|
|
10
README.txt
10
README.txt
|
@ -33,7 +33,7 @@ our compute api supports: aws-ec2, gogrid, cloudservers-us, stub (in-memory), de
|
|||
cloudservers-uk, vcloud (generic), ec2 (generic), byon, nova,
|
||||
trmk-ecloud, trmk-vcloudexpress, eucalyptus (generic),
|
||||
cloudsigma-zrh, elasticstack(generic), bluelock-vcloud-vcenterprise,
|
||||
bluelock-vcloud-zone01, stratogen-vcloud-mycloud,
|
||||
bluelock-vcloud-zone01, stratogen-vcloud-mycloud, rimuhosting,
|
||||
slicehost, eucalyptus-partnercloud-ec2, elastichosts-lon-p (Peer 1),
|
||||
elastichosts-sat-p (Peer 1), elastichosts-lon-b (BlueSquare),
|
||||
openhosting-east1, serverlove-z1-man, skalicloud-sdg-my
|
||||
|
@ -42,9 +42,8 @@ our compute api supports: aws-ec2, gogrid, cloudservers-us, stub (in-memory), de
|
|||
to all of these providers
|
||||
|
||||
our blobstore api supports: aws-s3, cloudfiles-us, cloudfiles-uk, filesystem,
|
||||
azureblob, atmos (generic), synaptic-storage, scaleup-storage,
|
||||
cloudonestorage, walrus(generic), googlestorage, ninefold-storage,
|
||||
scality-rs2 (generic), hosteurope-storage, tiscali-storage,
|
||||
azureblob, atmos (generic), synaptic-storage,
|
||||
cloudonestorage, walrus(generic), ninefold-storage,
|
||||
eucalyptus-partnercloud-s3, swift (generic), transient (in-mem)
|
||||
|
||||
* note * the pom dependency org.jclouds/jclouds-allblobstore gives you access to
|
||||
|
@ -55,7 +54,8 @@ our loadbalancer api supports: cloudloadbalancers-us
|
|||
* note * the pom dependency org.jclouds/jclouds-allloadbalancer gives you access to
|
||||
to all of these providers
|
||||
|
||||
we also have support for: ibmdev, mezeo, nirvanix, boxdotnet, rimuhosting, openstack nova,
|
||||
we also have support for: ibmdev, mezeo, nirvanix, boxdotnet, openstack nova, scality ring,
|
||||
hosteurope-storage, tiscali-storage, scaleup-storage, googlestorage,
|
||||
azurequeue, simpledb, cloudstack as well as a async-http-client
|
||||
driver in the sandbox
|
||||
|
||||
|
|
|
@ -39,36 +39,11 @@
|
|||
<artifactId>aws-s3</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>googlestorage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>scality-rs2</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>ninefold-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>scaleup-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>tiscali-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>hosteurope-storage</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>synaptic-storage</artifactId>
|
||||
|
|
|
@ -49,6 +49,11 @@
|
|||
<artifactId>aws-ec2</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.provider</groupId>
|
||||
<artifactId>rimuhosting</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jclouds.api</groupId>
|
||||
<artifactId>nova</artifactId>
|
||||
|
|
0
apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CDNManagement.java
Executable file → Normal file
0
apis/cloudfiles/src/main/java/org/jclouds/cloudfiles/CDNManagement.java
Executable file → Normal file
|
@ -209,13 +209,23 @@ public class EC2HardwareBuilder extends HardwareBuilder {
|
|||
/**
|
||||
* @see InstanceType#M1_SMALL
|
||||
*/
|
||||
public static EC2HardwareBuilder m1_small() {
|
||||
public static EC2HardwareBuilder m1_small32() {
|
||||
return new EC2HardwareBuilder(InstanceType.M1_SMALL).ram(1740).processors(
|
||||
ImmutableList.of(new Processor(1.0, 1.0))).volumes(
|
||||
ImmutableList.<Volume> of(new VolumeImpl(10.0f, "/dev/sda1", true, false), new VolumeImpl(150.0f,
|
||||
"/dev/sda2", false, false))).is64Bit(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see InstanceType#M1_SMALL
|
||||
*/
|
||||
public static EC2HardwareBuilder m1_small() {
|
||||
return new EC2HardwareBuilder(InstanceType.M1_SMALL).ram(1740).processors(
|
||||
ImmutableList.of(new Processor(1.0, 1.0))).volumes(
|
||||
ImmutableList.<Volume> of(new VolumeImpl(10.0f, "/dev/sda1", true, false), new VolumeImpl(150.0f,
|
||||
"/dev/sda2", false, false)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see InstanceType#T1_MICRO
|
||||
*/
|
||||
|
|
|
@ -509,6 +509,6 @@ public class EC2TemplateOptions extends TemplateOptions implements Cloneable {
|
|||
@Override
|
||||
public String toString() {
|
||||
return "[groupIds=" + groupIds + ", keyPair=" + keyPair + ", noKeyPair=" + noKeyPair + ", userData="
|
||||
+ Arrays.toString(userData) + ", blockDeviceMappings=" + blockDeviceMappings + "]";
|
||||
+ Arrays.toString(userData) + ", blockDeviceMappings=" + blockDeviceMappings.build() + "]";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
*/
|
||||
package org.jclouds.ec2.compute.suppliers;
|
||||
|
||||
import static org.jclouds.compute.predicates.ImagePredicates.any;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_medium;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_xlarge;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_large;
|
||||
|
@ -43,7 +42,7 @@ public class EC2HardwareSupplier implements Supplier<Set<? extends Hardware>> {
|
|||
|
||||
@Override
|
||||
public Set<? extends Hardware> get() {
|
||||
return ImmutableSet.<Hardware> of(m1_small().supportsImage(any()).build(), c1_medium().build(), c1_xlarge()
|
||||
return ImmutableSet.<Hardware> of(m1_small().build(), c1_medium().build(), c1_xlarge()
|
||||
.build(), m1_large().build(), m1_xlarge().build());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_medium;
|
|||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c1_xlarge;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cc1_4xlarge;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_large;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_small;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_small32;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_xlarge;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m2_2xlarge;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m2_4xlarge;
|
||||
|
@ -161,7 +161,7 @@ public class EC2TemplateBuilderTest {
|
|||
.build()));
|
||||
Supplier<Set<? extends Hardware>> sizes = Suppliers.<Set<? extends Hardware>> ofInstance(ImmutableSet
|
||||
.<Hardware> of(t1_micro().build(), c1_medium().build(), c1_xlarge().build(), m1_large().build(),
|
||||
m1_small().build(), m1_xlarge().build(), m2_xlarge().build(), m2_2xlarge().build(),
|
||||
m1_small32().build(), m1_xlarge().build(), m2_xlarge().build(), m2_2xlarge().build(),
|
||||
m2_4xlarge().build(), CC1_4XLARGE));
|
||||
|
||||
return new TemplateBuilderImpl(locations, images, sizes, Suppliers.ofInstance(location), optionsProvider,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
package org.jclouds.ec2.compute.functions;
|
||||
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_small;
|
||||
import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m1_small32;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
@ -129,7 +129,7 @@ public class RunningInstanceToNodeMetadataTest {
|
|||
|
||||
@Test
|
||||
public void testApplyWhereTagDoesntMatchAndImageHardwareAndLocationFound() throws UnknownHostException {
|
||||
RunningInstanceToNodeMetadata parser = createNodeParser(ImmutableSet.of(m1_small().build()), ImmutableSet
|
||||
RunningInstanceToNodeMetadata parser = createNodeParser(ImmutableSet.of(m1_small32().build()), ImmutableSet
|
||||
.of(provider), EC2ImageParserTest.convertImages("/amzn_images.xml"), ImmutableMap
|
||||
.<String, Credentials> of());
|
||||
|
||||
|
@ -137,7 +137,7 @@ public class RunningInstanceToNodeMetadataTest {
|
|||
|
||||
assertEquals(parser.apply(server), new NodeMetadataBuilder().state(NodeState.RUNNING).privateAddresses(
|
||||
ImmutableSet.of("10.243.42.70")).publicAddresses(ImmutableSet.of("174.129.81.68")).imageId(
|
||||
"us-east-1/ami-82e4b5c7").hardware(m1_small().build()).operatingSystem(
|
||||
"us-east-1/ami-82e4b5c7").hardware(m1_small32().build()).operatingSystem(
|
||||
new OperatingSystem.Builder().family(OsFamily.UNRECOGNIZED).version("").arch("paravirtual").description(
|
||||
"137112412989/amzn-ami-0.9.7-beta.i386-ebs").is64Bit(false).build()).id("us-east-1/i-0799056f")
|
||||
.providerId("i-0799056f").location(provider).build());
|
||||
|
@ -158,7 +158,7 @@ public class RunningInstanceToNodeMetadataTest {
|
|||
};
|
||||
Map<RegionAndName, Image> instanceToImage = new MapMaker().makeComputingMap(nullReturningFunction);
|
||||
|
||||
RunningInstanceToNodeMetadata parser = createNodeParser(ImmutableSet.of(m1_small().build()), ImmutableSet
|
||||
RunningInstanceToNodeMetadata parser = createNodeParser(ImmutableSet.of(m1_small32().build()), ImmutableSet
|
||||
.of(provider), ImmutableMap.<String, Credentials> of(),
|
||||
EC2ComputeServiceDependenciesModule.instanceToNodeState, instanceToImage);
|
||||
|
||||
|
@ -167,7 +167,7 @@ public class RunningInstanceToNodeMetadataTest {
|
|||
assertEquals(parser.apply(server), new NodeMetadataBuilder().state(NodeState.RUNNING).privateAddresses(
|
||||
ImmutableSet.of("10.243.42.70")).publicAddresses(ImmutableSet.of("174.129.81.68")).imageId(
|
||||
"us-east-1/ami-82e4b5c7").id("us-east-1/i-0799056f").providerId("i-0799056f").hardware(
|
||||
m1_small().build()).location(provider).build());
|
||||
m1_small32().build()).location(provider).build());
|
||||
}
|
||||
|
||||
protected RunningInstance firstInstanceFromResource(String resource) {
|
||||
|
|
|
@ -69,7 +69,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
Hardware size = EC2HardwareBuilder.m1_small().build();
|
||||
Hardware size = EC2HardwareBuilder.m1_small32().build();
|
||||
String systemGeneratedKeyPairName = "systemGeneratedKeyPair";
|
||||
String generatedGroup = "group";
|
||||
Set<String> generatedGroups = ImmutableSet.of(generatedGroup);
|
||||
|
@ -124,7 +124,7 @@ public class CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptionsTest {
|
|||
// setup constants
|
||||
String region = Region.AP_SOUTHEAST_1;
|
||||
String tag = "tag";
|
||||
Hardware size = EC2HardwareBuilder.m1_small().build();
|
||||
Hardware size = EC2HardwareBuilder.m1_small32().build();
|
||||
String systemGeneratedKeyPairName = "systemGeneratedKeyPair";
|
||||
String generatedGroup = "group";
|
||||
Set<String> generatedGroups = ImmutableSet.of(generatedGroup);
|
||||
|
|
|
@ -159,8 +159,8 @@ public class ElasticStackClientLiveTest {
|
|||
@Test
|
||||
public void testGetDrive() throws Exception {
|
||||
for (String driveUUID : client.listDrives()) {
|
||||
assert !"".equals(driveUUID);
|
||||
assertNotNull(client.getDriveInfo(driveUUID));
|
||||
assert !"".equals(driveUUID) : driveUUID;
|
||||
assert client.getDriveInfo(driveUUID) != null : driveUUID;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
package org.jclouds.openstack.nova.functions;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Key;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import org.jclouds.http.HttpResponse;
|
||||
import org.jclouds.http.functions.UnwrapOnlyJsonValue;
|
||||
import org.jclouds.io.Payloads;
|
||||
import org.jclouds.json.config.GsonModule;
|
||||
import org.jclouds.openstack.nova.domain.Server;
|
||||
import org.jclouds.openstack.nova.domain.ServerStatus;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.UnknownHostException;
|
||||
import java.text.ParseException;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
@Test(groups = "unit")
|
||||
public class ParseServerFromJsonNoAddressesResponseTest {
|
||||
|
||||
@Test
|
||||
public void testApplyInputStreamDetails() throws UnknownHostException, NoSuchMethodException, ClassNotFoundException, ParseException {
|
||||
Server response = parseServer();
|
||||
|
||||
assertEquals(response.getId(), 847);
|
||||
assertEquals(response.getName(), "cmsNode-fa2");
|
||||
assertEquals(response.getImageRef(), "http://dragon004.hw.griddynamics.net:8774/v1.1/images/106");
|
||||
assertEquals(response.getFlavorRef(), "http://dragon004.hw.griddynamics.net:8774/v1.1/flavors/2");
|
||||
assertEquals(response.getStatus(), ServerStatus.BUILD);
|
||||
|
||||
assertTrue(response.getAddresses().getPublicAddresses().isEmpty());
|
||||
assertTrue(response.getAddresses().getPrivateAddresses().isEmpty());
|
||||
}
|
||||
|
||||
public static Server parseServer() throws NoSuchMethodException, ClassNotFoundException {
|
||||
|
||||
Injector i = Guice.createInjector(new GsonModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
bind(DateAdapter.class).to(Iso8601DateAdapter.class);
|
||||
}
|
||||
});
|
||||
|
||||
InputStream is = ParseServerFromJsonNoAddressesResponseTest.class.getResourceAsStream("/test_get_server_detail_no_addresses.json");
|
||||
|
||||
UnwrapOnlyJsonValue<Server> parser = i.getInstance(Key.get(new TypeLiteral<UnwrapOnlyJsonValue<Server>>() {
|
||||
}));
|
||||
|
||||
return parser.apply(new HttpResponse(200, "ok", Payloads.newInputStreamPayload(is)));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,23 +1,23 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
package org.jclouds.openstack.nova.functions;
|
||||
|
||||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
package org.jclouds.openstack.nova.functions;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
@ -45,63 +45,63 @@ import java.util.Locale;
|
|||
import java.util.SimpleTimeZone;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code ParseServerFromJsonResponse}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit")
|
||||
public class ParseServerFromJsonResponseTest {
|
||||
|
||||
@Test
|
||||
public void testApplyInputStreamDetails() throws UnknownHostException, NoSuchMethodException, ClassNotFoundException, ParseException {
|
||||
Server response = parseServer();
|
||||
|
||||
assertEquals(response.getId(), 1234);
|
||||
assertEquals(response.getName(), "sample-server");
|
||||
assertEquals(response.getImageRef(), "https://servers.api.rackspacecloud.com/v1.1/1234/images/1");
|
||||
assertEquals(response.getFlavorRef(), "http://servers.api.openstack.org/1234/flavors/1");
|
||||
assertEquals(response.getHostId(), "e4d909c290d0fb1ca068ffaddf22cbd0");
|
||||
assertEquals(response.getStatus(), ServerStatus.BUILD);
|
||||
assertEquals(response.getProgress(), new Integer(60));
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat(
|
||||
"yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
|
||||
dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
|
||||
assertEquals(response.getCreated(),
|
||||
dateFormat.parse("2010-08-10T12:00:00Z"));
|
||||
assertEquals(response.getUpdated(),
|
||||
dateFormat.parse("2010-10-10T12:00:00Z"));
|
||||
|
||||
List<Address> publicAddresses = ImmutableList.copyOf(Iterables.transform(
|
||||
ImmutableList.of("67.23.10.132", "::babe:67.23.10.132", "67.23.10.131", "::babe:4317:0A83"),
|
||||
Address.newString2AddressFunction()));
|
||||
List<Address> privateAddresses = ImmutableList.copyOf(Iterables.transform(
|
||||
ImmutableList.of("10.176.42.16", "::babe:10.176.42.16"),
|
||||
Address.newString2AddressFunction()));
|
||||
Addresses addresses1 = new Addresses(new HashSet<Address>(publicAddresses), new HashSet<Address>(privateAddresses));
|
||||
assertEquals(response.getAddresses(), addresses1);
|
||||
assertEquals(response.getMetadata(), ImmutableMap.of("Server Label", "Web Head 1", "Image Version", "2.1"));
|
||||
assertEquals(response.getAddresses(), addresses1);
|
||||
}
|
||||
|
||||
|
||||
public static Server parseServer() throws NoSuchMethodException, ClassNotFoundException {
|
||||
|
||||
Injector i = Guice.createInjector(new GsonModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
bind(DateAdapter.class).to(Iso8601DateAdapter.class);
|
||||
}
|
||||
});
|
||||
|
||||
InputStream is = ParseServerFromJsonResponseTest.class.getResourceAsStream("/test_get_server_detail.json");
|
||||
|
||||
UnwrapOnlyJsonValue<Server> parser = i.getInstance(Key.get(new TypeLiteral<UnwrapOnlyJsonValue<Server>>() {
|
||||
}));
|
||||
|
||||
return (Server) parser.apply(new HttpResponse(200, "ok", Payloads.newInputStreamPayload(is)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code ParseServerFromJsonResponse}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
@Test(groups = "unit")
|
||||
public class ParseServerFromJsonResponseTest {
|
||||
|
||||
@Test
|
||||
public void testApplyInputStreamDetails() throws UnknownHostException, NoSuchMethodException, ClassNotFoundException, ParseException {
|
||||
Server response = parseServer();
|
||||
|
||||
assertEquals(response.getId(), 1234);
|
||||
assertEquals(response.getName(), "sample-server");
|
||||
assertEquals(response.getImageRef(), "https://servers.api.rackspacecloud.com/v1.1/1234/images/1");
|
||||
assertEquals(response.getFlavorRef(), "http://servers.api.openstack.org/1234/flavors/1");
|
||||
assertEquals(response.getHostId(), "e4d909c290d0fb1ca068ffaddf22cbd0");
|
||||
assertEquals(response.getStatus(), ServerStatus.BUILD);
|
||||
assertEquals(response.getProgress(), new Integer(60));
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat(
|
||||
"yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US);
|
||||
dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT"));
|
||||
assertEquals(response.getCreated(),
|
||||
dateFormat.parse("2010-08-10T12:00:00Z"));
|
||||
assertEquals(response.getUpdated(),
|
||||
dateFormat.parse("2010-10-10T12:00:00Z"));
|
||||
|
||||
List<Address> publicAddresses = ImmutableList.copyOf(Iterables.transform(
|
||||
ImmutableList.of("67.23.10.132", "::babe:67.23.10.132", "67.23.10.131", "::babe:4317:0A83"),
|
||||
Address.newString2AddressFunction()));
|
||||
List<Address> privateAddresses = ImmutableList.copyOf(Iterables.transform(
|
||||
ImmutableList.of("10.176.42.16", "::babe:10.176.42.16"),
|
||||
Address.newString2AddressFunction()));
|
||||
Addresses addresses1 = new Addresses(new HashSet<Address>(publicAddresses), new HashSet<Address>(privateAddresses));
|
||||
assertEquals(response.getAddresses(), addresses1);
|
||||
assertEquals(response.getMetadata(), ImmutableMap.of("Server Label", "Web Head 1", "Image Version", "2.1"));
|
||||
assertEquals(response.getAddresses(), addresses1);
|
||||
}
|
||||
|
||||
|
||||
public static Server parseServer() throws NoSuchMethodException, ClassNotFoundException {
|
||||
|
||||
Injector i = Guice.createInjector(new GsonModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
super.configure();
|
||||
bind(DateAdapter.class).to(Iso8601DateAdapter.class);
|
||||
}
|
||||
});
|
||||
|
||||
InputStream is = ParseServerFromJsonResponseTest.class.getResourceAsStream("/test_get_server_detail.json");
|
||||
|
||||
UnwrapOnlyJsonValue<Server> parser = i.getInstance(Key.get(new TypeLiteral<UnwrapOnlyJsonValue<Server>>() {
|
||||
}));
|
||||
|
||||
return parser.apply(new HttpResponse(200, "ok", Payloads.newInputStreamPayload(is)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,18 +18,18 @@
|
|||
*/
|
||||
package org.jclouds.openstack.nova.live;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.io.Files;
|
||||
import org.jclouds.Constants;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.jclouds.Constants;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.io.Resources;
|
||||
|
||||
/**
|
||||
* @author Victor Galkin
|
||||
*/
|
||||
|
@ -44,8 +44,8 @@ public class PropertyHelper {
|
|||
|
||||
public static Map<String, String> setupKeyPair(Properties properties) throws FileNotFoundException, IOException {
|
||||
return ImmutableMap.<String, String>of(
|
||||
"private", Files.toString(new File(properties.getProperty("test.ssh.keyfile.private")), Charsets.UTF_8),
|
||||
"public", Files.toString(new File(properties.getProperty("test.ssh.keyfile.public")), Charsets.UTF_8));
|
||||
"private", Resources.toString(Resources.getResource(properties.getProperty("test.ssh.keyfile.private")), Charsets.UTF_8),
|
||||
"public", Resources.toString(Resources.getResource(properties.getProperty("test.ssh.keyfile.public")), Charsets.UTF_8));
|
||||
}
|
||||
|
||||
public static Properties setupProperties(Class<?> clazz) throws IOException {
|
||||
|
|
|
@ -129,7 +129,7 @@ public class NovaComputeServiceLiveTest extends ComputeBase {
|
|||
.family(OsFamily.UBUNTU).description("ffoo").build()));
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = JSchException.class, expectedExceptionsMessageRegExp = "Auth fail", timeOut = 60000)
|
||||
@Test(expectedExceptions = JSchException.class, expectedExceptionsMessageRegExp = "Auth fail", timeOut = 120000)
|
||||
void testScriptExecutionWithWrongCredentials() throws Throwable, RunScriptOnNodesException, URISyntaxException, InterruptedException {
|
||||
NodeMetadata node = getDefaultNodeImmediately(group);
|
||||
String address = awaitForPublicAddressAssigned(node.getId());
|
||||
|
@ -144,7 +144,7 @@ public class NovaComputeServiceLiveTest extends ComputeBase {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(timeOut = 60000)
|
||||
@Test(timeOut = 120000)
|
||||
public void testScriptExecutionAfterBootWithBasicTemplate() throws InterruptedException, RunNodesException, RunScriptOnNodesException, URISyntaxException, IOException {
|
||||
|
||||
NodeMetadata node = getDefaultNodeImmediately(group);
|
||||
|
@ -159,7 +159,8 @@ public class NovaComputeServiceLiveTest extends ComputeBase {
|
|||
//TODO runJavaInstallationScriptWithCreds(group, os, new Credentials("root", keyPair.get("private")));
|
||||
//TODO no response? if os is null (ZYPPER)
|
||||
|
||||
checkNodes(Sets.<NodeMetadata>newHashSet(node), group);
|
||||
node = computeService.getNodeMetadata(node.getId());
|
||||
checkNodes(Sets.newHashSet(node), group);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Credentials good = node.getCredentials();
|
||||
|
@ -242,7 +243,7 @@ public class NovaComputeServiceLiveTest extends ComputeBase {
|
|||
return templateBuilder.build();
|
||||
}
|
||||
|
||||
@Test(timeOut = 60000)
|
||||
@Test(timeOut = 120000)
|
||||
public void testGetNodeMetadata() throws Exception {
|
||||
Set<NodeMetadata> nodes = Sets.newHashSet(getDefaultNodeImmediately(group));
|
||||
awaitForPublicAddressAssigned(nodes.iterator().next().getId());
|
||||
|
@ -391,8 +392,9 @@ public class NovaComputeServiceLiveTest extends ComputeBase {
|
|||
assertEquals(provider.getParent(), null);
|
||||
}
|
||||
|
||||
@Test(timeOut = 60000)
|
||||
@Test(timeOut = 60000, enabled = false)
|
||||
public void testListHardwareProfiles() throws Exception {
|
||||
//TODO: failing, OpenStack returns a hardware with 0 CPU cores
|
||||
for (Hardware hardware : computeService.listHardwareProfiles()) {
|
||||
assert hardware.getProviderId() != null;
|
||||
assert getCores(hardware) > 0;
|
||||
|
|
|
@ -56,8 +56,9 @@ public class ServiceActionsLiveTest extends ComputeBase {
|
|||
//testGetNodeMetadata();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Test(enabled = false)
|
||||
public void testSuspendResume() throws Exception {
|
||||
//TODO: failing, suspend is not supported by the nova provider yet
|
||||
getDefaultNodeImmediately(group);
|
||||
computeService.suspendNodesMatching(inGroup(group));
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@ import com.google.common.collect.ImmutableMap;
|
|||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Module;
|
||||
import org.jclouds.domain.Credentials;
|
||||
import org.jclouds.http.handlers.BackoffLimitedRetryHandler;
|
||||
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
|
||||
import org.jclouds.net.IPSocket;
|
||||
import org.jclouds.openstack.nova.NovaClient;
|
||||
|
@ -32,12 +34,16 @@ import org.jclouds.predicates.RetryablePredicate;
|
|||
import org.jclouds.predicates.SocketOpen;
|
||||
import org.jclouds.rest.RestContextFactory;
|
||||
import org.jclouds.ssh.SshClient;
|
||||
import org.jclouds.ssh.SshException;
|
||||
import org.jclouds.ssh.jsch.JschSshClient;
|
||||
import org.jclouds.ssh.jsch.config.JschSshClientModule;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.jclouds.openstack.nova.live.PropertyHelper.*;
|
||||
|
@ -84,7 +90,7 @@ public class ClientBase {
|
|||
return createDefaultServer(defaultName);
|
||||
}
|
||||
|
||||
private Server createDefaultServer(String serverName) {
|
||||
protected Server createDefaultServer(String serverName) {
|
||||
String imageRef = client.getImage(testImageId).getURI().toASCIIString();
|
||||
String flavorRef = client.getFlavor(1).getURI().toASCIIString();
|
||||
|
||||
|
|
|
@ -1,382 +1,388 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.openstack.nova.live.novaclient;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import org.jclouds.domain.Credentials;
|
||||
import org.jclouds.http.HttpResponseException;
|
||||
import org.jclouds.io.Payload;
|
||||
import org.jclouds.net.IPSocket;
|
||||
import org.jclouds.openstack.nova.domain.*;
|
||||
import org.jclouds.openstack.nova.options.RebuildServerOptions;
|
||||
import org.jclouds.ssh.SshClient;
|
||||
import org.jclouds.util.Strings2;
|
||||
import org.testng.annotations.AfterTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jclouds.openstack.nova.options.ListOptions.Builder.withDetails;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code NovaClient}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
// disabled [Web Hosting #129069
|
||||
@Test(groups = "live", sequential = true)
|
||||
public class NovaClientLiveTest extends ClientBase {
|
||||
|
||||
|
||||
@Test
|
||||
public void testListServers() throws Exception {
|
||||
Set<Server> response = client.listServers();
|
||||
assert null != response;
|
||||
long initialContainerCount = response.size();
|
||||
assertTrue(initialContainerCount >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListServersDetail() throws Exception {
|
||||
Set<Server> response = client.listServers(withDetails());
|
||||
assert null != response;
|
||||
long initialContainerCount = response.size();
|
||||
assertTrue(initialContainerCount >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListImages() throws Exception {
|
||||
Set<Image> response = client.listImages();
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 1);
|
||||
for (Image image : response) {
|
||||
assertTrue(image.getId() >= 0);
|
||||
assert null != image.getName() : image;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListImagesDetail() throws Exception {
|
||||
Set<Image> response = client.listImages(withDetails());
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 0);
|
||||
for (Image image : response) {
|
||||
assertTrue(image.getId() >= 1);
|
||||
assert null != image.getName() : image;
|
||||
assert null != image.getStatus() : image;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetImagesDetail() throws Exception {
|
||||
Set<Image> response = client.listImages(withDetails());
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 0);
|
||||
for (Image image : response) {
|
||||
try {
|
||||
Image newDetails = client.getImage(image.getId());
|
||||
assertEquals(image, newDetails);
|
||||
} catch (HttpResponseException e) {// Ticket #9867
|
||||
if (e.getResponse().getStatusCode() != 400)
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetImageDetailsNotFound() throws Exception {
|
||||
assert client.getImage(12312987) == null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServerDetailsNotFound() throws Exception {
|
||||
assert client.getServer(12312987) == null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServersDetail() throws Exception {
|
||||
Set<Server> response = client.listServers(withDetails());
|
||||
assert null != response;
|
||||
assertTrue(response.size() >= 0);
|
||||
for (Server server : response) {
|
||||
Server newDetails = client.getServer(server.getId());
|
||||
System.out.println("====");
|
||||
|
||||
System.out.println(server);
|
||||
System.out.println(newDetails);
|
||||
System.out.println("====");
|
||||
}
|
||||
for (Server server : response) {
|
||||
Server newDetails = client.getServer(server.getId());
|
||||
assertEquals(server, newDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListFlavors() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors();
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 1);
|
||||
for (Flavor flavor : response) {
|
||||
assertTrue(flavor.getId() >= 0);
|
||||
assert null != flavor.getName() : flavor;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListFlavorsDetail() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors(withDetails());
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 0);
|
||||
for (Flavor flavor : response) {
|
||||
assertTrue(flavor.getId() >= 1);
|
||||
assert null != flavor.getName() : flavor;
|
||||
assert null != flavor.getDisk() : flavor;
|
||||
assert null != flavor.getRam() : flavor;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetFlavorsDetail() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors(withDetails());
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 0);
|
||||
for (Flavor flavor : response) {
|
||||
Flavor newDetails = client.getFlavor(flavor.getId());
|
||||
assertEquals(flavor, newDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetFlavorDetailsNotFound() throws Exception {
|
||||
assert client.getFlavor(12312987) == null;
|
||||
}
|
||||
|
||||
|
||||
@Test(enabled = true)
|
||||
public void testCreateServer() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
assertNotNull(server.getAdminPass());
|
||||
assertEquals(server.getStatus(), ServerStatus.BUILD);
|
||||
int serverId = server.getId();
|
||||
@SuppressWarnings("unused")
|
||||
String adminPass = server.getAdminPass();
|
||||
blockUntilServerActive(serverId);
|
||||
blockUntilPublicAddress(serverId);
|
||||
client.getServer(serverId).getAddresses().getPublicAddresses().iterator().next().getAddress();
|
||||
}
|
||||
|
||||
private void blockUntilPublicAddress(int serverId) throws InterruptedException {
|
||||
while (client.getServer(serverId).getAddresses().getPublicAddresses().isEmpty()) {
|
||||
System.out.println("Awaiting public address");
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilServerActive(int serverId) throws InterruptedException {
|
||||
Server currentDetails;
|
||||
for (currentDetails = client.getServer(serverId); currentDetails.getStatus() != ServerStatus.ACTIVE; currentDetails = client
|
||||
.getServer(serverId)) {
|
||||
System.out.printf("blocking on status active%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilServerVerifyResize(int serverId) throws InterruptedException {
|
||||
Server currentDetails;
|
||||
for (currentDetails = client.getServer(serverId); currentDetails.getStatus() != ServerStatus.VERIFY_RESIZE; currentDetails = client
|
||||
.getServer(serverId)) {
|
||||
System.out.printf("blocking on status verify resize%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilImageActive(int createdImageId) throws InterruptedException {
|
||||
Image currentDetails;
|
||||
for (currentDetails = client.getImage(createdImageId); currentDetails.getStatus() != ImageStatus.ACTIVE; currentDetails = client
|
||||
.getImage(createdImageId)) {
|
||||
System.out.printf("blocking on status active%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 300000)
|
||||
public void testServerDetails() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
assertNotNull(server.getHostId(), "Host id: ");
|
||||
assertEquals(server.getStatus(), ServerStatus.ACTIVE);
|
||||
assertNotNull(server.getAddresses());
|
||||
// check metadata
|
||||
assertEquals(server.getMetadata(), metadata);
|
||||
assertTrue(server.getImageRef().endsWith(String.valueOf(testImageId)));
|
||||
// listAddresses tests..
|
||||
assertEquals(client.getAddresses(server.getId()), server.getAddresses());
|
||||
assertEquals(server.getAddresses().getPublicAddresses().size(), 1);
|
||||
assertEquals(client.listPublicAddresses(server.getId()), server.getAddresses().getPublicAddresses());
|
||||
assertEquals(server.getAddresses().getPrivateAddresses().size(), 1);
|
||||
assertEquals(client.listPrivateAddresses(server.getId()), server.getAddresses().getPrivateAddresses());
|
||||
assertPassword(server, server.getAdminPass());
|
||||
assertTrue(server.getFlavorRef().endsWith("1"));
|
||||
assert server.getProgress() >= 0 : "newDetails.getProgress()" + server.getProgress();
|
||||
}
|
||||
|
||||
|
||||
private void assertPassword(Server server, String pass) throws IOException {
|
||||
IPSocket socket = new IPSocket(Iterables.get(server.getAddresses().getPublicAddresses(), 0).getAddress(), 22);
|
||||
//socketTester.apply(socket);
|
||||
|
||||
SshClient client = sshFactory.create(socket, new Credentials("root", keyPair.get("private")));
|
||||
try {
|
||||
client.connect();
|
||||
Payload etcPasswd = client.get("/etc/jclouds.txt");
|
||||
String etcPasswdContents = Strings2.toStringAndClose(etcPasswd.getInput());
|
||||
assertEquals("rackspace", etcPasswdContents.trim());
|
||||
} finally {
|
||||
if (client != null)
|
||||
client.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 5 * 60 * 1000)
|
||||
public void testRenameServer() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
String oldName = server.getName();
|
||||
client.renameServer(serverId, oldName + "new");
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(oldName + "new", client.getServer(serverId).getName());
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 5 * 60 * 1000)
|
||||
public void testChangePassword() throws Exception {
|
||||
int serverId = getDefaultServerImmediately().getId();
|
||||
blockUntilServerActive(serverId);
|
||||
client.changeAdminPass(serverId, "elmo");
|
||||
assertPassword(client.getServer(serverId), "elmo");
|
||||
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 600 * 1000)
|
||||
public void testCreateImage() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
Image image = getDefaultImageImmediately(server);
|
||||
blockUntilImageActive(image.getId());
|
||||
assertEquals("hoofie", image.getName());
|
||||
assertEquals(image.getServerRef(), "");
|
||||
}
|
||||
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 60 * 1000)
|
||||
public void testRebuildServer() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
Image image = getDefaultImageImmediately(server);
|
||||
client.rebuildServer(server.getId(), new RebuildServerOptions().withImage(String.valueOf(image.getId())));
|
||||
blockUntilServerActive(server.getId());
|
||||
// issue Web Hosting #119580 createdImageId comes back incorrect after rebuild
|
||||
assertEquals(image.getURI(), client.getServer(server.getId()).getImageRef());
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 60 * 1000)
|
||||
public void testRebootHard() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
client.rebootServer(server.getId(), RebootType.HARD);
|
||||
blockUntilServerActive(server.getId());
|
||||
//TODO check
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 60 * 1000)
|
||||
public void testRebootSoft() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
client.rebootServer(server.getId(), RebootType.SOFT);
|
||||
blockUntilServerActive(server.getId());
|
||||
//TODO check
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 60000, dependsOnMethods = "testRebootSoft")
|
||||
public void testRevertResize() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.resizeServer(serverId, 2);
|
||||
blockUntilServerVerifyResize(serverId);
|
||||
client.revertResizeServer(serverId);
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(1, client.getServer(serverId).getFlavorRef());
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 10 * 60 * 1000)
|
||||
public void testConfirmResize() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.resizeServer(serverId, 2);
|
||||
blockUntilServerVerifyResize(serverId);
|
||||
client.confirmResizeServer(serverId);
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(2, client.getServer(serverId).getFlavorRef());
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 60000)
|
||||
void deleteServer2() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.deleteServer(serverId);
|
||||
waitServerDeleted(serverId);
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 60000)
|
||||
void testDeleteImage() throws Exception {
|
||||
Image image = getDefaultImageImmediately(getDefaultServerImmediately());
|
||||
client.deleteImage(image.getId());
|
||||
assert client.getImage(image.getId()) == null;
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 60000)
|
||||
void deleteServer1() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.deleteServer(serverId);
|
||||
waitServerDeleted(serverId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAllCreatedServers() {
|
||||
for (Server server : client.listServers()) {
|
||||
if (server.getName().startsWith(serverPrefix)) {
|
||||
client.deleteServer(server.getId());
|
||||
System.out.println("Deleted server: " + server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@AfterTest
|
||||
void deleteServersOnEnd() {
|
||||
testDeleteAllCreatedServers();
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
package org.jclouds.openstack.nova.live.novaclient;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import org.jclouds.domain.Credentials;
|
||||
import org.jclouds.http.HttpResponseException;
|
||||
import org.jclouds.io.Payload;
|
||||
import org.jclouds.net.IPSocket;
|
||||
import org.jclouds.openstack.nova.domain.*;
|
||||
import org.jclouds.openstack.nova.options.RebuildServerOptions;
|
||||
import org.jclouds.ssh.SshClient;
|
||||
import org.jclouds.util.Strings2;
|
||||
import org.testng.annotations.AfterTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.jclouds.openstack.nova.options.ListOptions.Builder.withDetails;
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* Tests behavior of {@code NovaClient}
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
// disabled [Web Hosting #129069
|
||||
@Test(groups = "live", sequential = true)
|
||||
public class NovaClientLiveTest extends ClientBase {
|
||||
|
||||
|
||||
@Test
|
||||
public void testListServers() throws Exception {
|
||||
Set<Server> response = client.listServers();
|
||||
assert null != response;
|
||||
long initialContainerCount = response.size();
|
||||
assertTrue(initialContainerCount >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListServersDetail() throws Exception {
|
||||
Set<Server> response = client.listServers(withDetails());
|
||||
assert null != response;
|
||||
long initialContainerCount = response.size();
|
||||
assertTrue(initialContainerCount >= 0);
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
public void testListImages() throws Exception {
|
||||
//TODO: failing, image name should not be null (issue in the OpenStack)
|
||||
Set<Image> response = client.listImages();
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 1);
|
||||
for (Image image : response) {
|
||||
assertTrue(image.getId() >= 0);
|
||||
assert null != image.getName() : image;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
public void testListImagesDetail() throws Exception {
|
||||
//TODO: failing, image name should not be null (issue in the OpenStack)
|
||||
Set<Image> response = client.listImages(withDetails());
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 0);
|
||||
for (Image image : response) {
|
||||
assertTrue(image.getId() >= 1);
|
||||
assert null != image.getName() : image;
|
||||
assert null != image.getStatus() : image;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetImagesDetail() throws Exception {
|
||||
Set<Image> response = client.listImages(withDetails());
|
||||
assert null != response;
|
||||
long imageCount = response.size();
|
||||
assertTrue(imageCount >= 0);
|
||||
for (Image image : response) {
|
||||
try {
|
||||
Image newDetails = client.getImage(image.getId());
|
||||
assertEquals(image, newDetails);
|
||||
} catch (HttpResponseException e) {// Ticket #9867
|
||||
if (e.getResponse().getStatusCode() != 400)
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetImageDetailsNotFound() throws Exception {
|
||||
assert client.getImage(12312987) == null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServerDetailsNotFound() throws Exception {
|
||||
assert client.getServer(12312987) == null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServersDetail() throws Exception {
|
||||
Set<Server> response = client.listServers(withDetails());
|
||||
assert null != response;
|
||||
assertTrue(response.size() >= 0);
|
||||
for (Server server : response) {
|
||||
Server newDetails = client.getServer(server.getId());
|
||||
System.out.println("====");
|
||||
|
||||
System.out.println(server);
|
||||
System.out.println(newDetails);
|
||||
System.out.println("====");
|
||||
}
|
||||
for (Server server : response) {
|
||||
Server newDetails = client.getServer(server.getId());
|
||||
assertEquals(server, newDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListFlavors() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors();
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 1);
|
||||
for (Flavor flavor : response) {
|
||||
assertTrue(flavor.getId() >= 0);
|
||||
assert null != flavor.getName() : flavor;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListFlavorsDetail() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors(withDetails());
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 0);
|
||||
for (Flavor flavor : response) {
|
||||
assertTrue(flavor.getId() >= 1);
|
||||
assert null != flavor.getName() : flavor;
|
||||
assert null != flavor.getDisk() : flavor;
|
||||
assert null != flavor.getRam() : flavor;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetFlavorsDetail() throws Exception {
|
||||
Set<Flavor> response = client.listFlavors(withDetails());
|
||||
assert null != response;
|
||||
long flavorCount = response.size();
|
||||
assertTrue(flavorCount >= 0);
|
||||
for (Flavor flavor : response) {
|
||||
Flavor newDetails = client.getFlavor(flavor.getId());
|
||||
assertEquals(flavor, newDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetFlavorDetailsNotFound() throws Exception {
|
||||
assert client.getFlavor(12312987) == null;
|
||||
}
|
||||
|
||||
|
||||
@Test(enabled = true)
|
||||
public void testCreateServer() throws Exception {
|
||||
Server server = createDefaultServer(serverPrefix + "for_create");
|
||||
assertNotNull(server.getAdminPass());
|
||||
int serverId = server.getId();
|
||||
@SuppressWarnings("unused")
|
||||
String adminPass = server.getAdminPass();
|
||||
blockUntilServerActive(serverId);
|
||||
blockUntilPublicAddress(serverId);
|
||||
client.getServer(serverId).getAddresses().getPublicAddresses().iterator().next().getAddress();
|
||||
}
|
||||
|
||||
private void blockUntilPublicAddress(int serverId) throws InterruptedException {
|
||||
while (client.getServer(serverId).getAddresses().getPublicAddresses().isEmpty()) {
|
||||
System.out.println("Awaiting public address");
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilServerActive(int serverId) throws InterruptedException {
|
||||
Server currentDetails;
|
||||
for (currentDetails = client.getServer(serverId); currentDetails.getStatus() != ServerStatus.ACTIVE; currentDetails = client
|
||||
.getServer(serverId)) {
|
||||
System.out.printf("blocking on status active%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilServerVerifyResize(int serverId) throws InterruptedException {
|
||||
Server currentDetails;
|
||||
for (currentDetails = client.getServer(serverId); currentDetails.getStatus() != ServerStatus.VERIFY_RESIZE; currentDetails = client
|
||||
.getServer(serverId)) {
|
||||
System.out.printf("blocking on status verify resize%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
private void blockUntilImageActive(int createdImageId) throws InterruptedException {
|
||||
Image currentDetails;
|
||||
for (currentDetails = client.getImage(createdImageId); currentDetails.getStatus() != ImageStatus.ACTIVE; currentDetails = client
|
||||
.getImage(createdImageId)) {
|
||||
System.out.printf("blocking on status active%n%s%n", currentDetails);
|
||||
Thread.sleep(5 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 300000)
|
||||
public void testServerDetails() throws Exception {
|
||||
//TODO: failing, /v1.1/servers/{server id}/ips URL is not available (issue in the OpenStack)
|
||||
Server server = getDefaultServerImmediately();
|
||||
assertNotNull(server.getHostId(), "Host id: ");
|
||||
assertNotNull(server.getAddresses());
|
||||
// check metadata
|
||||
assertEquals(server.getMetadata(), metadata);
|
||||
assertTrue(server.getImageRef().endsWith(String.valueOf(testImageId)));
|
||||
// listAddresses tests..
|
||||
assertEquals(client.getAddresses(server.getId()), server.getAddresses());
|
||||
assertEquals(server.getAddresses().getPublicAddresses().size(), 1);
|
||||
assertEquals(client.listPublicAddresses(server.getId()), server.getAddresses().getPublicAddresses());
|
||||
assertEquals(server.getAddresses().getPrivateAddresses().size(), 1);
|
||||
assertEquals(client.listPrivateAddresses(server.getId()), server.getAddresses().getPrivateAddresses());
|
||||
assertPassword(server, server.getAdminPass());
|
||||
assertTrue(server.getFlavorRef().endsWith("1"));
|
||||
assert server.getProgress() >= 0 : "newDetails.getProgress()" + server.getProgress();
|
||||
}
|
||||
|
||||
private void assertPassword(Server server, String pass) throws IOException {
|
||||
IPSocket socket = new IPSocket(Iterables.get(server.getAddresses().getPublicAddresses(), 0).getAddress(), 22);
|
||||
//socketTester.apply(socket);
|
||||
|
||||
SshClient client = sshFactory.create(socket, new Credentials("root", keyPair.get("private")));
|
||||
try {
|
||||
client.connect();
|
||||
Payload etcPasswd = client.get("/etc/jclouds.txt");
|
||||
String etcPasswdContents = Strings2.toStringAndClose(etcPasswd.getInput());
|
||||
assertEquals("rackspace", etcPasswdContents.trim());
|
||||
} finally {
|
||||
if (client != null)
|
||||
client.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 5 * 60 * 1000)
|
||||
public void testRenameServer() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
String oldName = server.getName();
|
||||
client.renameServer(serverId, oldName + "new");
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(oldName + "new", client.getServer(serverId).getName());
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 5 * 60 * 1000)
|
||||
public void testChangePassword() throws Exception {
|
||||
//TODO: failing, fix acceptPassword method logic, however password is not changed by OpenStack
|
||||
int serverId = getDefaultServerImmediately().getId();
|
||||
blockUntilServerActive(serverId);
|
||||
blockUntilPublicAddress(serverId);
|
||||
client.changeAdminPass(serverId, "elmo");
|
||||
//TODO: wait until SSH is available
|
||||
assertPassword(client.getServer(serverId), "elmo");
|
||||
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 10 * 600 * 1000)
|
||||
public void testCreateImage() throws Exception {
|
||||
//TODO: failing, create image from instance returns incorrect JSON
|
||||
Server server = getDefaultServerImmediately();
|
||||
Image image = getDefaultImageImmediately(server);
|
||||
blockUntilImageActive(image.getId());
|
||||
assertEquals("hoofie", image.getName());
|
||||
assertEquals(image.getServerRef(), "");
|
||||
}
|
||||
|
||||
|
||||
@Test(enabled = false, timeOut = 10 * 60 * 1000)
|
||||
public void testRebuildServer() throws Exception {
|
||||
//TODO: failing, create image from instance returns incorrect JSON
|
||||
Server server = getDefaultServerImmediately();
|
||||
Image image = getDefaultImageImmediately(server);
|
||||
client.rebuildServer(server.getId(), new RebuildServerOptions().withImage(String.valueOf(image.getId())));
|
||||
blockUntilServerActive(server.getId());
|
||||
// issue Web Hosting #119580 createdImageId comes back incorrect after rebuild
|
||||
assertEquals(image.getURI(), client.getServer(server.getId()).getImageRef());
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 60 * 1000)
|
||||
public void testRebootHard() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
client.rebootServer(server.getId(), RebootType.HARD);
|
||||
blockUntilServerActive(server.getId());
|
||||
//TODO check
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 10 * 60 * 1000)
|
||||
public void testRebootSoft() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
client.rebootServer(server.getId(), RebootType.SOFT);
|
||||
blockUntilServerActive(server.getId());
|
||||
//TODO check
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 60000, dependsOnMethods = "testRebootSoft")
|
||||
public void testRevertResize() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.resizeServer(serverId, 2);
|
||||
blockUntilServerVerifyResize(serverId);
|
||||
client.revertResizeServer(serverId);
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(1, client.getServer(serverId).getFlavorRef());
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 10 * 60 * 1000)
|
||||
public void testConfirmResize() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.resizeServer(serverId, 2);
|
||||
blockUntilServerVerifyResize(serverId);
|
||||
client.confirmResizeServer(serverId);
|
||||
blockUntilServerActive(serverId);
|
||||
assertEquals(2, client.getServer(serverId).getFlavorRef());
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 60000)
|
||||
void deleteServer2() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.deleteServer(serverId);
|
||||
waitServerDeleted(serverId);
|
||||
}
|
||||
|
||||
@Test(enabled = false, timeOut = 60000)
|
||||
void testDeleteImage() throws Exception {
|
||||
//TODO: failing, create image from instance returns incorrect JSON
|
||||
Image image = getDefaultImageImmediately(getDefaultServerImmediately());
|
||||
client.deleteImage(image.getId());
|
||||
assert client.getImage(image.getId()) == null;
|
||||
}
|
||||
|
||||
@Test(enabled = true, timeOut = 60000)
|
||||
void deleteServer1() throws Exception {
|
||||
Server server = getDefaultServerImmediately();
|
||||
int serverId = server.getId();
|
||||
client.deleteServer(serverId);
|
||||
waitServerDeleted(serverId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAllCreatedServers() {
|
||||
for (Server server : client.listServers()) {
|
||||
if (server.getName().startsWith(serverPrefix)) {
|
||||
client.deleteServer(server.getId());
|
||||
System.out.println("Deleted server: " + server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@AfterTest
|
||||
void deleteServersOnEnd() {
|
||||
testDeleteAllCreatedServers();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,4 +12,7 @@
|
|||
</root>
|
||||
|
||||
<logger name="org.jclouds" level="debug" />
|
||||
<logger name="jclouds.wire" level="debug" />
|
||||
<logger name="jclouds.headers" level="debug" />
|
||||
<logger name="jclouds.ssh" level="debug" />
|
||||
</configuration>
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"server" : {
|
||||
"status":"BUILD",
|
||||
"hostId":"",
|
||||
"addresses": {
|
||||
"public":[],
|
||||
"private":[]
|
||||
},
|
||||
"imageRef":"http://dragon004.hw.griddynamics.net:8774/v1.1/images/106",
|
||||
"adminPass":"MHfyHXPoj88on737",
|
||||
"flavorRef":"http://dragon004.hw.griddynamics.net:8774/v1.1/flavors/2",
|
||||
"links" : [
|
||||
{"href":"http://dragon004.hw.griddynamics.net:8774/v1.1/servers/847","rel":"self"},
|
||||
{"href":"http://dragon004.hw.griddynamics.net:8774/v1.1/servers/847","type":"application/json","rel":"bookmark"},
|
||||
{"href":"http://dragon004.hw.griddynamics.net:8774/v1.1/servers/847","type":"application/xml","rel":"bookmark"}],
|
||||
"name" : "cmsNode-fa2",
|
||||
"id":847,
|
||||
"metadata" : {}
|
||||
}
|
||||
}
|
|
@ -39,7 +39,6 @@
|
|||
<module>ec2</module>
|
||||
<module>deltacloud</module>
|
||||
<module>walrus</module>
|
||||
<module>scality-rs2</module>
|
||||
<module>eucalyptus</module>
|
||||
<module>swift</module>
|
||||
<module>cloudfiles</module>
|
||||
|
|
0
apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressLoginAsyncClient.java
Executable file → Normal file
0
apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressLoginAsyncClient.java
Executable file → Normal file
0
apis/vcloudexpress/src/main/java/org/jclouds/vcloud/compute/config/VCloudExpressComputeServiceContextModule.java
Executable file → Normal file
0
apis/vcloudexpress/src/main/java/org/jclouds/vcloud/compute/config/VCloudExpressComputeServiceContextModule.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/TransientAsyncBlobStore.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/TransientAsyncBlobStore.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/functions/BlobName.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/functions/BlobName.java
Executable file → Normal file
3
blobstore/src/main/java/org/jclouds/blobstore/functions/ParseSystemAndUserMetadataFromHeaders.java
Executable file → Normal file
3
blobstore/src/main/java/org/jclouds/blobstore/functions/ParseSystemAndUserMetadataFromHeaders.java
Executable file → Normal file
|
@ -94,8 +94,7 @@ public class ParseSystemAndUserMetadataFromHeaders implements Function<HttpRespo
|
|||
if (lastModified == null) {
|
||||
// scaleup-storage uses the wrong case for the last modified header
|
||||
if ((lastModified = from.getFirstHeaderOrNull("Last-modified")) == null)
|
||||
throw new HttpException(HttpHeaders.LAST_MODIFIED + " header not present in response: "
|
||||
+ from.getStatusLine());
|
||||
throw new HttpException(HttpHeaders.LAST_MODIFIED + " header not present in response: " + from);
|
||||
}
|
||||
|
||||
// Walrus
|
||||
|
|
0
blobstore/src/main/java/org/jclouds/blobstore/functions/ThrowContainerNotFoundOn404.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/functions/ThrowContainerNotFoundOn404.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobMap.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobMap.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/BlobMapImpl.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/BlobMapImpl.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/InputStreamMapImpl.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/internal/InputStreamMapImpl.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/reference/BlobStoreConstants.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/reference/BlobStoreConstants.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/reference/package-info.java
Executable file → Normal file
0
blobstore/src/main/java/org/jclouds/blobstore/reference/package-info.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/functions/ParseBlobFromHeadersAndHttpContentTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/functions/ParseBlobFromHeadersAndHttpContentTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/TransientBlobIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/TransientBlobIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/TransientContainerIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/TransientContainerIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobLiveTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobLiveTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerLiveTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseInputStreamMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseInputStreamMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseMapIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseServiceIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseServiceIntegrationTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/internal/BaseBlobMapTest.java
Executable file → Normal file
0
blobstore/src/test/java/org/jclouds/blobstore/internal/BaseBlobMapTest.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/AWSClientErrorRetryHandler.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/AWSClientErrorRetryHandler.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/AWSRedirectionRetryHandler.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/AWSRedirectionRetryHandler.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContent.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/handlers/ParseAWSErrorFromXmlContent.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/reference/AWSConstants.java
Executable file → Normal file
0
common/aws/src/main/java/org/jclouds/aws/reference/AWSConstants.java
Executable file → Normal file
0
common/azure/src/main/java/org/jclouds/azure/storage/AzureStorageContextBuilder.java
Executable file → Normal file
0
common/azure/src/main/java/org/jclouds/azure/storage/AzureStorageContextBuilder.java
Executable file → Normal file
0
common/azure/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
Executable file → Normal file
0
common/azure/src/test/java/org/jclouds/azure/storage/filters/SharedKeyLiteAuthenticationTest.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/OpenStackAuthAsyncClient.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/OpenStackAuthAsyncClient.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/config/OpenStackAuthenticationModule.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/config/OpenStackAuthenticationModule.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/filters/AuthenticateRequest.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/filters/AuthenticateRequest.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/functions/ParseAuthenticationResponseFromHeaders.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/functions/ParseAuthenticationResponseFromHeaders.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/reference/package-info.java
Executable file → Normal file
0
common/openstack/src/main/java/org/jclouds/openstack/reference/package-info.java
Executable file → Normal file
0
common/openstack/src/test/java/org/jclouds/openstack/OpenStackAuthAsyncClientTest.java
Executable file → Normal file
0
common/openstack/src/test/java/org/jclouds/openstack/OpenStackAuthAsyncClientTest.java
Executable file → Normal file
0
common/trmk/src/main/java/org/jclouds/vcloud/terremark/compute/config/TerremarkVCloudComputeServiceContextModule.java
Executable file → Normal file
0
common/trmk/src/main/java/org/jclouds/vcloud/terremark/compute/config/TerremarkVCloudComputeServiceContextModule.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeaders.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/functions/ParseLoginResponseFromHeaders.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/reference/package-info.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/reference/package-info.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java
Executable file → Normal file
0
common/vcloud/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java
Executable file → Normal file
0
common/vcloud/src/test/java/org/jclouds/vcloud/VCloudLoginAsyncClientTest.java
Executable file → Normal file
0
common/vcloud/src/test/java/org/jclouds/vcloud/VCloudLoginAsyncClientTest.java
Executable file → Normal file
|
@ -416,6 +416,7 @@ public class TemplateBuilderImpl implements TemplateBuilder {
|
|||
*/
|
||||
@Override
|
||||
public TemplateBuilder fromTemplate(Template template) {
|
||||
location = template.getLocation();
|
||||
fromHardware(template.getHardware());
|
||||
fromImage(template.getImage());
|
||||
options(template.getOptions());
|
||||
|
|
0
compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java
Executable file → Normal file
0
compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java
Executable file → Normal file
0
compute/src/main/java/org/jclouds/compute/strategy/ListNodesStrategy.java
Executable file → Normal file
0
compute/src/main/java/org/jclouds/compute/strategy/ListNodesStrategy.java
Executable file → Normal file
0
compute/src/main/java/org/jclouds/compute/strategy/impl/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
Executable file → Normal file
0
compute/src/main/java/org/jclouds/compute/strategy/impl/CreateNodesWithGroupEncodedIntoNameThenAddToSet.java
Executable file → Normal file
0
compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java
Executable file → Normal file
0
compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java
Executable file → Normal file
|
@ -33,6 +33,7 @@ import java.util.concurrent.TimeoutException;
|
|||
|
||||
import org.jclouds.Constants;
|
||||
import org.jclouds.compute.config.BaseComputeServiceContextModule;
|
||||
import org.jclouds.compute.domain.Hardware;
|
||||
import org.jclouds.compute.domain.OsFamily;
|
||||
import org.jclouds.compute.domain.OsFamilyVersion64Bit;
|
||||
import org.jclouds.compute.domain.Template;
|
||||
|
@ -77,6 +78,35 @@ public abstract class BaseTemplateBuilderLiveTest {
|
|||
apiversion = System.getProperty("test." + provider + ".apiversion");
|
||||
}
|
||||
|
||||
public void testCompareSizes() throws Exception {
|
||||
Hardware defaultSize = context.getComputeService().templateBuilder().build().getHardware();
|
||||
|
||||
Hardware smallest = context.getComputeService().templateBuilder().smallest().build().getHardware();
|
||||
Hardware fastest = context.getComputeService().templateBuilder().fastest().build().getHardware();
|
||||
Hardware biggest = context.getComputeService().templateBuilder().biggest().build().getHardware();
|
||||
|
||||
System.out.printf("smallest %s%n", smallest);
|
||||
System.out.printf("fastest %s%n", fastest);
|
||||
System.out.printf("biggest %s%n", biggest);
|
||||
|
||||
assertEquals(defaultSize, smallest);
|
||||
|
||||
assert getCores(smallest) <= getCores(fastest) : String.format("%s ! <= %s", smallest, fastest);
|
||||
assert getCores(biggest) <= getCores(fastest) : String.format("%s ! <= %s", biggest, fastest);
|
||||
|
||||
assert biggest.getRam() >= fastest.getRam() : String.format("%s ! >= %s", biggest, fastest);
|
||||
assert biggest.getRam() >= smallest.getRam() : String.format("%s ! >= %s", biggest, smallest);
|
||||
|
||||
assert getCores(fastest) >= getCores(biggest) : String.format("%s ! >= %s", fastest, biggest);
|
||||
assert getCores(fastest) >= getCores(smallest) : String.format("%s ! >= %s", fastest, smallest);
|
||||
}
|
||||
|
||||
public void testFromTemplate() {
|
||||
Template defaultTemplate = context.getComputeService().templateBuilder().build();
|
||||
assertEquals(context.getComputeService().templateBuilder().fromTemplate(defaultTemplate).build().toString(),
|
||||
defaultTemplate.toString());
|
||||
}
|
||||
|
||||
protected Properties setupProperties() {
|
||||
Properties overrides = new Properties();
|
||||
overrides.setProperty(Constants.PROPERTY_TRUST_ALL_CERTS, "true");
|
||||
|
|
0
compute/src/test/java/org/jclouds/compute/options/TemplateOptionsTest.java
Executable file → Normal file
0
compute/src/test/java/org/jclouds/compute/options/TemplateOptionsTest.java
Executable file → Normal file
0
compute/src/test/java/org/jclouds/compute/predicates/OperatingSystemPredicatesTest.java
Executable file → Normal file
0
compute/src/test/java/org/jclouds/compute/predicates/OperatingSystemPredicatesTest.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/concurrent/ExceptionParsingListenableFuture.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/concurrent/ExceptionParsingListenableFuture.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/date/internal/SimpleDateFormatDateService.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/date/internal/SimpleDateFormatDateService.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/http/functions/config/SaxParserModule.java
Executable file → Normal file
0
core/src/main/java/org/jclouds/http/functions/config/SaxParserModule.java
Executable file → Normal file
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue