package core.aws.task.elb;
import core.aws.client.AWS;
import core.aws.env.Context;
import core.aws.resource.elb.ELB;
import core.aws.util.Threads;
import core.aws.workflow.Action;
import core.aws.workflow.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.Duration;
/**
* @author neo
*/
@Action("del-elb")
public class DeleteELBTask extends Task<ELB> {
private final Logger logger = LoggerFactory.getLogger(DeleteELBTask.class);
public DeleteELBTask(ELB elb) {
super(elb);
}
@Override
public void execute(Context context) throws Exception {
String elbName = resource.remoteELB.getLoadBalancerName();
AWS.elb.deleteELB(elbName);
logger.info("elb deletion takes time to refresh to other system, wait first");
if (!resource.remoteELB.getSubnets().isEmpty())
Threads.sleepRoughly(Duration.ofSeconds(90)); // sleep at least 90s for ELB in VPC
else
Threads.sleepRoughly(Duration.ofSeconds(30));
context.output("elb/" + resource.id, "deletedELB=" + elbName);
}
}