package core.aws.task.as;
import com.amazonaws.services.autoscaling.model.Instance;
import core.aws.client.AWS;
import core.aws.env.Context;
import core.aws.resource.as.ASGroup;
import core.aws.task.linux.LinuxUploader;
import core.aws.workflow.Action;
import core.aws.workflow.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.stream.Collectors;
/**
* This task is only for troubleshooting purpose, since AS group, any permanent changes need to be baked in AMI
*
* @author neo
*/
@Action("upload-asg")
public class UploadTask extends Task<ASGroup> {
private final Logger logger = LoggerFactory.getLogger(UploadTask.class);
public UploadTask(ASGroup asGroup) {
super(asGroup);
}
@Override
public void execute(Context context) throws Exception {
logger.info("upload package dir, asGroupId={}", resource.id);
List<String> instanceIds = resource.remoteASGroup.getInstances().stream()
.map(Instance::getInstanceId)
.collect(Collectors.toList());
List<com.amazonaws.services.ec2.model.Instance> remoteInstances = AWS.ec2.describeInstances(instanceIds);
LinuxUploader uploader = new LinuxUploader(context.env, remoteInstances, context);
uploader.upload();
}
}