ood_core 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/ood_core.rb +0 -1
- data/lib/ood_core/job/adapters/torque.rb +0 -14
- data/lib/ood_core/job/script.rb +1 -22
- data/lib/ood_core/version.rb +1 -1
- metadata +2 -3
- data/lib/ood_core/job/node_request.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cf4709dc9c8753f8229ae67403a0498e9cb8602
|
4
|
+
data.tar.gz: 2f555177a357923753dc246aa4c56811349d4b74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 702a25970cf24f9cda29e2adbd57c64003fc3cc60cc07b1da89f2d1c4bb5fb3153e688081c58139fd8ba7cb5623f6a08e16cbbf13737ee61194d1aafcb3d5a8a
|
7
|
+
data.tar.gz: ff5b02ee6b00d43b14568ad91768fcd8b1c8bde7166c112b2df215702bb1f7632e0e154e1954bb974ed1a3e1c71736e3f2aa88385d1d8563e20ab2759ea45ab7
|
data/CHANGELOG.md
CHANGED
data/lib/ood_core.rb
CHANGED
@@ -103,12 +103,6 @@ module OodCore
|
|
103
103
|
resources = {}
|
104
104
|
resources.merge!(mem: "#{script.min_phys_memory}KB") unless script.min_phys_memory.nil?
|
105
105
|
resources.merge!(walltime: seconds_to_duration(script.wall_time)) unless script.wall_time.nil?
|
106
|
-
if script.nodes && !script.nodes.empty?
|
107
|
-
# Reduce an array to unique objects with count
|
108
|
-
# ["a", "a", "b"] #=> {"a" => 2, "b" => 1}
|
109
|
-
nodes = script.nodes.group_by {|v| v}.each_with_object({}) {|(k, v), h| h[k] = v.size}
|
110
|
-
resources.merge!(nodes: nodes.map {|k, v| k.is_a?(NodeRequest) ? node_request_to_str(k, v) : k }.join('+'))
|
111
|
-
end
|
112
106
|
|
113
107
|
# Set environment variables
|
114
108
|
envvars = script.job_environment || {}
|
@@ -239,14 +233,6 @@ module OodCore
|
|
239
233
|
end
|
240
234
|
end
|
241
235
|
|
242
|
-
# Convert a NodeRequest object to a valid Torque string
|
243
|
-
def node_request_to_str(node, cnt)
|
244
|
-
str = cnt.to_s
|
245
|
-
str += ":ppn=#{node.procs}" if node.procs
|
246
|
-
str += ":#{node.properties.join(':')}" if node.properties
|
247
|
-
str
|
248
|
-
end
|
249
|
-
|
250
236
|
# Parse hash describing PBS job status
|
251
237
|
def parse_job_info(k, v)
|
252
238
|
/^(?<job_owner>[\w-]+)@/ =~ v[:Job_Owner]
|
data/lib/ood_core/job/script.rb
CHANGED
@@ -100,24 +100,6 @@ module OodCore
|
|
100
100
|
# @return [String, nil] accounting id
|
101
101
|
attr_reader :accounting_id
|
102
102
|
|
103
|
-
# Node or list of nodes detailing the specifications the job should run on
|
104
|
-
# @example Job to run on a list of defined nodes
|
105
|
-
# my_script.nodes
|
106
|
-
# #=> ["n0001", "n0002", "n0003"]
|
107
|
-
# @example Job to run on 2 nodes with 12 procs per node
|
108
|
-
# my_script.nodes
|
109
|
-
# #=> [
|
110
|
-
# # #<OodCore::Job::NodeRequest procs=12, properties={}>,
|
111
|
-
# # #<OodCore::Job::NodeRequest procs=12, properties={}>
|
112
|
-
# # ]
|
113
|
-
# @example Create job script that will run on 100 nodes with 20 procs per node
|
114
|
-
# OodCore::Job::Script.new(
|
115
|
-
# script: Pathname.new('/path/to/script'),
|
116
|
-
# nodes: [OodCore::Job::NodeRequest.new(procs: 20)] * 100
|
117
|
-
# )
|
118
|
-
# @return [Array<String, NodeRequest>, nil] list of nodes
|
119
|
-
attr_reader :nodes
|
120
|
-
|
121
103
|
# Object detailing any native specifications that are implementation specific
|
122
104
|
# @note Should not be used at all costs.
|
123
105
|
# @return [Object, nil] native specifications
|
@@ -144,7 +126,6 @@ module OodCore
|
|
144
126
|
# @param start_time [#to_i, nil] eligible start time
|
145
127
|
# @param wall_time [#to_i, nil] max real time
|
146
128
|
# @param accounting_id [#to_s, nil] accounting id
|
147
|
-
# @param nodes [#to_h, #to_s, Array<#to_h, #to_s>, nil] list of nodes
|
148
129
|
# @param native [Object, nil] native specifications
|
149
130
|
def initialize(content:, args: nil, submit_as_hold: nil, rerunnable: nil,
|
150
131
|
job_environment: nil, workdir: nil, email: nil,
|
@@ -152,7 +133,7 @@ module OodCore
|
|
152
133
|
input_path: nil, output_path: nil, error_path: nil,
|
153
134
|
join_files: nil, reservation_id: nil, queue_name: nil,
|
154
135
|
priority: nil, min_phys_memory: nil, start_time: nil,
|
155
|
-
wall_time: nil, accounting_id: nil,
|
136
|
+
wall_time: nil, accounting_id: nil, native: nil,
|
156
137
|
**_)
|
157
138
|
@content = content.to_s
|
158
139
|
|
@@ -177,7 +158,6 @@ module OodCore
|
|
177
158
|
@start_time = start_time && Time.at(start_time.to_i)
|
178
159
|
@wall_time = wall_time && wall_time.to_i
|
179
160
|
@accounting_id = accounting_id && accounting_id.to_s
|
180
|
-
@nodes = nodes && Array.wrap(nodes).map { |n| n.respond_to?(:to_h) ? NodeRequest.new(n.to_h) : n.to_s }
|
181
161
|
@native = native
|
182
162
|
end
|
183
163
|
|
@@ -206,7 +186,6 @@ module OodCore
|
|
206
186
|
start_time: start_time,
|
207
187
|
wall_time: wall_time,
|
208
188
|
accounting_id: accounting_id,
|
209
|
-
nodes: nodes,
|
210
189
|
native: native
|
211
190
|
}
|
212
191
|
end
|
data/lib/ood_core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ood_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Nicklas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ood_support
|
@@ -148,7 +148,6 @@ files:
|
|
148
148
|
- lib/ood_core/job/factory.rb
|
149
149
|
- lib/ood_core/job/info.rb
|
150
150
|
- lib/ood_core/job/node_info.rb
|
151
|
-
- lib/ood_core/job/node_request.rb
|
152
151
|
- lib/ood_core/job/script.rb
|
153
152
|
- lib/ood_core/job/status.rb
|
154
153
|
- lib/ood_core/refinements/array_extensions.rb
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'ood_core/refinements/array_extensions'
|
2
|
-
|
3
|
-
module OodCore
|
4
|
-
module Job
|
5
|
-
# An object that describes a request for a node when submitting a job
|
6
|
-
class NodeRequest
|
7
|
-
using Refinements::ArrayExtensions
|
8
|
-
|
9
|
-
# Number of processors usable by job
|
10
|
-
# @return [Fixnum, nil] number of procs
|
11
|
-
attr_reader :procs
|
12
|
-
|
13
|
-
# List of properties required by job
|
14
|
-
# @return [Array<String>, nil] list of properties
|
15
|
-
attr_reader :properties
|
16
|
-
|
17
|
-
# @param procs [#to_i, nil] number of procs
|
18
|
-
# @param properties [#to_s, Array<#to_s>, nil] list of properties
|
19
|
-
def initialize(procs: nil, properties: nil, **_)
|
20
|
-
@procs = procs && procs.to_i
|
21
|
-
@properties = properties && Array.wrap(properties).map(&:to_s)
|
22
|
-
end
|
23
|
-
|
24
|
-
# Convert object to hash
|
25
|
-
# @return [Hash] object as hash
|
26
|
-
def to_h
|
27
|
-
{ procs: procs, properties: properties }
|
28
|
-
end
|
29
|
-
|
30
|
-
# The comparison operator
|
31
|
-
# @param other [#to_h] object to compare against
|
32
|
-
# @return [Boolean] whether objects are equivalent
|
33
|
-
def ==(other)
|
34
|
-
to_h == other.to_h
|
35
|
-
end
|
36
|
-
|
37
|
-
# Whether objects are identical to each other
|
38
|
-
# @param other [#to_h] object to compare against
|
39
|
-
# @return [Boolean] whether objects are identical
|
40
|
-
def eql?(other)
|
41
|
-
self.class == other.class && self == other
|
42
|
-
end
|
43
|
-
|
44
|
-
# Generate a hash value for this object
|
45
|
-
# @return [Fixnum] hash value of object
|
46
|
-
def hash
|
47
|
-
[self.class, to_h].hash
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|