ood_core 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +1 -1
- data/CHANGELOG.md +16 -1
- data/lib/ood_core/job/adapters/sge/batch.rb +25 -12
- data/lib/ood_core/job/adapters/torque/batch.rb +7 -7
- data/lib/ood_core/job/adapters/torque/ffi.rb +2 -1
- data/lib/ood_core/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 948be1edf24a4e534669547d92b6ad56cc229183442a27705941bd959085a09a
|
4
|
+
data.tar.gz: 700a6c5073641233ac36553350d4ab451e0b01d73f885bc7bd2695b81479b6fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcc1aa968fe78132164a5ba3ab6e6165f1f64b950ca1e3862b00020aec9915c1458e52897005a0057b6ca4d9205c3b463f8f9b421e85f9da75778fe27734b371
|
7
|
+
data.tar.gz: 74af322ccb4e8f50c350d190bacc65440fb3ab79791a4cb03f5d081131a0d72ad186f43b647621d57053f4da717a59cd9efae9f8cb7c6c377b34ec4563faf100
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
|
+
|
10
|
+
## [0.7.0] - 2018-12-26
|
11
|
+
### Added
|
12
|
+
- Addition of an optional live system test of a configurable job adapter
|
13
|
+
|
14
|
+
### Fixed
|
15
|
+
- Fix Torque adapter crash by fixing scope resolution on Attrl and Attropl
|
16
|
+
- Fix SGE adapter crash in `OodCore::Job::Adapters::Sge::Batch#get_info_enqueued_job` when libdrmma is not available (DRMMA constant not defined)
|
17
|
+
|
18
|
+
### Changed
|
19
|
+
- Always set `SGE_ROOT` env var, for both SGE commands via popen and when using libdrmaa
|
20
|
+
- Use libdrmaa only when libdrmaa is set in the cluster config
|
21
|
+
|
22
|
+
|
9
23
|
## [0.6.0] - 2018-12-19
|
10
24
|
### Added
|
11
25
|
- Added ability to override the default password length
|
@@ -139,7 +153,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
139
153
|
### Added
|
140
154
|
- Initial release!
|
141
155
|
|
142
|
-
[Unreleased]: https://github.com/OSC/ood_core/compare/v0.
|
156
|
+
[Unreleased]: https://github.com/OSC/ood_core/compare/v0.7.0...HEAD
|
157
|
+
[0.7.0]: https://github.com/OSC/ood_core/compare/v0.6.0...v0.7.0
|
143
158
|
[0.6.0]: https://github.com/OSC/ood_core/compare/v0.5.1...v0.6.0
|
144
159
|
[0.5.1]: https://github.com/OSC/ood_core/compare/v0.5.0...v0.5.1
|
145
160
|
[0.5.0]: https://github.com/OSC/ood_core/compare/v0.4.0...v0.5.0
|
@@ -15,7 +15,7 @@ end
|
|
15
15
|
class OodCore::Job::Adapters::Sge::Batch
|
16
16
|
using OodCore::Refinements::HashExtensions
|
17
17
|
|
18
|
-
attr_reader :bin, :bin_overrides, :conf, :cluster, :
|
18
|
+
attr_reader :bin, :bin_overrides, :conf, :cluster, :helper
|
19
19
|
|
20
20
|
require "ood_core/job/adapters/sge/qstat_xml_j_r_listener"
|
21
21
|
require "ood_core/job/adapters/sge/qstat_xml_r_listener"
|
@@ -23,6 +23,7 @@ class OodCore::Job::Adapters::Sge::Batch
|
|
23
23
|
require "ood_core/job/adapters/helper"
|
24
24
|
require 'time'
|
25
25
|
|
26
|
+
|
26
27
|
class Error < StandardError; end
|
27
28
|
|
28
29
|
# @param opts [#to_h] the options defining this adapter
|
@@ -34,10 +35,18 @@ class OodCore::Job::Adapters::Sge::Batch
|
|
34
35
|
@cluster = config.fetch(:cluster, nil)
|
35
36
|
@conf = Pathname.new(config.fetch(:conf, nil))
|
36
37
|
@bin = Pathname.new(config.fetch(:bin, nil))
|
37
|
-
@sge_root =
|
38
|
+
@sge_root = Pathname.new(config[:sge_root] || ENV['SGE_ROOT'] || "/var/lib/gridengine")
|
38
39
|
@bin_overrides = config.fetch(:bin_overrides, {})
|
39
40
|
|
40
|
-
|
41
|
+
# FIXME: hack as this affects env of the process!
|
42
|
+
ENV['SGE_ROOT'] = @sge_root.to_s
|
43
|
+
|
44
|
+
if config[:libdrmaa_path]
|
45
|
+
load_drmaa(config[:libdrmaa_path])
|
46
|
+
@can_use_drmaa = true
|
47
|
+
else
|
48
|
+
@can_use_drmaa = false
|
49
|
+
end
|
41
50
|
|
42
51
|
@helper = OodCore::Job::Adapters::Sge::Helper.new
|
43
52
|
end
|
@@ -62,7 +71,7 @@ class OodCore::Job::Adapters::Sge::Batch
|
|
62
71
|
|
63
72
|
# Get OodCore::Job::Info for a job_id that may still be in the queue
|
64
73
|
#
|
65
|
-
# If
|
74
|
+
# If libdrmaa is not loaded then we cannot use DRMAA. Using
|
66
75
|
# DRMAA provides better job status and should always be chosen if it is possible.
|
67
76
|
#
|
68
77
|
# When qstat is called in XML mode for a job id that is not in the queue invalid XML
|
@@ -74,30 +83,35 @@ class OodCore::Job::Adapters::Sge::Batch
|
|
74
83
|
def get_info_enqueued_job(job_id)
|
75
84
|
job_info = OodCore::Job::Info.new(id: job_id.to_s, status: :completed)
|
76
85
|
argv = ['qstat', '-r', '-xml', '-j', job_id.to_s]
|
77
|
-
|
86
|
+
|
78
87
|
begin
|
79
88
|
results = call(*argv)
|
80
89
|
listener = QstatXmlJRListener.new
|
81
90
|
REXML::Parsers::StreamParser.new(results, listener).parse
|
82
91
|
|
83
92
|
job_hash = listener.parsed_job
|
84
|
-
|
85
|
-
|
93
|
+
|
94
|
+
if can_use_drmaa?
|
95
|
+
begin
|
96
|
+
job_hash[:status] = get_status_from_drmma(job_id)
|
97
|
+
rescue DRMAA::DRMAAInvalidArgumentError => e
|
98
|
+
raise Error, e.message
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
86
102
|
job_info = OodCore::Job::Info.new(**job_hash)
|
87
103
|
rescue REXML::ParseException => e
|
88
104
|
# If the error is something other than a job not being found by qstat re-raise the error
|
89
105
|
unless results =~ /unknown_jobs/
|
90
106
|
raise e, "REXML::ParseException error and command '#{argv.join(' ')}' produced results that didn't contain string 'unknown_jobs'. ParseException: #{e.message}"
|
91
107
|
end
|
92
|
-
rescue DRMAA::DRMAAInvalidArgumentError => e
|
93
|
-
raise Error, e.message
|
94
108
|
end
|
95
109
|
|
96
110
|
job_info
|
97
111
|
end
|
98
112
|
|
99
113
|
def can_use_drmaa?
|
100
|
-
|
114
|
+
@can_use_drmaa
|
101
115
|
end
|
102
116
|
|
103
117
|
# Call qhold
|
@@ -197,7 +211,6 @@ class OodCore::Job::Adapters::Sge::Batch
|
|
197
211
|
|
198
212
|
# Get the job status using DRMAA
|
199
213
|
def get_status_from_drmma(job_id)
|
200
|
-
ENV['SGE_ROOT'] = sge_root.to_s
|
201
214
|
translate_drmaa_state(DRMAA::SessionSingleton.instance.job_ps(job_id.to_s))
|
202
215
|
end
|
203
|
-
end
|
216
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'open3'
|
2
2
|
|
3
3
|
class OodCore::Job::Adapters::Torque
|
4
|
-
|
5
|
-
|
4
|
+
# Object used for simplified communication with a batch server
|
5
|
+
class Batch
|
6
6
|
# The host of the Torque batch server
|
7
7
|
# @example OSC's Oakley batch server
|
8
8
|
# my_conn.host #=> "oak-batch.osc.edu"
|
@@ -99,7 +99,7 @@ class OodCore::Job::Adapters::Torque
|
|
99
99
|
# @return [Hash] status info for batch server
|
100
100
|
def get_status(filters: [])
|
101
101
|
connect do |cid|
|
102
|
-
filters = Attrl.from_list filters
|
102
|
+
filters = FFI::Attrl.from_list filters
|
103
103
|
batch_status = FFI.pbs_statserver cid, filters, nil
|
104
104
|
batch_status.to_h.tap { FFI.pbs_statfree batch_status }
|
105
105
|
end
|
@@ -125,7 +125,7 @@ class OodCore::Job::Adapters::Torque
|
|
125
125
|
# @return [Hash] hash of details for the queues
|
126
126
|
def get_queues(id: '', filters: [])
|
127
127
|
connect do |cid|
|
128
|
-
filters = Attrl.from_list(filters)
|
128
|
+
filters = FFI::Attrl.from_list(filters)
|
129
129
|
batch_status = FFI.pbs_statque cid, id.to_s, filters, nil
|
130
130
|
batch_status.to_h.tap { FFI.pbs_statfree batch_status }
|
131
131
|
end
|
@@ -168,7 +168,7 @@ class OodCore::Job::Adapters::Torque
|
|
168
168
|
# @return [Hash] hash of details for nodes
|
169
169
|
def get_nodes(id: '', filters: [])
|
170
170
|
connect do |cid|
|
171
|
-
filters = Attrl.from_list(filters)
|
171
|
+
filters = FFI::Attrl.from_list(filters)
|
172
172
|
batch_status = FFI.pbs_statnode cid, id.to_s, filters, nil
|
173
173
|
batch_status.to_h.tap { FFI.pbs_statfree batch_status }
|
174
174
|
end
|
@@ -213,7 +213,7 @@ class OodCore::Job::Adapters::Torque
|
|
213
213
|
#
|
214
214
|
def select_jobs(attribs: [])
|
215
215
|
connect do |cid|
|
216
|
-
attribs = Attropl.from_list(attribs.map(&:to_h))
|
216
|
+
attribs = FFI::Attropl.from_list(attribs.map(&:to_h))
|
217
217
|
batch_status = FFI.pbs_selstat cid, attribs, nil
|
218
218
|
batch_status.to_h.tap { FFI.pbs_statfree batch_status }
|
219
219
|
end
|
@@ -377,7 +377,7 @@ class OodCore::Job::Adapters::Torque
|
|
377
377
|
end
|
378
378
|
|
379
379
|
connect do |cid|
|
380
|
-
attropl = Attropl.from_list attribs
|
380
|
+
attropl = FFI::Attropl.from_list attribs
|
381
381
|
FFI.pbs_submit cid, attropl, script, queue, nil
|
382
382
|
end
|
383
383
|
end
|
data/lib/ood_core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ood_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Nicklas
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-12-
|
12
|
+
date: 2018-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ood_support
|
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
195
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.
|
196
|
+
rubygems_version: 2.7.3
|
197
197
|
signing_key:
|
198
198
|
specification_version: 4
|
199
199
|
summary: Open OnDemand core library
|