diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeStrategiesByClass.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeStrategiesByClass.java new file mode 100644 index 0000000000..1091eeac93 --- /dev/null +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeStrategiesByClass.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.ibmdev.compute.config; + +import org.jclouds.compute.config.BindComputeStrategiesByClass; +import org.jclouds.compute.strategy.AddNodeWithTagStrategy; +import org.jclouds.compute.strategy.DestroyNodeStrategy; +import org.jclouds.compute.strategy.GetNodeMetadataStrategy; +import org.jclouds.compute.strategy.ListNodesStrategy; +import org.jclouds.compute.strategy.RebootNodeStrategy; +import org.jclouds.compute.strategy.ResumeNodeStrategy; +import org.jclouds.compute.strategy.SuspendNodeStrategy; +import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudAddNodeWithTagStrategy; +import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudDestroyNodeStrategy; +import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudGetNodeMetadataStrategy; +import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudLifeCycleStrategy; +import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudListNodesStrategy; + +/** + * @author Adrian Cole + */ +public class IBMDeveloperCloudBindComputeStrategiesByClass extends BindComputeStrategiesByClass { + + @Override + protected Class defineAddNodeWithTagStrategy() { + return IBMDeveloperCloudAddNodeWithTagStrategy.class; + } + + @Override + protected Class defineDestroyNodeStrategy() { + return IBMDeveloperCloudDestroyNodeStrategy.class; + } + + @Override + protected Class defineGetNodeMetadataStrategy() { + return IBMDeveloperCloudGetNodeMetadataStrategy.class; + } + + @Override + protected Class defineListNodesStrategy() { + return IBMDeveloperCloudListNodesStrategy.class; + } + + @Override + protected Class defineRebootNodeStrategy() { + return IBMDeveloperCloudLifeCycleStrategy.class; + } + + @Override + protected Class defineStartNodeStrategy() { + return IBMDeveloperCloudLifeCycleStrategy.class; + } + + @Override + protected Class defineStopNodeStrategy() { + return IBMDeveloperCloudLifeCycleStrategy.class; + } + +} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeSuppliersByClass.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeSuppliersByClass.java new file mode 100644 index 0000000000..aa2dc2f1f4 --- /dev/null +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudBindComputeSuppliersByClass.java @@ -0,0 +1,51 @@ +/** + * + * 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.ibmdev.compute.config; + +import java.util.Set; + +import org.jclouds.compute.config.BindComputeSuppliersByClass; +import org.jclouds.compute.domain.Hardware; +import org.jclouds.compute.domain.Image; +import org.jclouds.domain.Location; +import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudHardwareSupplier; +import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudImageSupplier; +import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudLocationSupplier; + +import com.google.common.base.Supplier; +/** + * @author Adrian Cole + */ +public class IBMDeveloperCloudBindComputeSuppliersByClass extends BindComputeSuppliersByClass { + @Override + protected Class>> defineHardwareSupplier() { + return IBMDeveloperCloudHardwareSupplier.class; + } + + @Override + protected Class>> defineImageSupplier() { + return IBMDeveloperCloudImageSupplier.class; + } + + @Override + protected Class>> defineLocationSupplier() { + return IBMDeveloperCloudLocationSupplier.class; + } +} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModule.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModule.java index 9e72066cfa..4395b09273 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModule.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModule.java @@ -21,76 +21,26 @@ package org.jclouds.ibmdev.compute.config; import static org.jclouds.compute.domain.OsFamily.SUSE; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import javax.inject.Named; -import javax.inject.Singleton; - -import org.jclouds.compute.ComputeServiceContext; -import org.jclouds.compute.LoadBalancerService; import org.jclouds.compute.config.BaseComputeServiceContextModule; -import org.jclouds.compute.config.ComputeServiceTimeoutsModule; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.domain.NodeState; -import org.jclouds.compute.domain.Size; import org.jclouds.compute.domain.TemplateBuilder; -import org.jclouds.compute.internal.ComputeServiceContextImpl; -import org.jclouds.compute.strategy.AddNodeWithTagStrategy; -import org.jclouds.compute.strategy.DestroyNodeStrategy; -import org.jclouds.compute.strategy.GetNodeMetadataStrategy; -import org.jclouds.compute.strategy.ListNodesStrategy; -import org.jclouds.compute.strategy.RebootNodeStrategy; -import org.jclouds.domain.Location; -import org.jclouds.ibmdev.IBMDeveloperCloudAsyncClient; -import org.jclouds.ibmdev.IBMDeveloperCloudClient; -import org.jclouds.ibmdev.compute.functions.InstanceToNodeMetadata; -import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudAddNodeWithTagStrategy; -import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudDestroyNodeStrategy; -import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudGetNodeMetadataStrategy; -import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudListNodesStrategy; -import org.jclouds.ibmdev.compute.strategy.IBMDeveloperCloudRebootNodeStrategy; -import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudImageSupplier; -import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudLocationSupplier; -import org.jclouds.ibmdev.compute.suppliers.IBMDeveloperCloudSizeSupplier; -import org.jclouds.ibmdev.domain.Instance; -import org.jclouds.rest.RestContext; -import org.jclouds.rest.internal.RestContextImpl; +import org.jclouds.compute.internal.BaseComputeService; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableMap; import com.google.inject.Injector; -import com.google.inject.Provides; -import com.google.inject.Scopes; -import com.google.inject.TypeLiteral; -import com.google.inject.util.Providers; /** + * Configures the {@link IBMDeveloperCloudComputeServiceContext}; requires + * {@link BaseComputeService} bound. + * * @author Adrian Cole */ public class IBMDeveloperCloudComputeServiceContextModule extends BaseComputeServiceContextModule { @Override protected void configure() { - install(new ComputeServiceTimeoutsModule()); - bind(new TypeLiteral>() { - }).to(InstanceToNodeMetadata.class); - bind(new TypeLiteral() { - }).to(new TypeLiteral>() { - }).in(Scopes.SINGLETON); - bind(new TypeLiteral>() { - }).to(new TypeLiteral>() { - }).in(Scopes.SINGLETON); - bind(AddNodeWithTagStrategy.class).to(IBMDeveloperCloudAddNodeWithTagStrategy.class); - bind(ListNodesStrategy.class).to(IBMDeveloperCloudListNodesStrategy.class); - bind(GetNodeMetadataStrategy.class).to(IBMDeveloperCloudGetNodeMetadataStrategy.class); - bind(RebootNodeStrategy.class).to(IBMDeveloperCloudRebootNodeStrategy.class); - bind(DestroyNodeStrategy.class).to(IBMDeveloperCloudDestroyNodeStrategy.class); - bind(LoadBalancerService.class).toProvider(Providers. of(null)); + install(new IBMDeveloperCloudComputeServiceDependenciesModule()); + install(new IBMDeveloperCloudBindComputeStrategiesByClass()); + install(new IBMDeveloperCloudBindComputeSuppliersByClass()); + super.configure(); } /** @@ -100,48 +50,4 @@ public class IBMDeveloperCloudComputeServiceContextModule extends BaseComputeSer protected TemplateBuilder provideTemplate(Injector injector, TemplateBuilder template) { return template.osFamily(SUSE); } - - @Provides - @Singleton - @Named("CREDENTIALS") - Map credentialsMap() { - return new ConcurrentHashMap(); - } - - @VisibleForTesting - static final Map instanceStatusToNodeState = ImmutableMap - . builder().put(Instance.Status.ACTIVE, NodeState.RUNNING)// - .put(Instance.Status.STOPPED, NodeState.SUSPENDED)// - .put(Instance.Status.REMOVED, NodeState.TERMINATED)// - .put(Instance.Status.DEPROVISIONING, NodeState.PENDING)// - .put(Instance.Status.FAILED, NodeState.ERROR)// - .put(Instance.Status.NEW, NodeState.PENDING)// - .put(Instance.Status.PROVISIONING, NodeState.PENDING)// - .put(Instance.Status.REJECTED, NodeState.ERROR)// - .put(Instance.Status.RESTARTING, NodeState.PENDING)// - .put(Instance.Status.STARTING, NodeState.PENDING)// - .put(Instance.Status.STOPPING, NodeState.PENDING)// - .put(Instance.Status.DEPROVISION_PENDING, NodeState.PENDING)// - .put(Instance.Status.UNKNOWN, NodeState.UNKNOWN).build(); - - @Singleton - @Provides - Map provideServerToNodeState() { - return instanceStatusToNodeState; - } - - @Override - protected Supplier> getSourceImageSupplier(Injector injector) { - return injector.getInstance(IBMDeveloperCloudImageSupplier.class); - } - - @Override - protected Supplier> getSourceSizeSupplier(Injector injector) { - return injector.getInstance(IBMDeveloperCloudSizeSupplier.class); - } - - @Override - protected Supplier> getSourceLocationSupplier(Injector injector) { - return injector.getInstance(IBMDeveloperCloudLocationSupplier.class); - } -} \ No newline at end of file +} diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModule.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModule.java new file mode 100644 index 0000000000..31826c046d --- /dev/null +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModule.java @@ -0,0 +1,92 @@ +/** + * + * 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.ibmdev.compute.config; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.compute.ComputeServiceContext; +import org.jclouds.compute.domain.NodeMetadata; +import org.jclouds.compute.domain.NodeState; +import org.jclouds.compute.internal.ComputeServiceContextImpl; +import org.jclouds.ibmdev.IBMDeveloperCloudAsyncClient; +import org.jclouds.ibmdev.IBMDeveloperCloudClient; +import org.jclouds.ibmdev.compute.functions.InstanceToNodeMetadata; +import org.jclouds.ibmdev.domain.Instance; +import org.jclouds.rest.RestContext; +import org.jclouds.rest.internal.RestContextImpl; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Function; +import com.google.common.collect.ImmutableMap; +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.google.inject.Scopes; +import com.google.inject.TypeLiteral; + +/** + * @author Adrian Cole + */ +public class IBMDeveloperCloudComputeServiceDependenciesModule extends AbstractModule { + + @Override + protected void configure() { + bind(new TypeLiteral>() { + }).to(InstanceToNodeMetadata.class); + bind(new TypeLiteral() { + }).to(new TypeLiteral>() { + }).in(Scopes.SINGLETON); + bind(new TypeLiteral>() { + }).to(new TypeLiteral>() { + }).in(Scopes.SINGLETON); + } + + @Provides + @Singleton + @Named("CREDENTIALS") + Map credentialsMap() { + return new ConcurrentHashMap(); + } + + @VisibleForTesting + static final Map instanceStatusToNodeState = ImmutableMap + . builder().put(Instance.Status.ACTIVE, NodeState.RUNNING)// + .put(Instance.Status.STOPPED, NodeState.SUSPENDED)// + .put(Instance.Status.REMOVED, NodeState.TERMINATED)// + .put(Instance.Status.DEPROVISIONING, NodeState.PENDING)// + .put(Instance.Status.FAILED, NodeState.ERROR)// + .put(Instance.Status.NEW, NodeState.PENDING)// + .put(Instance.Status.PROVISIONING, NodeState.PENDING)// + .put(Instance.Status.REJECTED, NodeState.ERROR)// + .put(Instance.Status.RESTARTING, NodeState.PENDING)// + .put(Instance.Status.STARTING, NodeState.PENDING)// + .put(Instance.Status.STOPPING, NodeState.PENDING)// + .put(Instance.Status.DEPROVISION_PENDING, NodeState.PENDING)// + .put(Instance.Status.UNKNOWN, NodeState.UNRECOGNIZED).build(); + + @Singleton + @Provides + Map provideServerToNodeState() { + return instanceStatusToNodeState; + } +} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMImage.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMImage.java deleted file mode 100644 index 9ab634d693..0000000000 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMImage.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * - * 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.ibmdev.compute.domain; - -import org.jclouds.compute.domain.OperatingSystem; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.domain.internal.ImageImpl; -import org.jclouds.domain.Credentials; -import org.jclouds.domain.Location; - -import com.google.common.collect.ImmutableMap; - -/** - * @author Adrian Cole - */ -public class IBMImage extends ImageImpl { - - /** The serialVersionUID */ - private static final long serialVersionUID = -8520373150950058296L; - - private final org.jclouds.ibmdev.domain.Image rawImage; - - public IBMImage(org.jclouds.ibmdev.domain.Image in, Location location) { - // TODO parse correct OS - // TODO manifest fails to parse due to encoding issues in the path - // TODO get correct default credentials - // http://www-180.ibm.com/cloud/enterprise/beta/ram/community/_rlvid.jsp.faces?_rap=pc_DiscussionForum.doDiscussionTopic&_rvip=/community/discussionForum.jsp&guid={DA689AEE-783C-6FE7-6F9F-DFEE9763F806}&v=1&submission=false&fid=1068&tid=1527 - super(in.getId(), in.getName(), in.getId(), location, null, ImmutableMap. of(), - new OperatingSystem((in.getPlatform().indexOf("Red Hat") != -1) ? OsFamily.RHEL : OsFamily.SUSE, null, - null, null, in.getPlatform(), (in.getPlatform().indexOf("32") == -1)), in.getDescription(), in - .getCreatedTime().getTime() - + "", new Credentials("idcuser", null)); - - this.rawImage = in; - } - - public org.jclouds.ibmdev.domain.Image getRawImage() { - return rawImage; - } - -} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMSize.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMSize.java deleted file mode 100644 index 3d7dd64901..0000000000 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/domain/IBMSize.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * - * 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.ibmdev.compute.domain; - -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.internal.SizeImpl; -import org.jclouds.ibmdev.domain.InstanceType; - -import com.google.common.collect.ImmutableMap; - -/** - * @author Adrian Cole - */ -public class IBMSize extends SizeImpl { - - /** The serialVersionUID */ - private static final long serialVersionUID = -8520373150950058296L; - - private final IBMImage image; - - private final InstanceType instanceType; - - // until we can lookup cores by id, we are multiplying price *100 to get a positive integer we - // can compare against. - public IBMSize(IBMImage in, InstanceType instanceType) { - super(instanceType.getId(), instanceType.getLabel(), in.getId() + "/" + instanceType.getId(), in.getLocation(), - in.getRawImage().getManifest(), ImmutableMap. of(), (int) (instanceType.getPrice() - .getRate() * 100), (int) (instanceType.getPrice().getRate() * 1024d), (int) (instanceType - .getPrice().getRate() * 100d), null); - this.image = in; - this.instanceType = instanceType; - } - - public IBMImage getImage() { - return image; - } - - public InstanceType getInstanceType() { - return instanceType; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean supportsImage(Image input) { - return image.getId().equals(input.getId()); - } - - @Override - public String toString() { - return "[id=" + getId() + ", providerId=" + getProviderId() + ", name=" + getName() + ", cores=" + getCores() - + ", ram=" + getRam() + ", disk=" + getDisk() + ", supportsImage=" + image.getId() + ", rate=" - + instanceType.getPrice().getRate() + "]"; - } - -} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/functions/InstanceToNodeMetadata.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/functions/InstanceToNodeMetadata.java index 46e5d5cf03..9507b5134b 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/functions/InstanceToNodeMetadata.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/functions/InstanceToNodeMetadata.java @@ -32,16 +32,16 @@ import javax.inject.Singleton; import org.jclouds.compute.domain.Image; import org.jclouds.compute.domain.NodeMetadata; +import org.jclouds.compute.domain.NodeMetadataBuilder; import org.jclouds.compute.domain.NodeState; -import org.jclouds.compute.domain.internal.NodeMetadataImpl; import org.jclouds.domain.Credentials; import org.jclouds.domain.Location; import org.jclouds.ibmdev.domain.Instance; import org.jclouds.logging.Logger; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -51,6 +51,21 @@ import com.google.common.collect.ImmutableSet; @Singleton public class InstanceToNodeMetadata implements Function { + @VisibleForTesting + public static final Map instanceStatusToNodeState = ImmutableMap + . builder().put(Instance.Status.ACTIVE, NodeState.RUNNING)// + .put(Instance.Status.STOPPED, NodeState.SUSPENDED)// + .put(Instance.Status.REMOVED, NodeState.TERMINATED)// + .put(Instance.Status.DEPROVISIONING, NodeState.PENDING)// + .put(Instance.Status.FAILED, NodeState.ERROR)// + .put(Instance.Status.NEW, NodeState.PENDING)// + .put(Instance.Status.PROVISIONING, NodeState.PENDING)// + .put(Instance.Status.REJECTED, NodeState.ERROR)// + .put(Instance.Status.RESTARTING, NodeState.PENDING)// + .put(Instance.Status.STARTING, NodeState.PENDING)// + .put(Instance.Status.STOPPING, NodeState.PENDING)// + .put(Instance.Status.DEPROVISION_PENDING, NodeState.PENDING)// + .put(Instance.Status.UNKNOWN, NodeState.UNRECOGNIZED).build(); @Resource protected Logger logger = Logger.NULL; private final Map instanceStateToNodeState; @@ -60,8 +75,8 @@ public class InstanceToNodeMetadata implements Function @Inject InstanceToNodeMetadata(Map instanceStateToNodeState, - Supplier> images, @Named("CREDENTIALS") Map credentialsMap, - Supplier> locations) { + Supplier> images, @Named("CREDENTIALS") Map credentialsMap, + Supplier> locations) { this.instanceStateToNodeState = checkNotNull(instanceStateToNodeState, "instanceStateToNodeState"); this.images = checkNotNull(images, "images"); this.credentialsMap = checkNotNull(credentialsMap, "credentialsMap"); @@ -70,14 +85,15 @@ public class InstanceToNodeMetadata implements Function @Override public NodeMetadata apply(Instance from) { + //TODO hardware String tag = parseTagFromName(from.getName()); Set ipSet = from.getIp() != null ? ImmutableSet.of(from.getIp()) : ImmutableSet. of(); - NodeState state = instanceStateToNodeState.get(from.getStatus()); Image image = images.get().get(from.getImageId()); String key = tag != null ? credentialsMap.get(tag) : null; - return new NodeMetadataImpl(from.getId() + "", from.getName(), from.getId() + "", locations.get().get( - image.getLocation()), null, ImmutableMap. of(), tag, from.getImageId(), - image != null ? image.getOperatingSystem() : null, state, ipSet, ImmutableList. of(), - ImmutableMap. of(), new Credentials(image.getDefaultCredentials().identity, key)); + return new NodeMetadataBuilder().ids(from.getId() + "").name(from.getName()) + .location(locations.get().get(image.getLocation())).tag(tag).imageId(from.getImageId()) + .state(instanceStateToNodeState.get(from.getStatus())) + .operatingSystem(image != null ? image.getOperatingSystem() : null).publicAddresses(ipSet) + .credentials(new Credentials(image.getDefaultCredentials().identity, key)).build(); } } \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet.java index 1f8f1b5322..131c69f59e 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet.java @@ -21,7 +21,6 @@ package org.jclouds.ibmdev.compute.strategy; import static com.google.common.base.Preconditions.checkNotNull; -import java.io.IOException; import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; @@ -39,8 +38,6 @@ import org.jclouds.compute.strategy.ListNodesStrategy; import org.jclouds.compute.strategy.impl.EncodeTagIntoNameRunNodesAndAddToSetStrategy; import org.jclouds.compute.util.ComputeUtils; import org.jclouds.ibmdev.IBMDeveloperCloudClient; -import org.jclouds.io.Payload; -import org.jclouds.util.Utils; /** * @author Adrian Cole @@ -52,9 +49,9 @@ public class CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet extends EncodeTag @Inject protected CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet(AddNodeWithTagStrategy addNodeWithTagStrategy, - ListNodesStrategy listNodesStrategy, @Named("NAMING_CONVENTION") String nodeNamingConvention, - ComputeUtils utils, @Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor, - IBMDeveloperCloudClient client, @Named("CREDENTIALS") Map credentialsMap) { + ListNodesStrategy listNodesStrategy, @Named("NAMING_CONVENTION") String nodeNamingConvention, + ComputeUtils utils, @Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor, + IBMDeveloperCloudClient client, @Named("CREDENTIALS") Map credentialsMap) { super(addNodeWithTagStrategy, listNodesStrategy, nodeNamingConvention, utils, executor); this.client = checkNotNull(client, "client"); this.credentialsMap = checkNotNull(credentialsMap, "credentialsMap"); @@ -62,15 +59,9 @@ public class CreateKeyPairEncodeTagIntoNameRunNodesAndAddToSet extends EncodeTag @Override public Map> execute(String tag, int count, Template template, Set nodes, - Map badNodes) { - Payload key = template.getOptions().getPublicKey(); - if (key != null) { - String keyAsText; - try { - keyAsText = Utils.toStringAndClose(key.getInput()); - } catch (IOException e1) { - throw new RuntimeException(e1); - } + Map badNodes) { + String keyAsText = template.getOptions().getPublicKey(); + if (keyAsText != null) { template.getOptions().dontAuthorizePublicKey(); try { client.addPublicKey(tag, keyAsText); diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudAddNodeWithTagStrategy.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudAddNodeWithTagStrategy.java index 92ef5fefcc..b7ddecac5b 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudAddNodeWithTagStrategy.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudAddNodeWithTagStrategy.java @@ -29,8 +29,6 @@ import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.domain.Template; import org.jclouds.compute.strategy.AddNodeWithTagStrategy; import org.jclouds.ibmdev.IBMDeveloperCloudClient; -import org.jclouds.ibmdev.compute.domain.IBMImage; -import org.jclouds.ibmdev.compute.domain.IBMSize; import org.jclouds.ibmdev.domain.Instance; import com.google.common.base.Function; @@ -46,16 +44,15 @@ public class IBMDeveloperCloudAddNodeWithTagStrategy implements AddNodeWithTagSt @Inject protected IBMDeveloperCloudAddNodeWithTagStrategy(IBMDeveloperCloudClient client, - Function instanceToNodeMetadata) { + Function instanceToNodeMetadata) { this.client = checkNotNull(client, "client"); this.instanceToNodeMetadata = checkNotNull(instanceToNodeMetadata, "instanceToNodeMetadata"); } @Override - public NodeMetadata execute(String tag, String name, Template template) { - Instance instance = client.createInstanceInLocation(template.getLocation().getId(), name, IBMImage.class.cast( - template.getImage()).getRawImage().getId(), IBMSize.class.cast(template.getSize()).getInstanceType() - .getId(), authorizePublicKey(tag)); + public NodeMetadata addNodeWithTag(String tag, String name, Template template) { + Instance instance = client.createInstanceInLocation(template.getLocation().getId(), name, template.getImage() + .getProviderId(), template.getHardware().getProviderId(), authorizePublicKey(tag)); return instanceToNodeMetadata.apply(client.getInstance(instance.getId())); } } \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudDestroyNodeStrategy.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudDestroyNodeStrategy.java index 721e04a4c3..d58189355f 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudDestroyNodeStrategy.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudDestroyNodeStrategy.java @@ -44,8 +44,8 @@ public class IBMDeveloperCloudDestroyNodeStrategy implements DestroyNodeStrategy } @Override - public NodeMetadata execute(String id) { + public NodeMetadata destroyNode(String id) { client.deleteInstance(id); - return getNode.execute(id); + return getNode.getNode(id); } } \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudGetNodeMetadataStrategy.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudGetNodeMetadataStrategy.java index 842a79a5f6..e550be76b5 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudGetNodeMetadataStrategy.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudGetNodeMetadataStrategy.java @@ -47,7 +47,7 @@ public class IBMDeveloperCloudGetNodeMetadataStrategy implements GetNodeMetadata } @Override - public NodeMetadata execute(String id) { + public NodeMetadata getNode(String id) { Instance instance = client.getInstance(checkNotNull(id, "id")); return instance == null ? null : instanceToNodeMetadata.apply(instance); } diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudRebootNodeStrategy.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudLifeCycleStrategy.java similarity index 67% rename from sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudRebootNodeStrategy.java rename to sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudLifeCycleStrategy.java index a2d53ab83e..3660c04e5e 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudRebootNodeStrategy.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudLifeCycleStrategy.java @@ -27,26 +27,38 @@ import javax.inject.Singleton; import org.jclouds.compute.domain.NodeMetadata; import org.jclouds.compute.strategy.GetNodeMetadataStrategy; import org.jclouds.compute.strategy.RebootNodeStrategy; +import org.jclouds.compute.strategy.ResumeNodeStrategy; +import org.jclouds.compute.strategy.SuspendNodeStrategy; import org.jclouds.ibmdev.IBMDeveloperCloudClient; /** * @author Adrian Cole */ @Singleton -public class IBMDeveloperCloudRebootNodeStrategy implements RebootNodeStrategy { +public class IBMDeveloperCloudLifeCycleStrategy implements RebootNodeStrategy, SuspendNodeStrategy, ResumeNodeStrategy { private final IBMDeveloperCloudClient client; private final GetNodeMetadataStrategy getNode; @Inject - protected IBMDeveloperCloudRebootNodeStrategy(IBMDeveloperCloudClient client, GetNodeMetadataStrategy getNode) { + protected IBMDeveloperCloudLifeCycleStrategy(IBMDeveloperCloudClient client, GetNodeMetadataStrategy getNode) { this.client = checkNotNull(client, "client"); this.getNode = checkNotNull(getNode, "getNode"); } @Override - public NodeMetadata execute(String id) { + public NodeMetadata rebootNode(String id) { client.restartInstance(id); - return getNode.execute(id); + return getNode.getNode(id); + } + + @Override + public NodeMetadata suspendNode(String id) { + throw new UnsupportedOperationException("suspend not supported"); + } + + @Override + public NodeMetadata resumeNode(String id) { + throw new UnsupportedOperationException("resume not supported"); } } \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudListNodesStrategy.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudListNodesStrategy.java index ef2b3da814..5be45efa54 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudListNodesStrategy.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/strategy/IBMDeveloperCloudListNodesStrategy.java @@ -43,13 +43,13 @@ public class IBMDeveloperCloudListNodesStrategy implements ListNodesStrategy { @Inject protected IBMDeveloperCloudListNodesStrategy(IBMDeveloperCloudClient client, - Function instanceToNodeMetadata) { + Function instanceToNodeMetadata) { this.client = client; this.instanceToNodeMetadata = instanceToNodeMetadata; } @Override - public Iterable list() { + public Iterable listNodes() { return listDetailsOnNodesMatching(NodePredicates.all()); } diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudHardwareSupplier.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudHardwareSupplier.java new file mode 100644 index 0000000000..aca47417ab --- /dev/null +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudHardwareSupplier.java @@ -0,0 +1,86 @@ +/** + * + * 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.ibmdev.compute.suppliers; + +import java.util.Map; +import java.util.Set; + +import javax.annotation.Resource; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.compute.domain.Hardware; +import org.jclouds.compute.domain.HardwareBuilder; +import org.jclouds.compute.domain.Processor; +import org.jclouds.compute.domain.Volume; +import org.jclouds.compute.domain.internal.VolumeImpl; +import org.jclouds.compute.reference.ComputeServiceConstants; +import org.jclouds.domain.Location; +import org.jclouds.ibmdev.IBMDeveloperCloudClient; +import org.jclouds.ibmdev.domain.InstanceType; +import org.jclouds.logging.Logger; + +import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Sets; + +/** + * @author Adrian Cole + */ +@Singleton +public class IBMDeveloperCloudHardwareSupplier implements Supplier> { + + @Resource + @Named(ComputeServiceConstants.COMPUTE_LOGGER) + protected Logger logger = Logger.NULL; + private final IBMDeveloperCloudClient sync; + private final Supplier> locations; + + @Inject + IBMDeveloperCloudHardwareSupplier(IBMDeveloperCloudClient sync, Supplier> locations) { + this.sync = sync; + this.locations = locations; + } + + @Override + public Set get() { + final Set hardware = Sets.newHashSet(); + logger.debug(">> providing hardware"); + for (org.jclouds.ibmdev.domain.Image image : sync.listImages()) { + for (InstanceType instanceType : image.getSupportedInstanceTypes()) { + hardware.add(new HardwareBuilder() + .id(image.getId() + "/" + instanceType.getId()) + .providerId(image.getId()) + .name(instanceType.getLabel()) + .location(locations.get().get(image.getLocation())) + .uri(image.getManifest()) + .processors(ImmutableList.of(new Processor((instanceType.getPrice().getRate() * 100), 1.0))) + .ram((int) instanceType.getPrice().getRate() * 1024) + .volumes( + ImmutableList. of(new VolumeImpl((float) (instanceType.getPrice().getRate() * 100d), + true, true))).build()); + + } + } + logger.debug("<< hardware(%d)", hardware.size()); + return hardware; + } +} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudImageSupplier.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudImageSupplier.java index a2dadc255a..0f023ec402 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudImageSupplier.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudImageSupplier.java @@ -28,10 +28,13 @@ import javax.inject.Named; import javax.inject.Singleton; import org.jclouds.compute.domain.Image; +import org.jclouds.compute.domain.ImageBuilder; +import org.jclouds.compute.domain.OperatingSystemBuilder; +import org.jclouds.compute.domain.OsFamily; import org.jclouds.compute.reference.ComputeServiceConstants; +import org.jclouds.domain.Credentials; import org.jclouds.domain.Location; import org.jclouds.ibmdev.IBMDeveloperCloudClient; -import org.jclouds.ibmdev.compute.domain.IBMImage; import org.jclouds.logging.Logger; import com.google.common.base.Supplier; @@ -51,7 +54,7 @@ public class IBMDeveloperCloudImageSupplier implements Supplier> locations) { + Supplier> locations) { this.sync = sync; this.locations = locations; } @@ -61,11 +64,24 @@ public class IBMDeveloperCloudImageSupplier implements Supplier images = Sets.newHashSet(); logger.debug(">> providing images"); - for (org.jclouds.ibmdev.domain.Image image : sync.listImages()) - images.add(new IBMImage(image, locations.get().get(image.getLocation()))); + for (org.jclouds.ibmdev.domain.Image image : sync.listImages()) { + // TODO parse correct OS + // TODO manifest fails to parse due to encoding issues in the path + // TODO get correct default credentials + // http://www-180.ibm.com/cloud/enterprise/beta/ram/community/_rlvid.jsp.faces?_rap=pc_DiscussionForum.doDiscussionTopic&_rvip=/community/discussionForum.jsp&guid={DA689AEE-783C-6FE7-6F9F-DFEE9763F806}&v=1&submission=false&fid=1068&tid=1527 + images.add(new ImageBuilder() + .ids(image.getId()) + .name(image.getName()) + .location(locations.get().get(image.getLocation())) + .operatingSystem( + new OperatingSystemBuilder() + .family((image.getPlatform().indexOf("Red Hat") != -1) ? OsFamily.RHEL : OsFamily.SUSE) + .arch(image.getPlatform()).is64Bit(image.getPlatform().indexOf("32") == -1).build()) + .description(image.getDescription()).version(image.getCreatedTime().getTime() + "") + .defaultCredentials(new Credentials("idcuser", null)).build()); + } logger.debug("<< images(%d)", images.size()); return images; } - } \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudSizeSupplier.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudSizeSupplier.java deleted file mode 100644 index a0132b6541..0000000000 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/compute/suppliers/IBMDeveloperCloudSizeSupplier.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * - * 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.ibmdev.compute.suppliers; - -import java.util.Set; - -import javax.annotation.Resource; -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.Size; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.ibmdev.compute.domain.IBMImage; -import org.jclouds.ibmdev.compute.domain.IBMSize; -import org.jclouds.ibmdev.domain.InstanceType; -import org.jclouds.logging.Logger; - -import com.google.common.base.Supplier; -import com.google.common.collect.Sets; - -/** - * @author Adrian Cole - */ -@Singleton -public class IBMDeveloperCloudSizeSupplier implements Supplier> { - - @Resource - @Named(ComputeServiceConstants.COMPUTE_LOGGER) - protected Logger logger = Logger.NULL; - private final Supplier> images; - - @Inject - IBMDeveloperCloudSizeSupplier(Supplier> images) { - this.images = images; - } - - @Override - public Set get() { - final Set sizes = Sets.newHashSet(); - logger.debug(">> providing sizes"); - for (Image in : images.get()) { - IBMImage image = IBMImage.class.cast(in); - for (InstanceType instanceType : image.getRawImage().getSupportedInstanceTypes()) - sizes.add(new IBMSize(image, instanceType)); - } - logger.debug("<< sizes(%d)", sizes.size()); - return sizes; - } -} \ No newline at end of file diff --git a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/handlers/IBMDeveloperCloudErrorHandler.java b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/handlers/IBMDeveloperCloudErrorHandler.java index 076f227c2a..9a0f657723 100644 --- a/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/handlers/IBMDeveloperCloudErrorHandler.java +++ b/sandbox/ibmdev/src/main/java/org/jclouds/ibmdev/handlers/IBMDeveloperCloudErrorHandler.java @@ -56,8 +56,7 @@ public class IBMDeveloperCloudErrorHandler implements HttpErrorHandler { response.getStatusLine()); switch (response.getStatusCode()) { case 401: - exception = new AuthorizationException(command.getRequest(), message != null ? message : response - .getStatusLine()); + exception = new AuthorizationException(exception.getMessage(), exception); break; case 402: case 403: diff --git a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudAsyncClientTest.java b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudAsyncClientTest.java index 2758670dc5..e73691f7ad 100644 --- a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudAsyncClientTest.java +++ b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudAsyncClientTest.java @@ -50,7 +50,7 @@ import org.jclouds.ibmdev.xml.LocationHandler; import org.jclouds.ibmdev.xml.LocationsHandler; import org.jclouds.rest.RestClientTest; import org.jclouds.rest.RestContextFactory; -import org.jclouds.rest.RestContextFactory.ContextSpec; +import org.jclouds.rest.RestContextSpec; import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404; import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404; import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404; @@ -660,7 +660,7 @@ public class IBMDeveloperCloudAsyncClientTest extends RestClientTest createContextSpec() { + public RestContextSpec createContextSpec() { return new RestContextFactory().createContextSpec("ibmdev", "identity", "credential", new Properties()); } } diff --git a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudClientLiveTest.java b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudClientLiveTest.java index 248b20713e..8c952e9237 100644 --- a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudClientLiveTest.java +++ b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/IBMDeveloperCloudClientLiveTest.java @@ -41,14 +41,14 @@ import org.jclouds.http.handlers.BackoffLimitedRetryHandler; import org.jclouds.ibmdev.domain.Address; import org.jclouds.ibmdev.domain.Image; import org.jclouds.ibmdev.domain.Instance; +import org.jclouds.ibmdev.domain.Instance.Software; import org.jclouds.ibmdev.domain.InstanceType; import org.jclouds.ibmdev.domain.Key; import org.jclouds.ibmdev.domain.Location; import org.jclouds.ibmdev.domain.Offering; import org.jclouds.ibmdev.domain.StorageOffering; -import org.jclouds.ibmdev.domain.Volume; -import org.jclouds.ibmdev.domain.Instance.Software; import org.jclouds.ibmdev.domain.StorageOffering.Format; +import org.jclouds.ibmdev.domain.Volume; import org.jclouds.ibmdev.predicates.AddressFree; import org.jclouds.ibmdev.predicates.InstanceActive; import org.jclouds.ibmdev.predicates.InstanceActiveOrFailed; @@ -56,6 +56,7 @@ import org.jclouds.ibmdev.predicates.InstanceRemovedOrNotFound; import org.jclouds.ibmdev.predicates.VolumeUnmounted; import org.jclouds.logging.log4j.config.Log4JLoggingModule; import org.jclouds.net.IPSocket; +import org.jclouds.predicates.InetSocketAddressConnect; import org.jclouds.predicates.RetryablePredicate; import org.jclouds.rest.RestContext; import org.jclouds.rest.RestContextFactory; @@ -63,7 +64,6 @@ import org.jclouds.ssh.ExecResponse; import org.jclouds.ssh.SshClient; import org.jclouds.ssh.SshException; import org.jclouds.ssh.jsch.JschSshClient; -import org.jclouds.ssh.jsch.predicates.InetSocketAddressConnect; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeGroups; import org.testng.annotations.Test; diff --git a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudComputeServiceLiveTestDisabled.java b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudComputeServiceLiveTestDisabled.java index e1c519f1d2..f0eeefb72f 100644 --- a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudComputeServiceLiveTestDisabled.java +++ b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudComputeServiceLiveTestDisabled.java @@ -19,6 +19,7 @@ package org.jclouds.ibmdev.compute; +import static org.jclouds.compute.util.ComputeServiceUtils.getCores; import static org.testng.Assert.assertEquals; import org.jclouds.compute.BaseComputeServiceLiveTest; @@ -52,7 +53,7 @@ public class IBMDeveloperCloudComputeServiceLiveTestDisabled extends BaseCompute assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), false); assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.SUSE); assertEquals(defaultTemplate.getLocation().getId(), "1"); - assertEquals(defaultTemplate.getSize().getCores(), 2.0d); + assertEquals(getCores(defaultTemplate.getHardware()), 2.0d); } @Override diff --git a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudTemplateBuilderLiveTest.java b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudTemplateBuilderLiveTest.java new file mode 100644 index 0000000000..d4681621ce --- /dev/null +++ b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/IBMDeveloperCloudTemplateBuilderLiveTest.java @@ -0,0 +1,34 @@ +package org.jclouds.ibmdev.compute; + +import org.jclouds.compute.BaseTemplateBuilderLiveTest; +import org.jclouds.compute.OsFamilyVersion64Bit; +import org.jclouds.compute.domain.OsFamily; +import org.testng.annotations.Test; + +import com.google.common.base.Predicate; + +/** + * + * @author Adrian Cole + */ +@Test(groups = "live", testName = "ibmdev.IBMDeveloperCloudTemplateBuilderLiveTest") +public class IBMDeveloperCloudTemplateBuilderLiveTest extends BaseTemplateBuilderLiveTest { + + public IBMDeveloperCloudTemplateBuilderLiveTest() { + provider = "ibmdev"; + } + + @Override + protected Predicate defineUnsupportedOperatingSystems() { + return new Predicate() { + + @Override + public boolean apply(OsFamilyVersion64Bit input) { + return input.family != OsFamily.RHEL && // + input.family != OsFamily.SUSE && // + input.family != OsFamily.WINDOWS; + } + + }; + } +} \ No newline at end of file diff --git a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModuleTest.java b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModuleTest.java similarity index 83% rename from sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModuleTest.java rename to sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModuleTest.java index 25040c356b..78fe281317 100644 --- a/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceContextModuleTest.java +++ b/sandbox/ibmdev/src/test/java/org/jclouds/ibmdev/compute/config/IBMDeveloperCloudComputeServiceDependenciesModuleTest.java @@ -25,13 +25,13 @@ import org.testng.annotations.Test; /** * @author Adrian Cole */ -@Test(groups = "unit", testName = "ibmdev.IBMDeveloperCloudComputeServiceContextModuleTest") -public class IBMDeveloperCloudComputeServiceContextModuleTest { +@Test(groups = "unit", testName = "ibmdev.IBMDeveloperCloudComputeServiceDependenciesModuleTest") +public class IBMDeveloperCloudComputeServiceDependenciesModuleTest { public void testAllStatusCovered() { for (Instance.Status state : Instance.Status.values()) { - assert IBMDeveloperCloudComputeServiceContextModule.instanceStatusToNodeState.containsKey(state) : state; + assert IBMDeveloperCloudComputeServiceDependenciesModule.instanceStatusToNodeState.containsKey(state) : state; } }