package org.ovirt.engine.core.vdsbroker.irsbroker;
import javax.inject.Inject;
import org.ovirt.engine.core.common.FeatureSupported;
import org.ovirt.engine.core.common.asynctasks.AsyncTaskCreationInfo;
import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
import org.ovirt.engine.core.common.vdscommands.DestroyImageVDSCommandParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StoragePoolDao;
public class DestroyImageVDSCommand<P extends DestroyImageVDSCommandParameters> extends IrsCreateCommand<P> {
@Inject
private StoragePoolDao storagePoolDao;
public DestroyImageVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeIrsBrokerCommand() {
DestroyImageVDSCommandParameters params = getParameters();
int imageListSize = params.getImageList().size();
String[] volUUID = new String[imageListSize];
int i = 0;
for (Guid tempGuid : params.getImageList()) {
volUUID[i++] = tempGuid.toString();
}
uuidReturn = deleteVolume(params.getStorageDomainId().toString(),
params.getStoragePoolId().toString(),
params.getImageGroupId().toString(),
volUUID,
String.valueOf(params.getPostZero()),
params.isDiscard(),
String.valueOf(params.getForce()));
proceedProxyReturnValue();
Guid taskID = new Guid(uuidReturn.uuid);
getVDSReturnValue()
.setCreationInfo(
new AsyncTaskCreationInfo(taskID, AsyncTaskType.deleteVolume, getParameters()
.getStoragePoolId()));
}
private OneUuidReturn deleteVolume(String storageDomainId, String storagePoolId, String imageGroupId,
String[] volUUID, String postZero, boolean discard, String force) {
if (FeatureSupported.discardAfterDeleteSupported(
storagePoolDao.get(getParameters().getStoragePoolId()).getCompatibilityVersion())) {
return getIrsProxy().deleteVolume(storageDomainId, storagePoolId, imageGroupId, volUUID, postZero, discard,
force);
}
return getIrsProxy().deleteVolume(storageDomainId, storagePoolId, imageGroupId, volUUID, postZero, force);
}
}