/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.storagedriver;
import java.util.Calendar;
/**
* Base abstract class for driver task. Drivers should extend this class and provide implementation for abstract methods.
*/
public abstract class DriverTask {
private String taskId;
public DriverTask(String taskId) {
this.taskId = taskId;
}
public static enum TaskStatus {
QUEUED, // driver queued the request
PROVISIONING, // the request is provisioning
READY, // the request was completed
FAILED, // the request was failed
PARTIALLY_FAILED, // part of the request failed
WARNING, // there is a warning associated with the request
ABORTED, // the request was aborted
}
private TaskStatus status;
private Integer progress;
private String message;
private Calendar startTime;
private Calendar endTime;
public String getTaskId() {
return taskId;
}
public TaskStatus getStatus() {
return status;
}
public void setStatus(TaskStatus status) {
this.status = status;
}
public Integer getProgress() {
return progress;
}
public void setProgress(Integer progress) {
this.progress = progress;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Calendar getStartTime() {
return startTime;
}
public void setStartTime(Calendar startTime) {
this.startTime = startTime;
}
public Calendar getEndTime() {
return endTime;
}
public void setEndTime(Calendar endTime) {
this.endTime = endTime;
}
/**
* Abort request and return all resources to the original state.
* @param task
* @return task
*/
public abstract DriverTask abort(DriverTask task);
}