Example #1
0
 private Set<? extends RegionRequest> getRegions(JobInstance job) {
   Set<JobRegion> ret = new HashSet<JobRegion>();
   JobRegionDao dao = new JobRegionDao();
   HashSet<VMRegion> regionSet = new HashSet<VMRegion>();
   for (EntityVersion version : job.getJobRegionVersions()) {
     JobRegion jobRegion = null;
     if (version.getObjectId() > 0 && version.getVersionId() > 0) {
       try {
         jobRegion = dao.findRevision(version.getObjectId(), version.getVersionId());
       } catch (Exception e) {
         LOG.error("Error getting region revision: " + e.toString(), e);
       }
     }
     if (jobRegion != null) {
       ret.add(fixJobRegion(jobRegion, job));
       if (regionSet.contains(jobRegion.getRegion())) {
         LOG.warn("attempt to add multiple regions to job");
       } else {
         regionSet.add(jobRegion.getRegion());
       }
     } else {
       LOG.warn(
           "Attempt to add jobRegion version that does not exist. id = "
               + version.getObjectId()
               + " : version = "
               + version.getVersionId());
       jobRegion = dao.findById(version.getObjectId());
       if (jobRegion != null) {
         ret.add(fixJobRegion(jobRegion, job));
         if (regionSet.contains(jobRegion.getRegion())) {
           LOG.warn("attempt to add multiple regions to job");
         } else {
           regionSet.add(jobRegion.getRegion());
         }
       } else {
         LOG.warn(
             "Cannot find job region with id "
                 + version.getObjectId()
                 + ". Returning current job Regions.");
         Workload workload = new WorkloadDao().findById(job.getWorkloadId());
         ret = workload.getJobConfiguration().getJobRegions();
         for (JobRegion region : ret) {
           fixJobRegion(region, job);
         }
         break;
         // throw new RuntimeException("Cannot find job region with id " + version.getObjectId());
       }
     }
   }
   ret = JobRegionDao.cleanRegions(ret);
   return ret;
 }