/** * Get notified of change of job status. Executed in context of uploader thread * * @param jobId the id of the job * @param status the status of the job */ public void setUploadStatus(String jobId, Status status) { UploadJob uj = jobs.get(jobId); if (uj == null) { s_logger.warn("setUploadStatus for jobId: " + jobId + ", status=" + status + " no job found"); return; } TemplateUploader tu = uj.getTemplateUploader(); s_logger.warn("Upload Completion for jobId: " + jobId + ", status=" + status); s_logger.warn( "UploadedBytes=" + tu.getUploadedBytes() + ", error=" + tu.getUploadError() + ", pct=" + tu.getUploadPercent()); switch (status) { case ABORTED: case NOT_STARTED: case UNRECOVERABLE_ERROR: // Delete the entity only if its a volume. TO DO - find a better way of finding it a volume. if (uj.getTemplateUploader().getUploadLocalPath().indexOf("volume") > -1) { uj.cleanup(); } break; case UNKNOWN: return; case IN_PROGRESS: s_logger.info("Resuming jobId: " + jobId + ", status=" + status); tu.setResume(true); threadPool.execute(tu); break; case RECOVERABLE_ERROR: threadPool.execute(tu); break; case UPLOAD_FINISHED: tu.setUploadError("Upload success, starting install "); String result = postUpload(jobId); if (result != null) { s_logger.error("Failed post upload script: " + result); tu.setStatus(Status.UNRECOVERABLE_ERROR); tu.setUploadError("Failed post upload script: " + result); } else { s_logger.warn( "Upload completed successfully at " + new SimpleDateFormat().format(new Date())); tu.setStatus(Status.POST_UPLOAD_FINISHED); tu.setUploadError( "Upload completed successfully at " + new SimpleDateFormat().format(new Date())); } // Delete the entity only if its a volume. TO DO - find a better way of finding it a volume. if (uj.getTemplateUploader().getUploadLocalPath().indexOf("volume") > -1) { uj.cleanup(); } break; default: break; } }