//
boolean status = true;
int max_processes = 0;
int max_machines = 0;
ResourceClass rescl = scheduler.getResourceClass(className);
j.setResourceClass(rescl);
if ( rescl == null ) {
// ph darn, we can't continue past this point
refuse(j, "Cannot find priority class " + className + " for job");
return false;
}
// if ( logger.isDebug() ) {
// logger.debug(methodName, j.getId(),"sharesMax", si.getSharesMax());
// logger.debug(methodName, j.getId(),"getInstancesCount", si.getInstancesCount());
// logger.debug(methodName, j.getId(), "rescl.getMaxProcesses", rescl.getMaxProcesses());
// logger.debug(methodName, j.getId(), "rescl.getMaxMachines", rescl.getMaxMachines());
// }
switch ( job.getDuccType() ) {
case Service:
case Pop:
case Job:
// instance and share count are a function of the class
switch ( rescl.getPolicy() ) {
case FAIR_SHARE:
max_processes = toInt(si.getSharesMax(), DEFAULT_PROCESSES);
max_processes = Math.min(rescl.getMaxProcesses(), max_processes);
j.setMaxShares(max_processes);
j.setNInstances(-1);
break;
case FIXED_SHARE:
max_processes = toInt(si.getSharesMax(), DEFAULT_INSTANCES);
j.setMaxShares(max_processes);
j.setNInstances(max_processes);
break;
case RESERVE:
max_machines = toInt(si.getSharesMax(), DEFAULT_INSTANCES);
j.setMaxShares(max_machines);
j.setNInstances(max_machines);
break;
}
status = receiveExecutable(j, job);
logger.trace(methodName, j.getId(), "Serivce, Pop, or Job arrives, accepted:", status);
break;
case Reservation:
switch ( rescl.getPolicy() ) {
case FIXED_SHARE:
max_machines = toInt(si.getInstancesCount(), DEFAULT_INSTANCES);
break;
case RESERVE:
max_machines = toInt(si.getInstancesCount(), DEFAULT_INSTANCES);