diff --git a/README.txt b/README.txt
index cc220c25dc..8c53837911 100644
--- a/README.txt
+++ b/README.txt
@@ -29,11 +29,12 @@ data.
our current version is 1.0-beta-8
our dev version is 1.0-SNAPSHOT
-our compute api supports: aws-ec2, gogrid, cloudservers (rackspace), vcloud,
- trmk-ecloud, trmk-vcloudexpress, eucalyptus, cloudsigma,
- elasticstack, bluelock-vclouddirector, slicehost,
- elastichosts-lon-p (Peer 1), elastichosts-sat-p (Peer 1),
- elastichosts-lon-b (BlueSquare), stub (in-memory)
+our compute api supports: aws-ec2, gogrid, cloudservers (rackspace), vcloud (generic),
+ trmk-ecloud, trmk-vcloudexpress, eucalyptus (generic),
+ cloudsigma, elasticstack(generic), bluelock-vclouddirector,
+ slicehost, ecc-ec2, elastichosts-lon-p (Peer 1),
+ elastichosts-sat-p (Peer 1), elastichosts-lon-b (BlueSquare),
+ ec2 (generic), stub (in-memory)
* note * the pom dependency org.jclouds/jclouds-allcompute gives you access to
to all of these providers
diff --git a/allcompute/pom.xml b/allcompute/pom.xml
index a84113f858..1105da6b42 100644
--- a/allcompute/pom.xml
+++ b/allcompute/pom.xml
@@ -29,6 +29,11 @@
jclouds-allcompute
allcompute
+
+ org.jclouds.provider
+ ecc-ec2
+ ${project.version}
+
org.jclouds.provider
aws-ec2
diff --git a/apis/eucalyptus/pom.xml b/apis/eucalyptus/pom.xml
new file mode 100644
index 0000000000..ab03a3a43a
--- /dev/null
+++ b/apis/eucalyptus/pom.xml
@@ -0,0 +1,136 @@
+
+
+
+
+ 4.0.0
+
+ org.jclouds
+ jclouds-project
+ 1.0-SNAPSHOT
+ ../../project/pom.xml
+
+ org.jclouds.api
+ eucalyptus
+ jclouds Eucalyptus api
+ EC2 implementation based on Eucalyptus
+
+
+ http://ecc.eucalyptus.com:8773/services/Eucalyptus
+ 2010-06-15
+ ${test.eucalyptus.identity}
+ ${test.eucalyptus.credential}
+
+
+
+
+ org.jclouds.api
+ ec2
+ ${project.version}
+
+
+ org.jclouds.api
+ ec2
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-core
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-compute
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-jsch
+ ${project.version}
+ test
+
+
+ org.jclouds
+ jclouds-log4j
+ ${project.version}
+ test
+
+
+ log4j
+ log4j
+ 1.2.16
+ test
+
+
+
+
+
+ live
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration
+ integration-test
+
+ test
+
+
+
+
+ test.eucalyptus.endpoint
+ ${test.eucalyptus.endpoint}
+
+
+ test.eucalyptus.apiversion
+ ${test.eucalyptus.apiversion}
+
+
+ test.eucalyptus.identity
+ ${test.eucalyptus.identity}
+
+
+ test.eucalyptus.credential
+ ${test.eucalyptus.credential}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EucalyptusPropertiesBuilder.java b/apis/eucalyptus/src/main/java/org/jclouds/eucalyptus/EucalyptusPropertiesBuilder.java
similarity index 96%
rename from apis/ec2/src/main/java/org/jclouds/ec2/EucalyptusPropertiesBuilder.java
rename to apis/eucalyptus/src/main/java/org/jclouds/eucalyptus/EucalyptusPropertiesBuilder.java
index 9228e51810..f694b44bd3 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EucalyptusPropertiesBuilder.java
+++ b/apis/eucalyptus/src/main/java/org/jclouds/eucalyptus/EucalyptusPropertiesBuilder.java
@@ -17,15 +17,17 @@
* ====================================================================
*/
-package org.jclouds.ec2;
+package org.jclouds.eucalyptus;
import static org.jclouds.Constants.PROPERTY_ENDPOINT;
+import static org.jclouds.compute.reference.ComputeServiceConstants.PROPERTY_TIMEOUT_PORT_OPEN;
import static org.jclouds.ec2.reference.EC2Constants.PROPERTY_EC2_AMI_OWNERS;
import static org.jclouds.ec2.reference.EC2Constants.PROPERTY_EC2_CC_AMIs;
-import static org.jclouds.compute.reference.ComputeServiceConstants.PROPERTY_TIMEOUT_PORT_OPEN;
import java.util.Properties;
+import org.jclouds.ec2.EC2PropertiesBuilder;
+
/**
* Builds properties used in Eucalyptus Clients
*
diff --git a/apis/ec2/src/test/java/org/jclouds/ec2/compute/EucalyptusComputeServiceLiveTestDisabled.java b/apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusComputeServiceLiveTest.java
similarity index 80%
rename from apis/ec2/src/test/java/org/jclouds/ec2/compute/EucalyptusComputeServiceLiveTestDisabled.java
rename to apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusComputeServiceLiveTest.java
index 874b92d828..91ea635f07 100644
--- a/apis/ec2/src/test/java/org/jclouds/ec2/compute/EucalyptusComputeServiceLiveTestDisabled.java
+++ b/apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusComputeServiceLiveTest.java
@@ -17,31 +17,25 @@
* ====================================================================
*/
-package org.jclouds.ec2.compute;
+package org.jclouds.eucalyptus.compute;
import static org.jclouds.compute.util.ComputeServiceUtils.getCores;
import static org.testng.Assert.assertEquals;
import org.jclouds.compute.domain.OsFamily;
import org.jclouds.compute.domain.Template;
-import org.testng.annotations.BeforeClass;
+import org.jclouds.ec2.compute.EC2ComputeServiceLiveTest;
import org.testng.annotations.Test;
/**
- * Disabled until we have an environment with enough room to run a few nodes simultaneously.
*
* @author Adrian Cole
*/
-@Test(groups = "live", enabled = true, sequential = true)
-public class EucalyptusComputeServiceLiveTestDisabled extends EC2ComputeServiceLiveTest {
+@Test(groups = "live", sequential = true, testName = "EucalyptusComputeServiceLiveTest")
+public class EucalyptusComputeServiceLiveTest extends EC2ComputeServiceLiveTest {
- public EucalyptusComputeServiceLiveTestDisabled() {
+ public EucalyptusComputeServiceLiveTest() {
provider = "eucalyptus";
- }
-
- @BeforeClass
- @Override
- public void setServiceDefaults() {
// security groups must be <30 characters
tag = "eu";
}
diff --git a/apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusTemplateBuilderLiveTest.java b/apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusTemplateBuilderLiveTest.java
new file mode 100644
index 0000000000..2c98b25e91
--- /dev/null
+++ b/apis/eucalyptus/src/test/java/org/jclouds/eucalyptus/compute/EucalyptusTemplateBuilderLiveTest.java
@@ -0,0 +1,76 @@
+/**
+ *
+ * Copyright (C) 2010 Cloud Conscious, LLC.
+ *
+ * ====================================================================
+ * 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.eucalyptus.compute;
+
+import static org.jclouds.compute.util.ComputeServiceUtils.getCores;
+import static org.testng.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.jclouds.compute.BaseTemplateBuilderLiveTest;
+import org.jclouds.compute.domain.OsFamily;
+import org.jclouds.compute.domain.Template;
+import org.jclouds.compute.domain.os.OsFamilyVersion64Bit;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+
+/**
+ *
+ * @author Adrian Cole
+ */
+@Test(groups = "live")
+public class EucalyptusTemplateBuilderLiveTest extends BaseTemplateBuilderLiveTest {
+
+ public EucalyptusTemplateBuilderLiveTest() {
+ provider = "eucalyptus";
+ }
+
+ @Override
+ protected Predicate defineUnsupportedOperatingSystems() {
+ return new Predicate() {
+
+ @Override
+ public boolean apply(OsFamilyVersion64Bit input) {
+ return input.family == OsFamily.RHEL || //
+ (input.family == OsFamily.CENTOS && !input.version.equals("5.3") || !input.is64Bit) || //
+ input.family == OsFamily.WINDOWS || //
+ input.family == OsFamily.UBUNTU;
+
+ }
+
+ };
+ }
+
+ @Test
+ public void testDefaultTemplateBuilder() throws IOException {
+
+ Template defaultTemplate = context.getComputeService().templateBuilder().build();
+ assert (defaultTemplate.getImage().getProviderId().startsWith("emi-")) : defaultTemplate;
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "5.3");
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.CENTOS);
+ assertEquals(defaultTemplate.getImage().getUserMetadata().get("rootDeviceType"), "instance-store");
+ assertEquals(defaultTemplate.getLocation().getId(), "Eucalyptus");
+ assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
+
+ }
+
+}
diff --git a/apis/pom.xml b/apis/pom.xml
index 5de311a586..cad86ec220 100644
--- a/apis/pom.xml
+++ b/apis/pom.xml
@@ -41,5 +41,6 @@
simpledb
cloudwatch
walrus
+ eucalyptus
diff --git a/compute/src/main/clojure/org/jclouds/compute.clj b/compute/src/main/clojure/org/jclouds/compute.clj
index 735b4fe7a6..8fed275929 100644
--- a/compute/src/main/clojure/org/jclouds/compute.clj
+++ b/compute/src/main/clojure/org/jclouds/compute.clj
@@ -21,7 +21,7 @@
"A clojure binding to the jclouds ComputeService.
Current supported providers are:
- [ec2, cloudservers, trmk-ecloud, trmk-vcloudexpress, vcloud,
+ [ec2, aws-ec2, ecc-ec2, cloudservers, trmk-ecloud, trmk-vcloudexpress, vcloud,
bluelock, eucalyptus, slicehost, elastichosts-lon-p, elastichosts-sat-p,
elastichosts, elastichosts-lon-b, cloudsigma, stub]
diff --git a/core/src/main/resources/rest.properties b/core/src/main/resources/rest.properties
index 4038204bb3..21ed1ca28e 100644
--- a/core/src/main/resources/rest.properties
+++ b/core/src/main/resources/rest.properties
@@ -90,7 +90,10 @@ vcloudexpress.contextbuilder=org.jclouds.vcloud.VCloudExpressContextBuilder
vcloudexpress.propertiesbuilder=org.jclouds.vcloud.VCloudExpressPropertiesBuilder
eucalyptus.contextbuilder=org.jclouds.ec2.EC2ContextBuilder
-eucalyptus.propertiesbuilder=org.jclouds.ec2.EucalyptusPropertiesBuilder
+eucalyptus.propertiesbuilder=org.jclouds.eucalyptus.EucalyptusPropertiesBuilder
+
+ecc-ec2.contextbuilder=org.jclouds.ec2.EC2ContextBuilder
+ecc-ec2.propertiesbuilder=org.jclouds.ecc.ECCEucalyptusPropertiesBuilder
nova.contextbuilder=org.jclouds.ec2.EC2ContextBuilder
nova.propertiesbuilder=org.jclouds.ec2.NovaPropertiesBuilder
diff --git a/providers/ecc-ec2/pom.xml b/providers/ecc-ec2/pom.xml
new file mode 100644
index 0000000000..001bb07a67
--- /dev/null
+++ b/providers/ecc-ec2/pom.xml
@@ -0,0 +1,148 @@
+
+
+
+
+ 4.0.0
+
+ org.jclouds
+ jclouds-project
+ 1.0-SNAPSHOT
+ ../../project/pom.xml
+
+ org.jclouds.provider
+ ecc-ec2
+ jclouds Eucalyptus Community Cloud EC2 provider
+ Eucalyptus (EC2) implementation targeted to the Eucalyptus Community Cloud
+
+
+ http://ecc.eucalyptus.com:8773/services/Eucalyptus
+ 2010-06-15
+ ${test.ecc-ec2.identity}
+ ${test.ecc-ec2.credential}
+
+
+
+
+ org.jclouds.api
+ eucalyptus
+ ${project.version}
+
+
+ org.jclouds.api
+ ec2
+ ${project.version}
+
+
+ org.jclouds.api
+ eucalyptus
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds.api
+ ec2
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-compute
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-core
+ ${project.version}
+ test-jar
+ test
+
+
+ org.jclouds
+ jclouds-jsch
+ ${project.version}
+ test
+
+
+ org.jclouds
+ jclouds-log4j
+ ${project.version}
+ test
+
+
+ log4j
+ log4j
+ 1.2.16
+ test
+
+
+
+
+
+ live
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ integration
+ integration-test
+
+ test
+
+
+
+
+ test.ecc-ec2.endpoint
+ ${test.ecc-ec2.endpoint}
+
+
+ test.ecc-ec2.apiversion
+ ${test.ecc-ec2.apiversion}
+
+
+ test.ecc-ec2.identity
+ ${test.ecc-ec2.identity}
+
+
+ test.ecc-ec2.credential
+ ${test.ecc-ec2.credential}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/providers/ecc-ec2/src/main/java/org/jclouds/ecc/ECCEucalyptusPropertiesBuilder.java b/providers/ecc-ec2/src/main/java/org/jclouds/ecc/ECCEucalyptusPropertiesBuilder.java
new file mode 100644
index 0000000000..67c99ceedf
--- /dev/null
+++ b/providers/ecc-ec2/src/main/java/org/jclouds/ecc/ECCEucalyptusPropertiesBuilder.java
@@ -0,0 +1,45 @@
+/**
+ *
+ * Copyright (C) 2010 Cloud Conscious, LLC.
+ *
+ * ====================================================================
+ * 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.ecc;
+
+import static org.jclouds.Constants.PROPERTY_ENDPOINT;
+
+import java.util.Properties;
+
+import org.jclouds.eucalyptus.EucalyptusPropertiesBuilder;
+
+/**
+ * Builds properties used in ECCEucalyptus Clients
+ *
+ * @author Adrian Cole
+ */
+public class ECCEucalyptusPropertiesBuilder extends EucalyptusPropertiesBuilder {
+ @Override
+ protected Properties defaultProperties() {
+ Properties properties = super.defaultProperties();
+ properties.setProperty(PROPERTY_ENDPOINT, "http://173.205.188.130:8773/services/Eucalyptus");
+ return properties;
+ }
+
+ public ECCEucalyptusPropertiesBuilder(Properties properties) {
+ super(properties);
+ }
+
+}
diff --git a/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusComputeServiceLiveTest.java b/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusComputeServiceLiveTest.java
new file mode 100644
index 0000000000..6cd261e59e
--- /dev/null
+++ b/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusComputeServiceLiveTest.java
@@ -0,0 +1,63 @@
+/**
+ *
+ * Copyright (C) 2010 Cloud Conscious, LLC.
+ *
+ * ====================================================================
+ * 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.ecc.compute;
+
+import static org.jclouds.compute.util.ComputeServiceUtils.getCores;
+import static org.testng.Assert.assertEquals;
+
+import org.jclouds.compute.domain.OsFamily;
+import org.jclouds.compute.domain.Template;
+import org.jclouds.ec2.compute.EC2ComputeServiceLiveTest;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author Adrian Cole
+ */
+@Test(groups = "live", sequential = true, testName = "ECCEucalyptusComputeServiceLiveTest")
+public class ECCEucalyptusComputeServiceLiveTest extends EC2ComputeServiceLiveTest {
+
+ public ECCEucalyptusComputeServiceLiveTest() {
+ provider = "ecc-ec2";
+ // security groups must be <30 characters
+ tag = "eu";
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testExtendedOptionsAndLogin() throws Exception {
+ // euc does not support monitoring
+ }
+
+ @Override
+ @Test(enabled = false)
+ public void testExtendedOptionsNoKeyPair() throws Exception {
+ // euc does not support multiple security groups
+ }
+
+ @Override
+ protected void assertDefaultWorks() {
+ Template defaultTemplate = client.templateBuilder().build();
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.CENTOS);
+ assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
+ }
+
+}
diff --git a/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusTemplateBuilderLiveTest.java b/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusTemplateBuilderLiveTest.java
new file mode 100644
index 0000000000..8937b77e5d
--- /dev/null
+++ b/providers/ecc-ec2/src/test/java/org/jclouds/ecc/compute/ECCEucalyptusTemplateBuilderLiveTest.java
@@ -0,0 +1,76 @@
+/**
+ *
+ * Copyright (C) 2010 Cloud Conscious, LLC.
+ *
+ * ====================================================================
+ * 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.ecc.compute;
+
+import static org.jclouds.compute.util.ComputeServiceUtils.getCores;
+import static org.testng.Assert.assertEquals;
+
+import java.io.IOException;
+
+import org.jclouds.compute.BaseTemplateBuilderLiveTest;
+import org.jclouds.compute.domain.OsFamily;
+import org.jclouds.compute.domain.Template;
+import org.jclouds.compute.domain.os.OsFamilyVersion64Bit;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+
+/**
+ *
+ * @author Adrian Cole
+ */
+@Test(groups = "live")
+public class ECCEucalyptusTemplateBuilderLiveTest extends BaseTemplateBuilderLiveTest {
+
+ public ECCEucalyptusTemplateBuilderLiveTest() {
+ provider = "ecc-ec2";
+ }
+
+ @Override
+ protected Predicate defineUnsupportedOperatingSystems() {
+ return new Predicate() {
+
+ @Override
+ public boolean apply(OsFamilyVersion64Bit input) {
+ return input.family == OsFamily.RHEL || //
+ (input.family == OsFamily.CENTOS && !input.version.equals("5.3") || !input.is64Bit) || //
+ input.family == OsFamily.WINDOWS || //
+ input.family == OsFamily.UBUNTU;
+
+ }
+
+ };
+ }
+
+ @Test
+ public void testDefaultTemplateBuilder() throws IOException {
+
+ Template defaultTemplate = context.getComputeService().templateBuilder().build();
+ assert (defaultTemplate.getImage().getProviderId().startsWith("emi-")) : defaultTemplate;
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "5.3");
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
+ assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.CENTOS);
+ assertEquals(defaultTemplate.getImage().getUserMetadata().get("rootDeviceType"), "instance-store");
+ assertEquals(defaultTemplate.getLocation().getId(), "Eucalyptus");
+ assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
+
+ }
+
+}
diff --git a/providers/pom.xml b/providers/pom.xml
index c8d7244771..a8edaa89ee 100644
--- a/providers/pom.xml
+++ b/providers/pom.xml
@@ -43,5 +43,6 @@
googlestorage
scaleup-storage
ecc-s3
+ ecc-ec2