ARC SDK
JobSupervisor.h
1 // -*- indent-tabs-mode: nil -*-
2 
3 #ifndef __ARC_JOBSUPERVISOR_H__
4 #define __ARC_JOBSUPERVISOR_H__
5 
6 #include <list>
7 #include <string>
8 
9 #include <arc/URL.h>
10 #include <arc/compute/JobControllerPlugin.h>
11 #include <arc/compute/EntityRetriever.h>
12 
13 namespace Arc {
14 
15  class Logger;
16  class Endpoint;
17  class UserConfig;
18 
20 
24  class JobSelector {
25  public:
26  JobSelector() {}
27  virtual ~JobSelector() {}
28 
30 
37  virtual bool Select(const Job& job) const = 0;
38  };
39 
41 
48  class JobSupervisor : public EntityConsumer<Job> {
49  public:
51 
76  JobSupervisor(const UserConfig& usercfg, const std::list<Job>& jobs = std::list<Job>());
77 
78  ~JobSupervisor() {}
79 
81 
90  bool AddJob(const Job& job);
91 
92  void addEntity(const Job& job) { AddJob(job); }
93 
95 
101  void Update();
102 
104 
134  bool Retrieve(const std::string& downloaddirprefix, bool usejobname, bool force, std::list<std::string>& downloaddirectories);
135 
137 
168  bool Renew();
169 
171 
199  bool Resume();
200 
202 
259  bool Resubmit(int destination, const std::list<Endpoint>& services, std::list<Job>& resubmittedJobs, const std::list<std::string>& rejectedURLs = std::list<std::string>());
260 
262 
314  bool Migrate(bool forcemigration, const std::list<Endpoint>& services, std::list<Job>& migratedJobs, const std::list<std::string>& rejectedURLs = std::list<std::string>());
315 
317 
344  bool Cancel();
345 
347 
359  bool Clean();
360 
361  const std::list<Job>& GetAllJobs() const { return jobs; }
362  std::list<Job> GetSelectedJobs() const;
363 
364  void SelectValid();
365  void SelectByStatus(const std::list<std::string>& status);
366  void SelectByID(const std::list<std::string>& ids);
367 
369 
376  void Select(const JobSelector& js);
377 
378  void ClearSelection();
379 
380  const std::list<std::string>& GetIDsProcessed() const { return processed; }
381  const std::list<std::string>& GetIDsNotProcessed() const { return notprocessed; }
382 
383  private:
384  const UserConfig& usercfg;
385 
386  std::list<Job> jobs;
387  // Selected and non-selected jobs.
388  typedef std::map<JobControllerPlugin*, std::pair< std::list<Job*>, std::list<Job*> > > JobSelectionMap;
389  JobSelectionMap jcJobMap;
390  std::map<std::string, JobControllerPlugin*> loadedJCs;
391 
392  std::list<std::string> processed, notprocessed;
393 
394  JobControllerPluginLoader loader;
395 
396  static Logger logger;
397  };
398 
399 } //namespace ARC
400 
401 #endif // __ARC_JOBSUPERVISOR_H__
Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
User configuration class
Definition: UserConfig.h:196
JobSupervisor(const UserConfig &usercfg, const std::list< Job > &jobs=std::list< Job >())
Create a JobSupervisor.
void Select(const JobSelector &js)
Select jobs based on custom selector.
bool AddJob(const Job &job)
Add job.
Job.
Definition: Job.h:33
bool Migrate(bool forcemigration, const std::list< Endpoint > &services, std::list< Job > &migratedJobs, const std::list< std::string > &rejectedURLs=std::list< std::string >())
Migrate jobs.
JobSupervisor class.
Definition: JobSupervisor.h:48
bool Cancel()
Cancel jobs.
Abstract class used for selecting jobs with JobSupervisor.
Definition: JobSupervisor.h:24
void addEntity(const Job &job)
Send an entity to this consumer.
Definition: JobSupervisor.h:92
bool Resubmit(int destination, const std::list< Endpoint > &services, std::list< Job > &resubmittedJobs, const std::list< std::string > &rejectedURLs=std::list< std::string >())
Resubmit jobs.
bool Retrieve(const std::string &downloaddirprefix, bool usejobname, bool force, std::list< std::string > &downloaddirectories)
Retrieve job output files.
virtual bool Select(const Job &job) const =0
Indicate whether a job should be selected or not.
bool Renew()
Renew job credentials.
void Update()
Update job information.
bool Resume()
Resume jobs by status.
A general concept of an object which can consume entities use by the retrievers to return results...
Definition: EntityRetriever.h:34
bool Clean()
Clean jobs.