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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b683439945311b9ec37061a7b52e318fce62c1b8
4
- data.tar.gz: 84fed35c58484b25c42031c90e2ba00941ff23b9
2
+ SHA256:
3
+ metadata.gz: 948be1edf24a4e534669547d92b6ad56cc229183442a27705941bd959085a09a
4
+ data.tar.gz: 700a6c5073641233ac36553350d4ab451e0b01d73f885bc7bd2695b81479b6fa
5
5
  SHA512:
6
- metadata.gz: 21a3e7219b482d0174afabbd5d9c56a966efcf30525e8cba7dafd0703aa39596df0c80cab3c81c23dd38d754390c897115f5db70da19df7e408eac1a05c699eb
7
- data.tar.gz: 7e3dc186e839286882fbf2e74e93ad00cf58c2036fc077b2e30c4df797f54962042bdeeea881649242dfaf179ee5252e7c1e6b165ee35a518e9b98b81bf2c531
6
+ metadata.gz: fcc1aa968fe78132164a5ba3ab6e6165f1f64b950ca1e3862b00020aec9915c1458e52897005a0057b6ca4d9205c3b463f8f9b421e85f9da75778fe27734b371
7
+ data.tar.gz: 74af322ccb4e8f50c350d190bacc65440fb3ab79791a4cb03f5d081131a0d72ad186f43b647621d57053f4da717a59cd9efae9f8cb7c6c377b34ec4563faf100
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.2.2
4
+ - 2.4.1
5
5
  before_install: gem install bundler -v 1.7.8
6
6
  notifications:
7
7
  email:
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.6.0...HEAD
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, :sge_root, :helper
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 = config.key?(:sge_root) && config[:sge_root] ? Pathname.new(config[:sge_root]) : nil
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
- load_drmaa(config[:libdrmaa_path]) if sge_root
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 @sge_root is nil or libdrmaa is not loaded then we cannot use DRMAA. Using
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
- job_hash[:status] = get_status_from_drmma(job_id) if can_use_drmaa?
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
- sge_root && Object.const_defined?('DRMAA')
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
- # Object used for simplified communication with a batch server
5
- class Batch
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
@@ -1,7 +1,8 @@
1
1
  require 'ffi'
2
2
 
3
+ # An interface to the C-library of Torque
3
4
  class OodCore::Job::Adapters::Torque::FFI
4
- # An interface to the C-library of Torque
5
+
5
6
  extend ::FFI::Library
6
7
 
7
8
  # @!attribute [rw] self.pbs_errno
@@ -1,4 +1,4 @@
1
1
  module OodCore
2
2
  # The current version of {OodCore}
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
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.6.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-19 00:00:00.000000000 Z
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.6.11
196
+ rubygems_version: 2.7.3
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Open OnDemand core library