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.MergeSnapshotsVDSCommandParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StoragePoolDao;
public class MergeSnapshotsVDSCommand<P extends MergeSnapshotsVDSCommandParameters> extends IrsCreateCommand<P> {
@Inject
private StoragePoolDao storagePoolDao;
public MergeSnapshotsVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeIrsBrokerCommand() {
uuidReturn = mergeSnapshots(getParameters().getStorageDomainId().toString(),
getParameters().getStoragePoolId().toString(),
getParameters().getVmId().toString(),
getParameters().getImageGroupId().toString(),
getParameters().getImageId().toString(),
getParameters().getImageId2().toString(),
String.valueOf(getParameters().getPostZero()).toLowerCase(),
getParameters().isDiscard());
proceedProxyReturnValue();
Guid taskID = new Guid(uuidReturn.uuid);
getVDSReturnValue()
.setCreationInfo(
new AsyncTaskCreationInfo(taskID, AsyncTaskType.mergeSnapshots, getParameters()
.getStoragePoolId()));
}
private OneUuidReturn mergeSnapshots(String storageDomainId, String storagePoolId, String vmId, String imageGroupId,
String ancestorId, String successoId, String postZero, boolean discard) {
if (FeatureSupported.discardAfterDeleteSupported(
storagePoolDao.get(getParameters().getStoragePoolId()).getCompatibilityVersion())) {
return getIrsProxy().mergeSnapshots(storageDomainId, storagePoolId, vmId, imageGroupId, ancestorId,
successoId, postZero, discard);
}
return getIrsProxy().mergeSnapshots(storageDomainId, storagePoolId, vmId, imageGroupId, ancestorId,
successoId, postZero);
}
}