Skip to content

Commit

Permalink
Wait until instance is up when creating instance tags
Browse files Browse the repository at this point in the history
  • Loading branch information
ericvergnaud committed Dec 22, 2018
1 parent 0d592c9 commit 48fd581
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions AwsClient/src/main/java/prompto/aws/EC2.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.amazonaws.services.ec2.AmazonEC2;
import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
import com.amazonaws.services.ec2.model.AllocateAddressResult;
import com.amazonaws.services.ec2.model.AmazonEC2Exception;
import com.amazonaws.services.ec2.model.AssociateAddressRequest;
import com.amazonaws.services.ec2.model.AssociateAddressResult;
import com.amazonaws.services.ec2.model.CreateImageRequest;
Expand Down Expand Up @@ -73,10 +74,23 @@ public String runInstance(String imageId, String instanceType, String keyName, S
}

public void setInstanceName(String instanceId, String name) {
CreateTagsRequest tagsRequest = new CreateTagsRequest()
.withResources(instanceId)
.withTags(new Tag("Name", name));
ec2.createTags(tagsRequest);
// this is typically called immediately after creating an instance
// however, the instance may not exist yet, see
// so try in a loop with a sleep period
for(int i=0;i<10;i++) {
try {
CreateTagsRequest tagsRequest = new CreateTagsRequest()
.withResources(instanceId)
.withTags(new Tag("Name", name));
ec2.createTags(tagsRequest);
return;
} catch(AmazonEC2Exception e) {
if("InvalidInstanceID.NotFound".equals(e.getErrorCode()))
unsafeSleep(500);
else
throw e;
}
}
}

public void startInstance(String instanceId) {
Expand Down

0 comments on commit 48fd581

Please sign in to comment.