Class: OodCore::Job::Adapter Abstract
- Inherits:
-
Object
- Object
- OodCore::Job::Adapter
- Defined in:
- lib/ood_core/job/adapter.rb
Overview
A class that handles the communication with a resource manager for submitting/statusing/holding/deleting jobs
Direct Known Subclasses
OodCore::Job::Adapters::Lsf, OodCore::Job::Adapters::PBSPro, OodCore::Job::Adapters::Slurm, OodCore::Job::Adapters::Torque
Instance Method Summary collapse
-
#delete(id) ⇒ void
abstract
Delete the submitted job.
-
#hold(id) ⇒ void
abstract
Put the submitted job on hold.
-
#info(id) ⇒ Info
abstract
Retrieve job info from the resource manager.
-
#info_all ⇒ Array<Info>
abstract
Retrieve info for all jobs from the resource manager.
-
#info_where_owner(owner) ⇒ Array<Info>
Retrieve info for all jobs for a given owner or owners from the resource manager.
-
#release(id) ⇒ void
abstract
Release the job that is on hold.
-
#status(id) ⇒ Status
abstract
Retrieve job status from resource manager.
-
#submit(script, after: [], afterok: [], afternotok: [], afterany: []) ⇒ String
abstract
Submit a job with the attributes defined in the job template instance.
Instance Method Details
#delete(id) ⇒ void
Subclass is expected to implement #delete
This method returns an undefined value.
Delete the submitted job
95 96 97 |
# File 'lib/ood_core/job/adapter.rb', line 95 def delete(id) raise NotImplementedError, "subclass did not define #delete" end |
#hold(id) ⇒ void
Subclass is expected to implement #hold
This method returns an undefined value.
Put the submitted job on hold
77 78 79 |
# File 'lib/ood_core/job/adapter.rb', line 77 def hold(id) raise NotImplementedError, "subclass did not define #hold" end |
#info(id) ⇒ Info
Subclass is expected to implement #info
Retrieve job info from the resource manager
58 59 60 |
# File 'lib/ood_core/job/adapter.rb', line 58 def info(id) raise NotImplementedError, "subclass did not define #info" end |
#info_all ⇒ Array<Info>
Subclass is expected to implement #info_all
Retrieve info for all jobs from the resource manager
40 41 42 |
# File 'lib/ood_core/job/adapter.rb', line 40 def info_all raise NotImplementedError, "subclass did not define #info_all" end |
#info_where_owner(owner) ⇒ Array<Info>
Retrieve info for all jobs for a given owner or owners from the resource manager
48 49 50 51 |
# File 'lib/ood_core/job/adapter.rb', line 48 def info_where_owner(owner) owner = Array.wrap(owner).map(&:to_s) info_all.select { |info| owner.include? info.job_owner } end |
#release(id) ⇒ void
Subclass is expected to implement #release
This method returns an undefined value.
Release the job that is on hold
86 87 88 |
# File 'lib/ood_core/job/adapter.rb', line 86 def release(id) raise NotImplementedError, "subclass did not define #release" end |
#status(id) ⇒ Status
Subclass is expected to implement #status
Optimized slightly over retrieving complete job information from server
Retrieve job status from resource manager
68 69 70 |
# File 'lib/ood_core/job/adapter.rb', line 68 def status(id) raise NotImplementedError, "subclass did not define #status" end |
#submit(script, after: [], afterok: [], afternotok: [], afterany: []) ⇒ String
Subclass is expected to implement #submit
Submit a job with the attributes defined in the job template instance
32 33 34 |
# File 'lib/ood_core/job/adapter.rb', line 32 def submit(script, after: [], afterok: [], afternotok: [], afterany: []) raise NotImplementedError, "subclass did not define #submit" end |