ood_core 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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