public UploadAnswer(String jobId, int uploadPct, String errorString, Upload.Status uploadStatus, String fileSystemPath, String installPath, long templateSize) { super(); this.jobId = jobId; this.uploadPct = uploadPct; this.errorString = errorString; this.details = errorString; this.uploadStatus = uploadStatus; this.uploadPath = fileSystemPath; this.installPath = fixPath(installPath); this.templateSize = templateSize; }
public synchronized void updateDatabase(UploadAnswer answer) { if (answer.getErrorString().startsWith("553")) { answer.setErrorString(answer.getErrorString().concat("Please check if the file name already exists.")); } resultObj.setResultString(answer.getErrorString()); resultObj.setState(answer.getUploadStatus().toString()); resultObj.setUploadPercent(answer.getUploadPct()); if (answer.getUploadStatus() == Status.UPLOAD_IN_PROGRESS) { asyncMgr.updateAsyncJobAttachment(asyncJobId, type.toString(), 1L); asyncMgr.updateAsyncJobStatus(asyncJobId, JobInfo.Status.IN_PROGRESS.ordinal(), ApiSerializerHelper.toSerializedString(resultObj)); } else if (answer.getUploadStatus() == Status.UPLOADED) { resultObj.setResultString("Success"); asyncMgr.completeAsyncJob(asyncJobId, JobInfo.Status.SUCCEEDED, 1, ApiSerializerHelper.toSerializedString(resultObj)); } else { asyncMgr.completeAsyncJob(asyncJobId, JobInfo.Status.FAILED, 2, ApiSerializerHelper.toSerializedString(resultObj)); } UploadVO updateBuilder = uploadDao.createForUpdate(); updateBuilder.setUploadPercent(answer.getUploadPct()); updateBuilder.setUploadState(answer.getUploadStatus()); updateBuilder.setLastUpdated(new Date()); updateBuilder.setErrorString(answer.getErrorString()); updateBuilder.setJobId(answer.getJobId()); uploadDao.update(getUploadId(), updateBuilder); }
uj = jobs.get(jobId); if (uj == null) { return new UploadAnswer(null, 0, "Cannot find job", com.cloud.storage.UploadVO.Status.UNKNOWN, "", "", 0); td.stopUpload(); answer = new UploadAnswer(jobId, getUploadPct(jobId), getUploadError(jobId), getUploadStatus2(jobId), getUploadLocalPath(jobId), getInstallPath(jobId), getUploadTemplateSize(jobId)); jobs.remove(jobId); break; // TODO return new UploadAnswer(jobId, getUploadPct(jobId), getUploadError(jobId), getUploadStatus2(jobId), getUploadLocalPath(jobId), getInstallPath(jobId), getUploadTemplateSize(jobId));
@Override public String handleAnswer(UploadAnswer answer) { if (s_logger.isDebugEnabled()) { s_logger.debug("handleAnswer, answer status=" + answer.getUploadStatus() + ", curr state=" + getName()); } switch (answer.getUploadStatus()) { case UPLOAD_IN_PROGRESS: getUploadListener().scheduleStatusCheck(RequestType.GET_STATUS); return Status.UPLOAD_IN_PROGRESS.toString(); case UPLOADED: getUploadListener().scheduleImmediateStatusCheck(RequestType.PURGE); getUploadListener().cancelTimeoutTask(); return Status.UPLOADED.toString(); case NOT_UPLOADED: getUploadListener().scheduleStatusCheck(RequestType.GET_STATUS); return Status.NOT_UPLOADED.toString(); case UPLOAD_ERROR: getUploadListener().cancelStatusTask(); getUploadListener().cancelTimeoutTask(); return Status.UPLOAD_ERROR.toString(); case UNKNOWN: getUploadListener().cancelStatusTask(); getUploadListener().cancelTimeoutTask(); return Status.UPLOAD_ERROR.toString(); default: return null; } }
@Override public boolean processAnswers(long agentId, long seq, Answer[] answers) { boolean processed = false; if (answers != null & answers.length > 0) { if (answers[0] instanceof UploadAnswer) { final UploadAnswer answer = (UploadAnswer)answers[0]; if (getJobId() == null) { setJobId(answer.getJobId()); } else if (!getJobId().equalsIgnoreCase(answer.getJobId())) { return false;//TODO } transition(UploadEvent.UPLOAD_ANSWER, answer); processed = true; } } return processed; }
@Override public UploadAnswer handleUploadCommand(SecondaryStorageResource resource, UploadCommand cmd) { s_logger.warn("Handling the upload " + cmd.getInstallPath() + " " + cmd.getId()); if (cmd instanceof UploadProgressCommand) { return handleUploadProgressCmd((UploadProgressCommand)cmd); } String user = null; String password = null; String jobId = uploadPublicTemplate(cmd.getId(), cmd.getUrl(), cmd.getName(), cmd.getFormat(), cmd.getAccountId(), cmd.getDescription(), cmd.getChecksum(), cmd.getInstallPath(), user, password, cmd.getTemplateSizeInBytes()); sleep(); return new UploadAnswer(jobId, getUploadPct(jobId), getUploadError(jobId), getUploadStatus2(jobId), getUploadLocalPath(jobId), getInstallPath(jobId), getUploadTemplateSize(jobId)); }
@Override public String handleAnswer(UploadAnswer answer) { switch (answer.getUploadStatus()) { case UPLOAD_IN_PROGRESS: getUploadListener().scheduleStatusCheck(RequestType.GET_STATUS); return Status.UPLOAD_IN_PROGRESS.toString(); case UPLOADED: getUploadListener().scheduleImmediateStatusCheck(RequestType.PURGE); getUploadListener().cancelTimeoutTask(); return Status.UPLOADED.toString(); case NOT_UPLOADED: getUploadListener().scheduleStatusCheck(RequestType.GET_STATUS); return Status.NOT_UPLOADED.toString(); case UPLOAD_ERROR: getUploadListener().cancelStatusTask(); getUploadListener().cancelTimeoutTask(); return Status.UPLOAD_ERROR.toString(); case UNKNOWN: getUploadListener().cancelStatusTask(); getUploadListener().cancelTimeoutTask(); return Status.UPLOAD_ERROR.toString(); default: return null; } }
public void setInstallPath(String installPath) { this.installPath = fixPath(installPath); }