Class: PBS::Batch
- Inherits:
-
Object
- Object
- PBS::Batch
- Defined in:
- lib/pbs/batch.rb
Overview
Object used for simplified communication with a batch server
Instance Attribute Summary collapse
-
#host ⇒ String
readonly
The host of the Torque batch server.
-
#prefix ⇒ Pathname?
readonly
The path to the Torque client installation.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
The comparison operator.
-
#connect {|cid| ... } ⇒ Object
Creates a connection to batch server and calls block in context of this connection.
-
#delete_job(id) ⇒ void
Delete a specified job from batch server.
-
#eql?(other) ⇒ Boolean
Checks whether two batch server objects are completely identical to each other.
-
#get_job(id, **kwargs) ⇒ Hash
Get info for given batch server’s job.
-
#get_jobs(id: '', filters: []) ⇒ Hash
Get a list of hashes of the jobs on the batch server.
-
#get_node(id, **kwargs) ⇒ Hash
Get info for given batch server’s node.
-
#get_nodes(id: '', filters: []) ⇒ Hash
Get a list of hashes of the nodes on the batch server.
-
#get_queue(id, **kwargs) ⇒ Hash
Get info for given batch server’s queue.
-
#get_queues(id: '', filters: []) ⇒ Hash
Get a list of hashes of the queues on the batch server.
-
#get_status(filters: []) ⇒ Hash
Get a hash with status info for this batch server.
-
#hash ⇒ Fixnum
Generates a hash value for this object.
-
#hold_job(id, type: :u) ⇒ void
Put specified job on hold Possible hold types: :u => Available to the owner of the job, the batch operator and the batch administrator :o => Available to the batch operator and the batch administrator :s => Available to the batch administrator.
-
#initialize(host:, prefix: nil, **_) ⇒ Batch
constructor
A new instance of Batch.
-
#release_job(id, type: :u) ⇒ void
Release a specified job that is on hold Possible hold types: :u => Available to the owner of the job, the batch operator and the batch administrator :o => Available to the batch operator and the batch administrator :s => Available to the batch administrator.
-
#submit_script(script, queue: nil, headers: {}, resources: {}, envvars: {}, qsub: true) ⇒ String
Submit a script to the batch server.
-
#submit_string(string, **kwargs) ⇒ String
Submit a script expanded into a string to the batch server.
-
#to_h ⇒ Hash
Convert object to hash.
Constructor Details
#initialize(host:, prefix: nil, **_) ⇒ Batch
Returns a new instance of Batch.
20 21 22 23 |
# File 'lib/pbs/batch.rb', line 20 def initialize(host:, prefix: nil, **_) @host = host.to_s @prefix = Pathname.new(prefix) if prefix end |
Instance Attribute Details
#host ⇒ String (readonly)
The host of the Torque batch server
10 11 12 |
# File 'lib/pbs/batch.rb', line 10 def host @host end |
#prefix ⇒ Pathname? (readonly)
The path to the Torque client installation
16 17 18 |
# File 'lib/pbs/batch.rb', line 16 def prefix @prefix end |
Instance Method Details
#==(other) ⇒ Boolean
The comparison operator
34 35 36 |
# File 'lib/pbs/batch.rb', line 34 def ==(other) to_h == other.to_h end |
#connect {|cid| ... } ⇒ Object
Creates a connection to batch server and calls block in context of this connection
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/pbs/batch.rb', line 56 def connect(&block) Torque.lib = prefix ? prefix.join('lib', 'libtorque.so') : nil cid = Torque.pbs_connect(host) Torque.raise_error(cid.abs) if cid < 0 # raise error if negative connection id begin value = yield cid ensure Torque.pbs_disconnect(cid) # always close connection end Torque.check_for_error # check for errors at end value end |
#delete_job(id) ⇒ void
This method returns an undefined value.
Delete a specified job from batch server
256 257 258 259 260 |
# File 'lib/pbs/batch.rb', line 256 def delete_job(id) connect do |cid| Torque.pbs_deljob cid, id.to_s, nil end end |
#eql?(other) ⇒ Boolean
Checks whether two batch server objects are completely identical to each other
42 43 44 |
# File 'lib/pbs/batch.rb', line 42 def eql?(other) self.class == other.class && self == other end |
#get_job(id, **kwargs) ⇒ Hash
Get info for given batch server’s job
215 216 217 |
# File 'lib/pbs/batch.rb', line 215 def get_job(id, **kwargs) get_jobs(id: id, **kwargs) end |
#get_jobs(id: '', filters: []) ⇒ Hash
Get a list of hashes of the jobs on the batch server
194 195 196 197 198 199 200 |
# File 'lib/pbs/batch.rb', line 194 def get_jobs(id: '', filters: []) connect do |cid| filters = PBS::Torque::Attrl.from_list(filters) batch_status = Torque.pbs_statjob cid, id.to_s, filters, nil batch_status.to_h.tap { Torque.pbs_statfree batch_status } end end |
#get_node(id, **kwargs) ⇒ Hash
Get info for given batch server’s node
170 171 172 |
# File 'lib/pbs/batch.rb', line 170 def get_node(id, **kwargs) get_nodes(id: id, **kwargs) end |
#get_nodes(id: '', filters: []) ⇒ Hash
Get a list of hashes of the nodes on the batch server
150 151 152 153 154 155 156 |
# File 'lib/pbs/batch.rb', line 150 def get_nodes(id: '', filters: []) connect do |cid| filters = PBS::Torque::Attrl.from_list(filters) batch_status = Torque.pbs_statnode cid, id.to_s, filters, nil batch_status.to_h.tap { Torque.pbs_statfree batch_status } end end |
#get_queue(id, **kwargs) ⇒ Hash
Get info for given batch server’s queue
127 128 129 |
# File 'lib/pbs/batch.rb', line 127 def get_queue(id, **kwargs) get_queues(id: id, **kwargs) end |
#get_queues(id: '', filters: []) ⇒ Hash
Get a list of hashes of the queues on the batch server
107 108 109 110 111 112 113 |
# File 'lib/pbs/batch.rb', line 107 def get_queues(id: '', filters: []) connect do |cid| filters = PBS::Torque::Attrl.from_list(filters) batch_status = Torque.pbs_statque cid, id.to_s, filters, nil batch_status.to_h.tap { Torque.pbs_statfree batch_status } end end |
#get_status(filters: []) ⇒ Hash
Get a hash with status info for this batch server
81 82 83 84 85 86 87 |
# File 'lib/pbs/batch.rb', line 81 def get_status(filters: []) connect do |cid| filters = PBS::Torque::Attrl.from_list filters batch_status = Torque.pbs_statserver cid, filters, nil batch_status.to_h.tap { Torque.pbs_statfree batch_status } end end |
#hash ⇒ Fixnum
Generates a hash value for this object
48 49 50 |
# File 'lib/pbs/batch.rb', line 48 def hash [self.class, to_h].hash end |
#hold_job(id, type: :u) ⇒ void
This method returns an undefined value.
Put specified job on hold Possible hold types:
:u => Available to the owner of the job, the batch operator and the batch administrator
:o => Available to the batch operator and the batch administrator
:s => Available to the batch administrator
229 230 231 232 233 |
# File 'lib/pbs/batch.rb', line 229 def hold_job(id, type: :u) connect do |cid| Torque.pbs_holdjob cid, id.to_s, type.to_s, nil end end |
#release_job(id, type: :u) ⇒ void
This method returns an undefined value.
Release a specified job that is on hold Possible hold types:
:u => Available to the owner of the job, the batch operator and the batch administrator
:o => Available to the batch operator and the batch administrator
:s => Available to the batch administrator
245 246 247 248 249 |
# File 'lib/pbs/batch.rb', line 245 def release_job(id, type: :u) connect do |cid| Torque.pbs_rlsjob cid, id.to_s, type.to_s, nil end end |
#submit_script(script, queue: nil, headers: {}, resources: {}, envvars: {}, qsub: true) ⇒ String
Submit a script to the batch server
285 286 287 |
# File 'lib/pbs/batch.rb', line 285 def submit_script(script, queue: nil, headers: {}, resources: {}, envvars: {}, qsub: true) send(qsub ? :qsub_submit : :pbs_submit, script, queue, headers, resources, envvars) end |
#submit_string(string, **kwargs) ⇒ String
Submit a script expanded into a string to the batch server
293 294 295 296 297 298 299 |
# File 'lib/pbs/batch.rb', line 293 def submit_string(string, **kwargs) Tempfile.open('qsub.') do |f| f.write string.to_s f.close submit_script(f.path, **kwargs) end end |
#to_h ⇒ Hash
Convert object to hash
27 28 29 |
# File 'lib/pbs/batch.rb', line 27 def to_h {host: host, prefix: prefix} end |