source: DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/tasks/AbstractJobRegistry.java @ 1551

Revision 1551, 3.8 KB checked in by wojtekp, 10 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package schedframe.scheduling.manager.tasks;
2
3
4import gridsim.dcworms.DCWormsTags;
5
6import java.util.ArrayList;
7import java.util.List;
8import java.util.Map;
9import java.util.concurrent.ConcurrentHashMap;
10
11import schedframe.resources.units.ResourceUnit;
12import schedframe.resources.units.ResourceUnitName;
13import schedframe.scheduling.manager.resources.utils.ResourceManagerUtils;
14import schedframe.scheduling.tasks.Job;
15import schedframe.scheduling.tasks.JobInterface;
16import schedframe.scheduling.tasks.Task;
17import schedframe.scheduling.tasks.TaskInterface;
18import simulator.DataCenterWorkloadSimulator;
19import dcworms.schedframe.scheduling.ExecTask;
20
21
22public abstract class AbstractJobRegistry /*extends ConcurrentHashMap<String, Job>*/ implements JobRegistry{
23       
24       
25        protected static final ConcurrentHashMap<String, JobInterface<?>> jobs = new ConcurrentHashMap<String, JobInterface<?>>();
26       
27        protected AbstractJobRegistry(){
28        }
29       
30        public boolean addJob(JobInterface<?> job) {
31                jobs.put(job.getId(), job);
32                return true;
33        }
34
35        public boolean addTask(TaskInterface<?> task) {
36                if(jobs.containsKey(task.getJobId())){
37                        getJob(task.getJobId()).add((Task)task);
38                        return true;
39                } else {
40                        return false;
41                }
42        }
43
44        public JobInterface<?> getJobInfo(String jobId) {
45                return jobs.get(jobId);
46        }
47
48        public TaskInterface<?> getTaskInfo(String jobId, String taskId) {
49                Task task = null;
50                Job job = getJob(jobId);
51               
52                if(job == null)
53                        return null;
54               
55                try {
56                        task = job.getTask(taskId);
57                } catch (NoSuchFieldException e) {
58                }
59                return task;
60        }
61       
62        public Job getJob(String jobId){
63                return (Job)jobs.get(jobId);
64        }
65       
66        public List<JobInterface<?>> getJobs(){
67                List<JobInterface<?>> jobList = new ArrayList<JobInterface<?>>();
68                for(String jobId: jobs.keySet()) {
69                        jobList.add(jobs.get(jobId));
70                }
71                return jobList;
72        }
73
74        public List<JobInterface<?>> getJobs(int status) {
75                List<JobInterface<?>> jobList = new ArrayList<JobInterface<?>>();
76                synchronized (jobs) {
77                        for(String jobId: jobs.keySet()){
78                                JobInterface<?> job = jobs.get(jobId);
79                                if (job.getStatus() == status) {
80                                        jobList.add(job);
81                                }
82                        }
83                }
84                return jobList;
85        }
86
87        @Override
88        public boolean pauseTask(String jobId, String taskId) {
89                ExecTask execTask = getTask(jobId, taskId);
90                if (execTask == null) {
91                        return false;
92                }else{
93                        try {
94                                execTask.setStatus(DCWormsTags.PAUSING);
95                        } catch (Exception e) {
96                                // TODO Auto-generated catch block
97                                e.printStackTrace();
98                        }
99                        String[] ids = new String[2];
100                        ids[0] = new String(jobId);
101                        ids[1] = new String(taskId);
102                        DataCenterWorkloadSimulator.getEventManager().sendToAllSchedulers(0, DCWormsTags.TASK_PAUSE, ids);
103                        return true;
104                }
105        }
106
107        public boolean resumeTask(String jobId, String taskId) {
108                ExecTask execTask = getTask(jobId, taskId);
109                if (execTask == null) {
110                        return false;
111                }else{
112                        String[] ids = new String[2];
113                        ids[0] = new String(jobId);
114                        ids[1] = new String(taskId);
115                        DataCenterWorkloadSimulator.getEventManager().sendToAllSchedulers(0, DCWormsTags.TASK_RESUME, ids);
116                        return true;   
117                }
118        }
119
120        public boolean migrateTask(String jobId, String taskId, Map<ResourceUnitName, ResourceUnit> choosenResources) {
121                ExecTask execTask = getTask(jobId, taskId);
122                if (execTask == null) {
123                        return false;
124                }else{
125                        try {
126                                execTask.setStatus(DCWormsTags.IN_MIGRATION);
127                        } catch (Exception e) {
128                                return false;
129                        }
130                        if(choosenResources != null){
131                                ResourceManagerUtils.setPendingResources(choosenResources);
132                        }
133                        Object[] data = new Object[3];
134                        data[0] = new String(jobId);
135                        data[1] = new String(taskId);
136                        data[2] = choosenResources;
137                        DataCenterWorkloadSimulator.getEventManager().sendToScheduler(execTask.getSchedulerName(), 0, DCWormsTags.TASK_MIGRATE, data);
138                        return true;   
139                }
140        }
141
142        public boolean migrateTask(String jobId, String taskId, String nodeName) {
143                // TODO Auto-generated method stub
144                return false;
145        }
146       
147}
Note: See TracBrowser for help on using the repository browser.