package io.cattle.platform.process.volume;
import io.cattle.platform.core.constants.VolumeConstants;
import io.cattle.platform.core.dao.GenericMapDao;
import io.cattle.platform.core.model.Backup;
import io.cattle.platform.core.model.Snapshot;
import io.cattle.platform.core.model.StoragePool;
import io.cattle.platform.core.model.Volume;
import io.cattle.platform.core.model.VolumeStoragePoolMap;
import io.cattle.platform.engine.process.ProcessInstance;
import io.cattle.platform.engine.process.ProcessState;
import io.cattle.platform.process.common.handler.AgentBasedProcessHandler;
import java.util.List;
import javax.inject.Inject;
public class VolumeRevertRestoreAgentProcessHandler extends AgentBasedProcessHandler {
@Inject
GenericMapDao mapDao;
@Override
protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) {
Volume instance = (Volume)state.getResource();
List<? extends VolumeStoragePoolMap> maps = objectManager.children(instance, VolumeStoragePoolMap.class);
StoragePool host = maps.size() > 0 ? objectManager.loadResource(StoragePool.class, maps.get(0).getStoragePoolId()) : null;
return host;
}
@Override
protected Object getDataResource(ProcessState state, ProcessInstance process) {
if (process.getName().equalsIgnoreCase(VolumeConstants.PROCESS_REVERT)) {
Snapshot snapshot = objectManager.loadResource(Snapshot.class, state.getData().get("snapshotId").toString());
return snapshot;
} else if (process.getName().equalsIgnoreCase(VolumeConstants.PROCESS_RESTORE_FROM_BACKUP)) {
Backup backup = objectManager.loadResource(Backup .class, state.getData().get("backupId").toString());
return backup;
}
throw new IllegalStateException("Unsupported process: " + process.getName());
}
}