|
|
@@ -4,6 +4,7 @@ |
|
|
|
*/ |
|
|
|
package bubble.cloud.compute.ec2; |
|
|
|
|
|
|
|
import bubble.cloud.compute.ComputeNodeSize; |
|
|
|
import bubble.cloud.compute.ComputeServiceDriverBase; |
|
|
|
import bubble.cloud.shared.aws.BubbleAwsCredentialsProvider; |
|
|
|
import bubble.model.cloud.BubbleNode; |
|
|
@@ -15,6 +16,7 @@ import com.amazonaws.services.ec2.AmazonEC2; |
|
|
|
import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; |
|
|
|
import com.amazonaws.services.ec2.model.*; |
|
|
|
import lombok.Getter; |
|
|
|
import lombok.NonNull; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.cobbzilla.util.http.HttpRequestBean; |
|
|
|
import org.cobbzilla.util.http.HttpResponseBean; |
|
|
@@ -88,10 +90,11 @@ public class AmazonEC2Driver extends ComputeServiceDriverBase { |
|
|
|
return nodes; |
|
|
|
} |
|
|
|
|
|
|
|
@Override public BubbleNode start(BubbleNode node) throws Exception { |
|
|
|
@Override public BubbleNode start(@NonNull BubbleNode node) throws Exception { |
|
|
|
final ComputeNodeSize size = config.getSize(node.getSize()); |
|
|
|
|
|
|
|
RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withImageId(config.getConfig("imageId")) |
|
|
|
.withInstanceType(config.getConfig("instanceType")) |
|
|
|
.withInstanceType(size.getInternalName()) |
|
|
|
.withMinCount(MIN_COUNT) |
|
|
|
.withMaxCount(MAX_COUNT) |
|
|
|
.withKeyName(node.getUuid()) |
|
|
@@ -135,12 +138,14 @@ public class AmazonEC2Driver extends ComputeServiceDriverBase { |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
@Override public BubbleNode cleanupStart(BubbleNode node) throws Exception { |
|
|
|
@Override public BubbleNode cleanupStart(@NonNull BubbleNode node) throws Exception { |
|
|
|
deleteEC2KeyPair(node); |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
@Override public BubbleNode stop(BubbleNode node) throws Exception { |
|
|
|
deleteEC2KeyPair(node); // just in case |
|
|
|
|
|
|
|
if (!node.hasTag(TAG_INSTANCE_ID)) { |
|
|
|
throw notFoundEx(node.id()); |
|
|
|
} |
|
|
@@ -160,7 +165,7 @@ public class AmazonEC2Driver extends ComputeServiceDriverBase { |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
@Override public BubbleNode status(BubbleNode node) throws Exception { |
|
|
|
@Override public BubbleNode status(@NonNull BubbleNode node) throws Exception { |
|
|
|
final List<BubbleNode> found = listNodes(); |
|
|
|
if (found.isEmpty()) { |
|
|
|
return node.setState(BubbleNodeState.stopped); |
|
|
@@ -178,7 +183,7 @@ public class AmazonEC2Driver extends ComputeServiceDriverBase { |
|
|
|
return node; |
|
|
|
} |
|
|
|
|
|
|
|
private void deleteEC2KeyPair(BubbleNode node) throws Exception { |
|
|
|
private void deleteEC2KeyPair(@NonNull BubbleNode node) throws Exception { |
|
|
|
if (node.hasTag(TAG_SSH_KEY_ID)) { |
|
|
|
DeleteKeyPairRequest request = new DeleteKeyPairRequest() |
|
|
|
.withKeyName(node.getUuid()); |
|
|
|