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.MoveImageGroupVDSCommandParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.StoragePoolDao;
import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper;
public class MoveImageGroupVDSCommand<P extends MoveImageGroupVDSCommandParameters> extends IrsCreateCommand<P> {
@Inject
private StoragePoolDao storagePoolDao;
public MoveImageGroupVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void executeIrsBrokerCommand() {
StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getDstDomainId());
uuidReturn = moveImage(getParameters().getStoragePoolId().toString(),
getParameters().getStorageDomainId().toString(),
getParameters().getDstDomainId().toString(),
getParameters().getImageGroupId().toString(),
getParameters().getVmId().toString(),
getParameters().getOp().getValue(),
String.valueOf(getParameters().getPostZero()).toLowerCase(),
getParameters().isDiscard(),
String.valueOf(getParameters().getForce()).toLowerCase());
proceedProxyReturnValue();
Guid taskID = new Guid(uuidReturn.uuid);
getVDSReturnValue().setCreationInfo(
new AsyncTaskCreationInfo(taskID, AsyncTaskType.moveImage, getParameters().getStoragePoolId()));
}
private OneUuidReturn moveImage(String storagePoolId, String storageDomainId, String dstDomainId,
String imageGroupId, String vmId, int op, String postZero, boolean discard, String force) {
if (FeatureSupported.discardAfterDeleteSupported(
storagePoolDao.get(getParameters().getStoragePoolId()).getCompatibilityVersion())) {
return getIrsProxy().moveImage(storagePoolId, storageDomainId, dstDomainId, imageGroupId, vmId, op,
postZero, discard, force);
}
return getIrsProxy().moveImage(storagePoolId, storageDomainId, dstDomainId, imageGroupId, vmId, op,
postZero, force);
}
}