private UploadAnswer handleUploadProgressCmd(UploadProgressCommand cmd) {
   String jobId = cmd.getJobId();
   UploadAnswer answer;
   UploadJob uj = null;
   if (jobId != null) uj = jobs.get(jobId);
   if (uj == null) {
     return new UploadAnswer(
         null, 0, "Cannot find job", com.cloud.storage.UploadVO.Status.UNKNOWN, "", "", 0);
   }
   TemplateUploader td = uj.getTemplateUploader();
   switch (cmd.getRequest()) {
     case GET_STATUS:
       break;
     case ABORT:
       td.stopUpload();
       sleep();
       break;
       /*case RESTART:
       td.stopUpload();
       sleep();
       threadPool.execute(td);
       break;*/
     case PURGE:
       td.stopUpload();
       answer =
           new UploadAnswer(
               jobId,
               getUploadPct(jobId),
               getUploadError(jobId),
               getUploadStatus2(jobId),
               getUploadLocalPath(jobId),
               getInstallPath(jobId),
               getUploadTemplateSize(jobId));
       jobs.remove(jobId);
       return answer;
     default:
       break; // TODO
   }
   return new UploadAnswer(
       jobId,
       getUploadPct(jobId),
       getUploadError(jobId),
       getUploadStatus2(jobId),
       getUploadLocalPath(jobId),
       getInstallPath(jobId),
       getUploadTemplateSize(jobId));
 }