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.LinuxCommandRunner; 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("exec-asg") public class RunCommandTask extends Task<ASGroup> { private final Logger logger = LoggerFactory.getLogger(RunCommandTask.class); public RunCommandTask(ASGroup asGroup) { super(asGroup); } @Override public void execute(Context context) throws Exception { logger.info("execute command, 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); LinuxCommandRunner runner = new LinuxCommandRunner(context.env, remoteInstances, context); runner.run(); } }