Ignore:
Timestamp:
06/03/14 15:12:11 (11 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/schedframe/scheduling/policy/local/LocalManagementSystem.java

    r1357 r1362  
    11package schedframe.scheduling.policy.local; 
    2  
    3 import dcworms.schedframe.scheduling.ExecTask; 
    4 import dcworms.schedframe.scheduling.Executable; 
    5 import eduni.simjava.Sim_event; 
    6 import eduni.simjava.Sim_system; 
    7 import gridsim.dcworms.DCWormsTags; 
    8 import gridsim.dcworms.filter.ExecTaskFilter; 
    92 
    103import java.util.ArrayList; 
    114import java.util.HashMap; 
    125import java.util.Iterator; 
     6import java.util.LinkedList; 
    137import java.util.List; 
    148import java.util.Map; 
    15  
    16 import org.apache.commons.lang.ArrayUtils; 
     9import java.util.Set; 
     10 
    1711import org.apache.commons.logging.Log; 
    1812import org.apache.commons.logging.LogFactory; 
     
    3832import schedframe.resources.units.ResourceUnitName; 
    3933import schedframe.resources.units.StandardResourceUnitName; 
     34import schedframe.scheduling.ExecutionHistoryItem; 
    4035import schedframe.scheduling.ResourceHistoryItem; 
    4136import schedframe.scheduling.Scheduler; 
    4237import schedframe.scheduling.TaskList; 
    4338import schedframe.scheduling.TaskListImpl; 
    44 import schedframe.scheduling.UsedResourcesList; 
    4539import schedframe.scheduling.WorkloadUnitHandler; 
    4640import schedframe.scheduling.manager.resources.LocalResourceManager; 
     
    6458import simulator.stats.GSSAccumulator; 
    6559import simulator.utils.DoubleMath; 
     60import dcworms.schedframe.scheduling.ExecTask; 
     61import dcworms.schedframe.scheduling.Executable; 
     62import eduni.simjava.Sim_event; 
     63import eduni.simjava.Sim_system; 
     64import gridsim.dcworms.DCWormsTags; 
     65import gridsim.dcworms.filter.ExecTaskFilter; 
    6666 
    6767public class LocalManagementSystem extends AbstractManagementSystem { 
     
    127127                                finalizeExecutable(execTask); 
    128128                                sendFinishedWorkloadUnit(execTask); 
    129                                 log.debug(execTask.getJobId() + "_" + execTask.getId() + " finished execution on " + new DateTime()); 
    130                                 log.info(DCWormsConstants.USAGE_MEASURE_NAME + ": " + calculateTotalLoad()); 
    131129                                if (pluginSupportsEvent(tag)) { 
    132130                                        SchedulingEvent event = new TaskFinishedEvent(execTask.getJobId(), execTask.getId()); 
     
    164162                        break; 
    165163                         
     164                case DCWormsTags.TASK_PAUSE:{ 
     165                        String[] ids = (String[]) ev.get_data(); 
     166                        execTask = jobRegistry.getTask(ids[0], ids[1]); 
     167                        taskPause(execTask); 
     168                        if (pluginSupportsEvent(tag)) { 
     169                                SchedulingEvent event = new SchedulingEvent(SchedulingEventType.TASK_PAUSED); 
     170                                SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 
     171                                                queues, getJobRegistry(), getResourceManager(), moduleList); 
     172                                executeSchedulingPlan(decision); 
     173                        } 
     174                } 
     175                break; 
     176                 
     177                case DCWormsTags.TASK_RESUME:{ 
     178                        String[] ids = (String[]) ev.get_data(); 
     179                        execTask = jobRegistry.getTask(ids[0], ids[1]); 
     180                        taskResume(execTask, execTask.getAllocatedResources().getLast().getResourceUnits()); 
     181                        if (pluginSupportsEvent(tag)) { 
     182                                SchedulingEvent event = new StartTaskExecutionEvent(ids[0], ids[1]); 
     183                                SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 
     184                                                queues, getJobRegistry(), getResourceManager(), moduleList); 
     185                                executeSchedulingPlan(decision); 
     186                        } 
     187                } 
     188                break; 
     189                         
     190                case DCWormsTags.TASK_MOVE:{ 
     191                        Object[] data = (Object[]) ev.get_data(); 
     192                        execTask = jobRegistry.getTask((String)data[0], (String)data[1]); 
     193                        taskMove(execTask, (Map<ResourceUnitName, ResourceUnit>)data[2]); 
     194                        if (pluginSupportsEvent(tag)) { 
     195                                SchedulingEvent event = new StartTaskExecutionEvent((String)data[0], (String)data[1]); 
     196                                SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 
     197                                                queues, getJobRegistry(), getResourceManager(), moduleList); 
     198                                executeSchedulingPlan(decision); 
     199                        } 
     200                } 
     201                break; 
    166202                         
    167203                case DCWormsTags.TASK_EXECUTION_CHANGED: 
    168204                        execTask = (ExecTask) ev.get_data(); 
    169                         updateTaskExecution(execTask, SchedulingEventType.RESOURCE_STATE_CHANGED); 
     205                        updateTaskExecutionPhase(execTask, SchedulingEventType.RESOURCE_STATE_CHANGED); 
    170206                        break; 
    171                          
     207 
    172208                case DCWormsTags.UPDATE_PROCESSING: 
    173                         updateProcessingTimes(ev); 
     209                        updateProcessingTimes(); 
    174210                        break; 
    175211                         
     
    177213                        if (pluginSupportsEvent(tag)) { 
    178214                                SchedulingEvent event = new SchedulingEvent(SchedulingEventType.POWER_LIMIT_EXCEEDED); 
    179                                 schedulingPlugin.schedule(event, 
     215                                SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 
    180216                                                queues,  getJobRegistry(), getResourceManager(), moduleList); 
     217                                executeSchedulingPlan(decision); 
    181218                        } 
    182219                        break; 
     
    184221        } 
    185222 
     223 
     224        public void taskPause(ExecTask execTask) { 
     225                if (execTask == null) { 
     226                        return; 
     227                } else { 
     228                        try { 
     229                                execTask.setStatus(DCWormsTags.PAUSED); 
     230                                 
     231                                Executable exec = (Executable) execTask; 
     232                                Map<ResourceUnitName, ResourceUnit> lastUsed = exec.getAllocatedResources().getLast().getResourceUnits(); 
     233                                getAllocationManager().freeResources(lastUsed); 
     234                                 
     235                                saveExecutionHistory(exec, exec.getCompletionPercentage(), exec.getEstimatedDuration()); 
     236                                 
     237                                ExecTaskFilter filter = new ExecTaskFilter(exec.getUniqueId(), -1); 
     238                                scheduler.sim_cancel(filter, null); 
     239                                 
     240                                PEUnit peUnit = (PEUnit)lastUsed.get(StandardResourceUnitName.PE); 
     241                                updateComputingResources(peUnit, EnergyEventType.TASK_FINISHED, exec); 
     242                        } catch (Exception e) { 
     243                                // TODO Auto-generated catch block 
     244                                e.printStackTrace(); 
     245                        } 
     246                }                
     247        } 
     248         
     249        public void taskResume(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> resources) { 
     250                if (execTask == null) { 
     251                        return; 
     252                } else if (execTask.getStatus() == DCWormsTags.PAUSED) { 
     253                        try { 
     254                                execTask.setStatus(DCWormsTags.RESUMED); 
     255                                Executable exec = (Executable) execTask; 
     256 
     257                                boolean status = allocateResources(exec, resources); 
     258                                if(status == false){ 
     259                                        TaskList newTasks = new TaskListImpl(); 
     260                                        newTasks.add(exec); 
     261                                        schedulingPlugin.placeTasksInQueues(newTasks, queues, getResourceManager(), moduleList); 
     262                                        exec.setStatus(DCWormsTags.READY); 
     263                                } else { 
     264                                        runTask(execTask); 
     265                                         
     266                                        PEUnit peUnit = (PEUnit)resources.get(StandardResourceUnitName.PE); 
     267                                        updateComputingResources(peUnit, EnergyEventType.TASK_STARTED, exec); 
     268                                } 
     269 
     270                        } catch (Exception e) { 
     271                                // TODO Auto-generated catch block 
     272                                e.printStackTrace(); 
     273                        } 
     274                }                        
     275        } 
     276         
     277        public void taskMove(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> map) { 
     278                taskPause(execTask); 
     279                taskResume(execTask, map); 
     280        } 
     281         
    186282        public void notifyReturnedWorkloadUnit(WorkloadUnit wu) { 
    187283                if (pluginSupportsEvent(DCWormsTags.TASK_EXECUTION_FINISHED)) { 
     
    229325 
    230326                Executable exec = (Executable)task; 
    231                 boolean allocationStatus = getAllocationManager().allocateResources(choosenResources); 
     327                boolean allocationStatus = allocateResources(exec, choosenResources); 
    232328                if(allocationStatus == false){ 
    233329                        log.info("Task " + task.getJobId() + "_" + task.getId() + " requires more resources than is available at this moment."); 
     
    239335                log.debug(task.getJobId() + "_" + task.getId() + " starts executing on " + new DateTime()); 
    240336 
    241                 //if (phaseDuration < 0.0) 
    242                 //      return; 
    243  
    244                 //exec.setEstimatedDuration(exec.getEstimatedDuration() + phaseDuration); 
    245                 DateTime currentTime = new DateTime(); 
    246                 ResourceHistoryItem resHistItem = new ResourceHistoryItem(choosenResources, currentTime); 
    247                 resHistItem.setCompletionPercentage(0); 
    248                 exec.addUsedResources(resHistItem); 
    249                  
    250                 try { 
    251                         exec.setStatus(DCWormsTags.INEXEC); 
    252                 } catch (Exception e) { 
    253                         // TODO Auto-generated catch block 
    254                         e.printStackTrace(); 
    255                 } 
     337                runTask(exec); 
    256338                 
    257339                PEUnit peUnit = (PEUnit)choosenResources.get(StandardResourceUnitName.PE); 
    258340                updateComputingResources(peUnit, EnergyEventType.TASK_STARTED, exec); 
    259341                 
    260                 updateTaskExecution(exec, SchedulingEventType.START_TASK_EXECUTION); 
    261                 //scheduler.sendInternal(time, DCWormsTags.TASK_EXECUTION_FINISHED, exec); 
    262342 
    263343                try { 
     
    269349                } 
    270350 
    271                 log.info(DCWormsConstants.USAGE_MEASURE_NAME + ": " + calculateTotalLoad()); 
    272                  
    273         } 
    274          
     351                log.info(DCWormsConstants.USAGE_MEASURE_NAME + ": " + calculateTotalLoad());             
     352        } 
     353         
     354        private void runTask(ExecTask execTask){ 
     355                Executable exec = (Executable) execTask; 
     356                Map<ResourceUnitName, ResourceUnit> resources = exec.getAllocatedResources().getLast().getResourceUnits(); 
     357                 
     358                try { 
     359                        exec.setStatus(DCWormsTags.INEXEC); 
     360                } catch (Exception e) { 
     361                        // TODO Auto-generated catch block 
     362                        e.printStackTrace(); 
     363                } 
     364 
     365                int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(SchedulingEventType.START_TASK_EXECUTION),  
     366                                execTask, resources, exec.getCompletionPercentage())).intValue(); 
     367 
     368                saveExecutionHistory(exec, exec.getCompletionPercentage(), phaseDuration); 
     369                if(exec.getResourceConsumptionProfile().isLast()){ 
     370                        scheduler.sendInternal(phaseDuration, DCWormsTags.TASK_EXECUTION_FINISHED, execTask);; 
     371                } else { 
     372                        scheduler.sendInternal(phaseDuration, DCWormsTags.TASK_EXECUTION_CHANGED, execTask); 
     373                } 
     374                 
     375                PEUnit peUnit = (PEUnit)resources.get(StandardResourceUnitName.PE); 
     376                updateComputingResources(peUnit, EnergyEventType.TASK_STARTED, exec); 
     377                 
     378        } 
    275379        protected void finalizeExecutable(ExecTask execTask){ 
    276380                 
     
    304408                        } 
    305409                } 
    306                  
    307                 UsedResourcesList lastUsedList = exec.getUsedResources(); 
    308                 Map<ResourceUnitName, ResourceUnit> lastUsed = lastUsedList.getLast() 
    309                                 .getResourceUnits(); 
     410 
     411                Map<ResourceUnitName, ResourceUnit> lastUsed = exec.getAllocatedResources().getLast().getResourceUnits(); 
    310412                getAllocationManager().freeResources(lastUsed); 
     413                 
     414                saveExecutionHistory(exec, 100,0); 
    311415                 
    312416                PEUnit peUnit = (PEUnit)lastUsed.get(StandardResourceUnitName.PE); 
    313417                updateComputingResources(peUnit, EnergyEventType.TASK_FINISHED, exec); 
     418                 
     419                log.debug(execTask.getJobId() + "_" + execTask.getId() + " finished execution on " + new DateTime()); 
     420                log.info(DCWormsConstants.USAGE_MEASURE_NAME + ": " + calculateTotalLoad()); 
    314421        } 
    315422         
     
    326433                        ExecTask task = iter.next(); 
    327434                        Executable exec = (Executable)task; 
    328  
    329                         if(exec.getUsedResources().size() > 1){ 
    330                                 //System.out.println("--- upadteProgressX: " + Sim_system.sim_clock() ); 
    331                                 //System.out.println("taskId: " + exec.getId() + "; completion percentage: " + exec.getCompletionPercentage() + "; timespan: " + timeSpan + "; estimatedDuration: " +  exec.getEstimatedDuration()); 
    332                                 exec.setCompletionPercentage(exec.getCompletionPercentage() + 100 * (timeSpan / (exec.getEstimatedDuration()) * (1.0 - exec.getUsedResources().get(exec.getUsedResources().size()-1).getCompletionPercentage()/100.0))); 
    333                                 //System.out.println("newProgress: " + exec.getCompletionPercentage()  );        
    334                         }  
    335                         else { 
    336                                 //System.out.println("--- upadteProgress2: " + Sim_system.sim_clock() ); 
    337                                 //System.out.println("taskId: " + exec.getId() + "; completion percentage: " + exec.getCompletionPercentage() + "; timespan: " + timeSpan + "; estimatedDuration: " +  exec.getEstimatedDuration()); 
    338                                 exec.setCompletionPercentage(exec.getCompletionPercentage() + 100 * (timeSpan / exec.getEstimatedDuration())); 
    339                                 //System.out.println("newProgress: " + exec.getCompletionPercentage()  );        
    340                         } 
     435                        ExecutionHistoryItem execHistItem = exec.getExecHistory().getLast(); 
     436                        //System.out.println("--- upadteProgressX: " + Sim_system.sim_clock() ); 
     437                        //System.out.println("taskId: " + exec.getId() + "; completion percentage: " + exec.getCompletionPercentage() + "; timespan: " + timeSpan + "; estimatedDuration: " +  execHistItem.getCompletionPercentage()); 
     438                        exec.setCompletionPercentage(exec.getCompletionPercentage() + 100 * (timeSpan / (execHistItem.getEstimatedDuration()) * (1.0 - execHistItem.getCompletionPercentage()/100.0))); 
     439                        //System.out.println("newProgress: " + exec.getCompletionPercentage()  );        
     440 
    341441                } 
    342442        } 
     
    368468        } 
    369469 
    370         protected void updateProcessingTimes(Sim_event ev) { 
     470        protected void updateProcessingTimes() { 
    371471                for (ExecTask execTask : jobRegistry.getRunningTasks()) { 
    372472                        Executable exec = (Executable)execTask; 
    373473 
    374                         Map<ResourceUnitName, ResourceUnit> choosenResources = exec.getUsedResources().getLast().getResourceUnits(); 
    375                         double lastTimeStamp = exec.getUsedResources().getLast().getTimeStamp().getMillis()/1000; 
     474 
     475                        Map<ResourceUnitName, ResourceUnit> choosenResources = exec.getAllocatedResources().getLast().getResourceUnits(); 
     476 
    376477                        int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(SchedulingEventType.RESOURCE_STATE_CHANGED),  
    377478                                        execTask, choosenResources, exec.getCompletionPercentage())).intValue(); 
    378479 
    379                         if(DoubleMath.subtract((lastTimeStamp + exec.getEstimatedDuration()), (new DateTime().getMillis()/1000 + phaseDuration)) == 0.0){ 
     480                        ExecutionHistoryItem execHistItem = exec.getExecHistory().getLast(); 
     481                        double lastTimeStamp = execHistItem.getTimeStamp().getMillis()/1000; 
     482                        if(DoubleMath.subtract((lastTimeStamp + execHistItem.getEstimatedDuration()), (new DateTime().getMillis()/1000 + phaseDuration)) == 0.0){ 
    380483                                continue; 
    381484                        } 
    382485                        //System.out.println("=== upadteTIme: " + Sim_system.sim_clock() ); 
    383                         //System.out.println("execId: " + exec.getId() +  "; estimatedDuration " + exec.getEstimatedDuration()); 
    384                         //System.out.println("execId: " + exec.getId() + "; difference " + DoubleMath.subtract((lastTimeStamp + exec.getEstimatedDuration()), (new DateTime().getMillis()/1000 + phaseDuration))); 
     486                        //System.out.println("execId: " + exec.getId() +  "; estimatedDuration " + execHistItem.getEstimatedDuration()); 
     487                        //System.out.println("execId: " + exec.getId() + "; difference " + DoubleMath.subtract((lastTimeStamp + execHistItem.getEstimatedDuration()), (new DateTime().getMillis()/1000 + phaseDuration))); 
    385488                        //System.out.println("completionPercantage: " + exec.getCompletionPercentage() + "; basic duration: " +exec.getResourceConsumptionProfile().getCurrentResourceConsumption().getDuration() +   "; phaseDuration: " +  phaseDuration); 
    386489 
    387                         exec.setEstimatedDuration(phaseDuration); 
    388                         DateTime currentTime = new DateTime(); 
    389                         ResourceHistoryItem resHistItem = new ResourceHistoryItem(choosenResources, currentTime); 
    390                         resHistItem.setCompletionPercentage(exec.getCompletionPercentage()); 
    391                         exec.addUsedResources(resHistItem); 
    392                          
    393                         if(exec.getResourceConsumptionProfile().getCurrentResourceConsumption() == exec.getResourceConsumptionProfile().getResourceConsumptionList().getLast()){ 
     490                        saveExecutionHistory(exec, exec.getCompletionPercentage(), phaseDuration); 
     491                         
     492                        if(exec.getResourceConsumptionProfile().isLast()){ 
    394493                                ExecTaskFilter filter = new ExecTaskFilter(exec.getUniqueId(), DCWormsTags.TASK_EXECUTION_FINISHED); 
    395494                                scheduler.sim_cancel(filter, null); 
     
    407506        }        
    408507 
    409         protected void updateTaskExecution(ExecTask execTask, SchedulingEventType schedEvType) { 
     508        protected void updateTaskExecutionPhase(ExecTask execTask, SchedulingEventType schedEvType) { 
    410509 
    411510                if (execTask.getStatus() == DCWormsTags.INEXEC) { 
     
    415514                                exec.setStatus(DCWormsTags.NEW_EXEC_PHASE); 
    416515                        } catch (Exception e) { 
    417                         } 
    418                          
    419                         Map<ResourceUnitName, ResourceUnit> choosenResources = exec.getUsedResources().getLast().getResourceUnits(); 
     516                                 
     517                        } 
     518 
     519                        Map<ResourceUnitName, ResourceUnit> choosenResources = exec.getAllocatedResources().getLast().getResourceUnits(); 
    420520 
    421521                        int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(schedEvType),  
    422522                                        execTask, choosenResources, exec.getCompletionPercentage())).intValue(); 
    423  
    424                         exec.setEstimatedDuration(phaseDuration); 
    425                          
    426                         if(exec.getResourceConsumptionProfile().getCurrentResourceConsumption() == exec.getResourceConsumptionProfile().getResourceConsumptionList().getLast()){ 
     523                         
     524                        saveExecutionHistory(exec, exec.getCompletionPercentage(), phaseDuration); 
     525                         
     526                        if(exec.getResourceConsumptionProfile().isLast()){ 
    427527                                scheduler.sendInternal(phaseDuration, DCWormsTags.TASK_EXECUTION_FINISHED, execTask); 
    428                                 PEUnit peUnit = (PEUnit)exec.getUsedResources().getLast().getResourceUnits().get(StandardResourceUnitName.PE); 
    429                                 updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec); 
    430528                        } else { 
    431529                                scheduler.sendInternal(phaseDuration, DCWormsTags.TASK_EXECUTION_CHANGED, execTask); 
    432                                 PEUnit peUnit = (PEUnit)exec.getUsedResources().getLast().getResourceUnits().get(StandardResourceUnitName.PE); 
    433                                 updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec); 
    434                         } 
     530                        } 
     531                         
     532                        PEUnit peUnit = (PEUnit)exec.getAllocatedResources().getLast().getResourceUnits().get(StandardResourceUnitName.PE); 
     533                        updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec); 
    435534                } 
    436535        }        
     
    501600        } 
    502601         
    503         public void notifySubmittedWorkloadUnit(WorkloadUnit wu, boolean ack) { 
     602        public void notifySubmittedWorkloadUnit(WorkloadUnit wu) { 
    504603                //250314 
    505604                //updateProcessingProgress(); 
     
    562661                        Executable exec = (Executable) task; 
    563662                        jobRegistry.addExecTask(exec); 
    564                          
    565                         exec.trackResource(scheduler.get_name()); 
    566                         Scheduler parentScheduler = scheduler.getParent(); 
    567                         List<String> visitedResource = exec.getVisitedResources(); 
    568                         String [] visitedResourcesArray = visitedResource.toArray(new String[visitedResource.size()]); 
    569                         while (parentScheduler != null && !ArrayUtils.contains(visitedResourcesArray, parentScheduler.get_name())) { 
    570                                 exec.trackResource(parentScheduler.get_name()); 
    571                                 parentScheduler = parentScheduler.getParent(); 
    572                         } 
    573                         exec.setSchedulerName(scheduler.get_id()); 
     663 
     664                        exec.setSchedulerName(scheduler.getFullName()); 
    574665                         
    575666                        TaskList newTasks = new TaskListImpl(); 
     
    596687        } 
    597688         
     689         
     690        public void saveExecutionHistory(Executable exec, double completionPercentage, double estimatedDuration){ 
     691 
     692                ExecutionHistoryItem execHistoryItem = new ExecutionHistoryItem(new DateTime()); 
     693                execHistoryItem.setCompletionPercentage(completionPercentage); 
     694                execHistoryItem.setEstimatedDuration(estimatedDuration); 
     695                execHistoryItem.setResIndex(exec.getAllocatedResources().size() -1); 
     696                execHistoryItem.setStatus(exec.getStatus()); 
     697                exec.addExecHistory(execHistoryItem); 
     698                 
     699                ProcessingElements pes = (ProcessingElements) exec.getAllocatedResources().getLast().getResourceUnits().get(StandardResourceUnitName.PE); 
     700                for (ComputingResource resource : pes) { 
     701 
     702                        LinkedList<ComputingResource> toExamine = new LinkedList<ComputingResource>(); 
     703                        toExamine.push(resource); 
     704 
     705                        while (!toExamine.isEmpty()) { 
     706                                ComputingResource compResource = toExamine.pop(); 
     707                                List<ComputingResource> resources = compResource.getChildren(); 
     708                                if(resources.isEmpty()){ 
     709                                        Set<String> visitedResources = exec.getAllocatedResources().getLast().getVisitedResources(); 
     710                                        if(!visitedResources.contains(compResource.getFullName())){ 
     711                                                exec.getAllocatedResources().getLast().trackResource(compResource.getFullName()); 
     712                                        } 
     713                                } else { 
     714                                        for (int i = 0; i < resources.size(); i++) { 
     715                                                ComputingResource resourceChild = resources.get(i); 
     716                                                toExamine.addLast(resourceChild); 
     717                                        } 
     718                                } 
     719                        } 
     720                } 
     721        } 
     722         
     723        public boolean allocateResources(Executable exec, Map<ResourceUnitName, ResourceUnit> choosenResources){ 
     724                boolean allocationStatus = getAllocationManager().allocateResources(choosenResources); 
     725                if(allocationStatus){ 
     726                        ResourceHistoryItem resourceHistoryItem = new ResourceHistoryItem(choosenResources); 
     727                        exec.addAllocatedResources(resourceHistoryItem); 
     728                        return true; 
     729                } 
     730                return false; 
     731        } 
    598732} 
Note: See TracChangeset for help on using the changeset viewer.