package org.ovirt.engine.core.bll.storage.pool;
import java.util.List;
import org.ovirt.engine.core.bll.Backend;
import org.ovirt.engine.core.common.businessentities.StoragePool;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VdsSpmStatus;
import org.ovirt.engine.core.common.vdscommands.DisconnectStoragePoolVDSCommandParameters;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DisconnectStoragePoolAsyncOperation extends ActivateDeactivateSingleAsyncOperation {
private static final Logger log = LoggerFactory.getLogger(DisconnectStoragePoolAsyncOperation.class);
public DisconnectStoragePoolAsyncOperation(List<VDS> vdss, StoragePool storagePool) {
super(vdss, null, storagePool);
}
@Override
public void execute(int iterationId) {
try {
if (getVdss().get(iterationId).getSpmStatus() == VdsSpmStatus.None) {
log.info("Disconnect storage pool treatment vds '{}', pool '{}'", getVdss().get(iterationId)
.getName(), getStoragePool().getName());
Backend.getInstance()
.getResourceManager()
.runVdsCommand(
VDSCommandType.DisconnectStoragePool,
new DisconnectStoragePoolVDSCommandParameters(getVdss().get(iterationId).getId(),
getStoragePool().getId(), getVdss().get(iterationId).getVdsSpmId()));
}
} catch (RuntimeException e) {
log.error("Failed to DisconnectStoragePool storagePool. Host '{}' from storage pool '{}': {}",
getVdss().get(iterationId).getName(),
getStoragePool().getName(),
e.getMessage());
log.debug("Exception", e);
}
}
}