package org.ovirt.engine.core.vdsbroker.irsbroker; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.InputStreamRequestEntity; import org.apache.commons.httpclient.methods.PutMethod; import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.vdscommands.UploadStreamVDSCommandParameters; public class UploadStreamVDSCommand<P extends UploadStreamVDSCommandParameters> extends HttpImageTaskVDSCommand<PutMethod, P> { public UploadStreamVDSCommand(P parameters) { super(parameters); } protected void prepareMethod() { InputStreamRequestEntity inputStreamRequestEntity; if (getParameters().getSize() != null) { inputStreamRequestEntity = new InputStreamRequestEntity(getParameters().getInputStream(), getParameters().getSize()); } else { inputStreamRequestEntity = new InputStreamRequestEntity(getParameters().getInputStream()); } getMethod().setRequestEntity(inputStreamRequestEntity); getMethod().setRequestHeader("Content-Type", "application/octet-stream"); if (getParameters().getSize() != null) { getMethod().setRequestHeader("Content-Length", getParameters().getSize().toString()); } } @Override protected AsyncTaskType getCreatedTaskType() { return AsyncTaskType.downloadImageFromStream; } @Override protected PutMethod concreteCreateMethod(String url) { return new PutMethod(url); } @Override protected ConfigValues getConfigValueTimeLimitForOperation() { return ConfigValues.UploadFileMaxTimeInMinutes; } @Override protected int getSuccessCode() { return HttpStatus.SC_OK; } }