refused.putAll(refusedJobs);
refusedJobs.clear();
}
for ( IRmJob j : refused.values() ) {
RmJobState rjs = new RmJobState(j.getId(), j.getRefusalReason());
rjs.setDuccType(j.getDuccType());
rmJobState.put(j.getId(), rjs);
}
// Now handle the jobs that made it into the scheduler proper
Map<DuccId, IRmJob> jobs = jmu.getAllJobs();
Map<DuccId, HashMap<Share, Share>> shrunken = jmu.getShrunkenShares();
Map<DuccId, HashMap<Share, Share>> expanded = jmu.getExpandedShares();
// for ( DuccId id : expanded.keySet() ) {
// logger// .info(methodName, id, "Fetched these expanded shares:", expanded.get(id));
// }
/**
* Convert RM internal state into the simplified externally published state.
*/
for (IRmJob j : jobs.values()) {
if ( j.isRefused() ) {
RmJobState rjs = new RmJobState(j.getId(), j.getRefusalReason());
rjs.setDuccType(j.getDuccType());
rmJobState.put(j.getId(), rjs);
jobRemoved(j.getId());
logger.warn(methodName, j.getId(), "Refusal: ", j.getRefusalReason());
continue;
}
Map<DuccId, IResource> all_shares = new LinkedHashMap<DuccId, IResource>();
Map<DuccId, IResource> shrunken_shares = new LinkedHashMap<DuccId, IResource>();
Map<DuccId, IResource> expanded_shares = new LinkedHashMap<DuccId, IResource>();
Map<Share, Share> shares = null;
Map<Share, Share> redrive = null;
if (isPendingNonPreemptable(j) ) {
logger.info(methodName, j.getId(), "Delaying publication of expansion because it's not yet complete.");
} else {
shares = j.getAssignedShares();
if ( shares != null ) {
ArrayList<Share> sorted = new ArrayList<Share>(shares.values());
Collections.sort(sorted, new RmJob.ShareByInvestmentSorter());
for ( Share s : sorted ) {
Resource r = new Resource(s.getId(), s.getNode(), s.isPurged(), s.getShareOrder(), s.getInitializationTime());
all_shares.put(s.getId(), r);
}
redrive = sanityCheckForOrchestrator(j, shares, expanded.get(j.getId()));
}
shares = shrunken.get(j.getId());
if ( shares != null ) {
for ( Share s : shares.values() ) {
Resource r = new Resource(s.getId(), s.getNode(), s.isPurged(), s.getShareOrder(), 0);
shrunken_shares.put(s.getId(), r);
}
}
shares = expanded.get(j.getId());
if ( shares != null ) {
for ( Share s : shares.values() ) {
Resource r = new Resource(s.getId(), s.getNode(), s.isPurged(), s.getShareOrder(), 0);
expanded_shares.put(s.getId(), r);
}
}
if ( redrive != null ) {
for ( Share s : redrive.values() ) {
Resource r = new Resource(s.getId(), s.getNode(), s.isPurged(), s.getShareOrder(), 0);
expanded_shares.put(s.getId(), r);
}
}
}
RmJobState rjs = new RmJobState(j.getId(), all_shares, shrunken_shares, expanded_shares);
rjs.setDuccType(j.getDuccType());
rmJobState.put(j.getId(), rjs);
}
previousJobState = rmJobState;
}