package com.sequenceiq.cloudbreak.cloud.aws.task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.ec2.model.DescribeVolumesRequest;
import com.amazonaws.services.ec2.model.DescribeVolumesResult;
import com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext;
import com.sequenceiq.cloudbreak.cloud.model.CloudStack;
import com.sequenceiq.cloudbreak.cloud.task.PollBooleanStateTask;
@Component(EbsVolumeStatusCheckerTask.NAME)
@Scope(value = "prototype")
public class EbsVolumeStatusCheckerTask extends PollBooleanStateTask {
public static final String NAME = "ebsVolumeStatusCheckerTask";
private static final Logger LOGGER = LoggerFactory.getLogger(EbsVolumeStatusCheckerTask.class);
private AuthenticatedContext authenticatedContext;
private CloudStack stack;
private String volumeId;
private AmazonEC2Client amazonEC2Client;
public EbsVolumeStatusCheckerTask(AuthenticatedContext authenticatedContext, CloudStack stack, AmazonEC2Client amazonEC2Client, String volumeId) {
super(authenticatedContext, true);
this.volumeId = volumeId;
this.stack = stack;
this.amazonEC2Client = amazonEC2Client;
}
@Override
public Boolean call() {
LOGGER.info("Checking if AWS EBS volume '{}' is created.", volumeId);
DescribeVolumesResult describeVolumesResult = amazonEC2Client.describeVolumes(new DescribeVolumesRequest().withVolumeIds(volumeId));
return describeVolumesResult.getVolumes() != null && !describeVolumesResult.getVolumes().isEmpty()
&& "available".equals(describeVolumesResult.getVolumes().get(0).getState());
}
}