package org.ovirt.engine.core.vdsbroker.irsbroker; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.common.asynctasks.*; import org.ovirt.engine.core.common.vdscommands.*; public class CopyImageVDSCommand<P extends CopyImageVDSCommandParameters> extends IrsCreateCommand<P> { public CopyImageVDSCommand(P parameters) { super(parameters); } @Override protected void ExecuteIrsBrokerCommand() { /** * TODO: EINAV: - Consider 'RunAsync' parameter (pass it to IRS too). - Add 'description' parameter. - we should * provide 'volumeUUID'. - TaskID should be provided by IRS. */ setReturnValue(Guid.Empty); log.info("-- CopyImageVDSCommand::ExecuteIrsBrokerCommand: calling 'copyImage' with two new parameters: description and UUID"); log.infoFormat("-- copyImage parameters:" + "\r\n" + " sdUUID={0}" + "\r\n" + " spUUID={1}" + "\r\n" + " vmGUID={2}" + "\r\n" + " srcImageGUID={3}" + "\r\n" + " srcVolUUID={4}" + "\r\n" + " dstImageGUID={5}" + "\r\n" + " dstVolUUID={6}" + "\r\n" + " descr={7}" + "\r\n" + " ", getParameters().getStorageDomainId() .toString(), getParameters().getStoragePoolId().toString(), getParameters().getVmId() .toString(), getParameters().getImageGroupId().toString(), getParameters().getImageId() .toString(), getParameters().getdstImageGroupId().toString(), getParameters().getDstImageId() .toString(), getParameters().getImageDescription()); // NOTE: The 'uuidReturn' variable will contain the taskID and not the // created image id! uuidReturn = getIrsProxy().copyImage(getParameters().getStorageDomainId().toString(), getParameters().getStoragePoolId().toString(), getParameters().getVmId().toString(), getParameters().getImageGroupId().toString(), getParameters().getImageId().toString(), getParameters().getdstImageGroupId().toString(), getParameters().getDstImageId().toString(), getParameters().getImageDescription(), getParameters().getDstStorageDomainId().toString(), getParameters().getCopyVolumeType().getValue(), getParameters().getVolumeFormat().getValue(), getParameters().getPreallocate().getValue(), (new Boolean(getParameters().getPostZero())).toString().toLowerCase(), (new Boolean(getParameters().getForce())).toString().toLowerCase()); ProceedProxyReturnValue(); Guid taskID = new Guid(uuidReturn.mUuid); mCreatedImageId = getParameters().getDstImageId().toString(); // ReturnValue = new Guid(mCreatedImageId); getVDSReturnValue().setCreationInfo( new AsyncTaskCreationInfo(taskID, AsyncTaskType.copyImage, getParameters().getStoragePoolId())); } private static LogCompat log = LogFactoryCompat.getLog(CopyImageVDSCommand.class); }