package core.aws.task.ec2;
import com.amazonaws.AmazonServiceException;
import core.aws.client.AWS;
import core.aws.env.Context;
import core.aws.resource.ec2.SecurityGroup;
import core.aws.util.Runner;
import core.aws.util.ToStringHelper;
import core.aws.workflow.Action;
import core.aws.workflow.Task;
import java.time.Duration;
/**
* @author neo
*/
@Action("del-sg")
public class DeleteSGTask extends Task<SecurityGroup> {
public DeleteSGTask(SecurityGroup securityGroup) {
super(securityGroup);
}
@Override
public void execute(Context context) throws Exception {
new Runner<Void>()
.maxAttempts(5)
.retryInterval(Duration.ofSeconds(60))
.retryOn(e -> e instanceof AmazonServiceException)
.run(() -> {
AWS.ec2.deleteSecurityGroup(resource.remoteSecurityGroup.getGroupId());
return null;
});
context.output("sg/" + resource.id, "deletedSGName=" + resource.remoteSecurityGroup.getGroupName());
}
@Override
public String toString() {
return new ToStringHelper(this)
.add(resource)
.add("remoteSGName", resource.remoteSecurityGroup.getGroupName())
.toString();
}
}