ood_core 0.1.1 → 0.2.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 +4 -4
- data/CHANGELOG.md +21 -19
- data/lib/ood_core/batch_connect/template.rb +56 -26
- data/lib/ood_core/job/adapters/slurm.rb +15 -13
- data/lib/ood_core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 459b58d5f136ce29268fe40b8eaf470de62e2784
|
4
|
+
data.tar.gz: d63226217007a7b7a269561b45a3bbc655e83c57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d15a23ba546a7c1ca4fd6dd6ef2f652e11f9eadfd3ae81c92b71649c04a380c5c282c5628a7b6aa571aaa42180b54e68cabce7bf0d6ebaf164588f26c7abebc
|
7
|
+
data.tar.gz: 4736fcd7049e7c99f3587f936b98afd45cc1fc3f7ec110a28f788e1cc1421ad9e24e2ee034df78e836cb0e7902b0a6041dff6611fce9e362fa1dbb406d4445e2
|
data/CHANGELOG.md
CHANGED
@@ -7,25 +7,39 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
-
## [0.
|
10
|
+
## [0.2.0] - 2017-10-11
|
11
|
+
### Added
|
12
|
+
- Added Batch Connect helper function to wait for port to be used.
|
13
|
+
[#57](https://github.com/OSC/ood_core/issues/57)
|
14
|
+
- Can include Batch Connect helper functions when writing to files or running
|
15
|
+
remote code. [#58](https://github.com/OSC/ood_core/issues/58)
|
16
|
+
- The Batch Connect helper functions are now available to use in the forked
|
17
|
+
Batch Connect main script. [#59](https://github.com/OSC/ood_core/issues/59)
|
18
|
+
- The `host` and `port` environment variables are now available to use in the
|
19
|
+
forked Batch Connect main script.
|
20
|
+
[#60](https://github.com/OSC/ood_core/issues/60)
|
11
21
|
|
12
22
|
### Fixed
|
23
|
+
- Fixed a bug with the `nc` command used in the Batch Connect helper functions
|
24
|
+
for CentOS 7. [#55](https://github.com/OSC/ood_core/issues/55)
|
25
|
+
- Fixed not correctly detecting open ports for specific ip address in Batch
|
26
|
+
Connect helper functions. [#56](https://github.com/OSC/ood_core/issues/56)
|
27
|
+
- Fixed a bug when parsing nodes in the Slurm adapter.
|
28
|
+
[#54](https://github.com/OSC/ood_core/issues/54)
|
13
29
|
|
30
|
+
## [0.1.1] - 2017-09-08
|
31
|
+
### Fixed
|
14
32
|
- fix crash when calling `Adapters::Lsf#info(id:)` with "invalid" id
|
15
33
|
- optimize `Adapters::Lsf#info_where_owner` by using `bjobs -u $USER` when a single user is specified
|
16
34
|
|
17
35
|
## [0.1.0] - 2017-07-17
|
18
|
-
|
19
36
|
### Changed
|
20
|
-
|
21
37
|
- Setting the host in a batch_connect batch script can now be directly
|
22
38
|
manipulated through the `set_host` initialization parameter.
|
23
39
|
[#42](https://github.com/OSC/ood_core/issues/42)
|
24
40
|
|
25
41
|
## [0.0.5] - 2017-07-05
|
26
|
-
|
27
42
|
### Added
|
28
|
-
|
29
43
|
- Add wallclock time limit to `OodCore::Job::Info` object.
|
30
44
|
- Add further support for the LSF adapter.
|
31
45
|
- Add a new Batch Connect template feature that builds batch scripts to launch
|
@@ -34,57 +48,45 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
34
48
|
- Add method to filter list of batch jobs for a given owner or owners.
|
35
49
|
|
36
50
|
### Changed
|
37
|
-
|
38
51
|
- Torque adapter provides nodes/procs info if available for non-running jobs.
|
39
52
|
- Slurm adapter provides node info if available for non-running jobs.
|
40
53
|
- Changed the `CHANGELOG.md` formatting.
|
41
54
|
|
42
55
|
### Removed
|
43
|
-
|
44
56
|
- Remove deprecated tests for the Slurm adapter.
|
45
57
|
|
46
58
|
### Fixed
|
47
|
-
|
48
59
|
- Fix parsing bjobs output for LSF 9.1, which has extra SLOTS column.
|
49
60
|
|
50
61
|
## [0.0.4] - 2017-05-17
|
51
|
-
|
52
62
|
### Changed
|
53
|
-
|
54
63
|
- By default all PBS jobs output stdout & stderr to output path unless an error
|
55
64
|
path is specified (mimics behavior of Slurm and LSF)
|
56
65
|
|
57
66
|
### Removed
|
58
|
-
|
59
67
|
- Remove `OodCore::Job::Script#min_phys_memory` due to lack of commonality
|
60
68
|
across resource managers.
|
61
69
|
- Remove `OodCore::Job::Script#join_files` due to lack of support in resource
|
62
70
|
managers.
|
63
71
|
|
64
72
|
## [0.0.3] - 2017-04-28
|
65
|
-
|
66
73
|
### Added
|
67
|
-
|
68
74
|
- Provide support for Slurm conf file.
|
69
75
|
|
70
76
|
### Fixed
|
71
|
-
|
72
77
|
- Correct code documentation for `Script#min_phys_memory`.
|
73
78
|
- Add fix for login feature being allowed on all clusters even if not defined.
|
74
79
|
|
75
80
|
## [0.0.2] - 2017-04-27
|
76
|
-
|
77
81
|
### Removed
|
78
|
-
|
79
82
|
- Remove the `OodCore::Job::NodeRequest` object.
|
80
83
|
|
81
84
|
## 0.0.1 - 2017-04-17
|
82
|
-
|
83
85
|
### Added
|
84
|
-
|
85
86
|
- Initial release!
|
86
87
|
|
87
|
-
[Unreleased]: https://github.com/OSC/ood_core/compare/v0.
|
88
|
+
[Unreleased]: https://github.com/OSC/ood_core/compare/v0.2.0...HEAD
|
89
|
+
[0.2.0]: https://github.com/OSC/ood_core/compare/v0.1.1...v0.2.0
|
88
90
|
[0.1.1]: https://github.com/OSC/ood_core/compare/v0.1.0...v0.1.1
|
89
91
|
[0.1.0]: https://github.com/OSC/ood_core/compare/v0.0.5...v0.1.0
|
90
92
|
[0.0.5]: https://github.com/OSC/ood_core/compare/v0.0.4...v0.0.5
|
@@ -94,31 +94,56 @@ module OodCore
|
|
94
94
|
passwd_size = context.fetch(:passwd_size, 32).to_i
|
95
95
|
|
96
96
|
<<-EOT.gsub(/^ {14}/, '')
|
97
|
-
#
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
97
|
+
# Source in all the helper functions
|
98
|
+
source_helpers () {
|
99
|
+
# Generate random integer in range [$1..$2]
|
100
|
+
random_number () {
|
101
|
+
shuf -i ${1}-${2} -n 1
|
102
|
+
}
|
103
|
+
export -f random_number
|
104
|
+
|
105
|
+
# Check if port $1 is in use
|
106
|
+
port_used () {
|
107
|
+
local port="${1#*:}"
|
108
|
+
local host=$(expr "${1}" : '\\(.*\\):' || echo "localhost")
|
109
|
+
nc -w 2 "${host}" "${port}" < /dev/null &> /dev/null
|
110
|
+
}
|
111
|
+
export -f port_used
|
112
|
+
|
113
|
+
# Find available port in range [$2..$3] for host $1
|
114
|
+
# Default: [#{min_port}..#{max_port}]
|
115
|
+
find_port () {
|
116
|
+
local host="${1:-localhost}"
|
117
|
+
local port=$(random_number "${2:-#{min_port}}" "${3:-#{max_port}}")
|
118
|
+
while port_used "${host}:${port}"; do
|
119
|
+
port=$(random_number "${2:-#{min_port}}" "${3:-#{max_port}}")
|
120
|
+
done
|
121
|
+
echo "${port}"
|
122
|
+
}
|
123
|
+
export -f find_port
|
124
|
+
|
125
|
+
# Wait $2 seconds until port $1 is in use
|
126
|
+
# Default: wait 30 seconds
|
127
|
+
wait_until_port_used () {
|
128
|
+
local port="${1}"
|
129
|
+
local time="${2:-30}"
|
130
|
+
for ((i=1; i<=time*2; i++)); do
|
131
|
+
if port_used "${port}"; then
|
132
|
+
return 0
|
133
|
+
fi
|
134
|
+
sleep 0.5
|
135
|
+
done
|
136
|
+
return 1
|
137
|
+
}
|
138
|
+
export -f wait_until_port_used
|
139
|
+
|
140
|
+
# Generate random alphanumeric password with $1 (default: #{passwd_size}) characters
|
141
|
+
create_passwd () {
|
142
|
+
tr -cd '[:alnum:]' < /dev/urandom 2> /dev/null | head -c${1:-#{passwd_size}}
|
143
|
+
}
|
144
|
+
export -f create_passwd
|
121
145
|
}
|
146
|
+
export -f source_helpers
|
122
147
|
EOT
|
123
148
|
end.to_s
|
124
149
|
end
|
@@ -173,8 +198,12 @@ module OodCore
|
|
173
198
|
<<-EOT.gsub(/^ {12}/, '')
|
174
199
|
cd #{work_dir}
|
175
200
|
|
201
|
+
# Export useful connection variables
|
202
|
+
export host
|
203
|
+
export port
|
204
|
+
|
176
205
|
# Generate a connection yaml file with given parameters
|
177
|
-
|
206
|
+
create_yml () {
|
178
207
|
echo "Generating connection YAML file..."
|
179
208
|
(
|
180
209
|
umask 077
|
@@ -183,7 +212,7 @@ module OodCore
|
|
183
212
|
}
|
184
213
|
|
185
214
|
# Cleanliness is next to Godliness
|
186
|
-
|
215
|
+
clean_up () {
|
187
216
|
echo "Cleaning up..."
|
188
217
|
#{clean_script.gsub(/\n(?=[^\s])/, "\n ")}
|
189
218
|
pkill -P $$
|
@@ -191,6 +220,7 @@ module OodCore
|
|
191
220
|
}
|
192
221
|
|
193
222
|
#{bash_helpers}
|
223
|
+
source_helpers
|
194
224
|
|
195
225
|
# Set host of current machine
|
196
226
|
#{set_host}
|
@@ -430,21 +430,23 @@ module OodCore
|
|
430
430
|
# Convert host list string to individual nodes
|
431
431
|
# "em082"
|
432
432
|
# "em[014,055-056,161]"
|
433
|
-
# "
|
433
|
+
# "c457-[011-012]"
|
434
|
+
# "c438-[062,104]"
|
435
|
+
# "c427-032,c429-002"
|
434
436
|
def parse_nodes(node_list)
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
437
|
+
node_list.to_s.scan(/([^,\[]+)(?:\[([^\]]+)\])?/).map do |prefix, range|
|
438
|
+
if range
|
439
|
+
range.split(",").map do |x|
|
440
|
+
x =~ /^(\d+)-(\d+)$/ ? ($1..$2).to_a : x
|
441
|
+
end.flatten.map do |n|
|
442
|
+
{ name: prefix + n, procs: nil }
|
443
|
+
end
|
444
|
+
elsif prefix
|
445
|
+
[ { name: prefix, procs: nil } ]
|
446
|
+
else
|
447
|
+
[]
|
442
448
|
end
|
443
|
-
|
444
|
-
[ { name: prefix, procs: nil } ]
|
445
|
-
else
|
446
|
-
[]
|
447
|
-
end
|
449
|
+
end.flatten
|
448
450
|
end
|
449
451
|
|
450
452
|
# Determine state from Slurm state code
|
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.
|
4
|
+
version: 0.2.0
|
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-
|
11
|
+
date: 2017-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ood_support
|