pbs 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +197 -13
- data/lib/pbs.rb +2 -31
- data/lib/pbs/attributes.rb +7 -8
- data/lib/pbs/batch.rb +334 -0
- data/lib/pbs/torque.rb +180 -62
- data/lib/pbs/version.rb +2 -1
- data/pbs.gemspec +3 -2
- metadata +12 -16
- data/config/batch.yml +0 -24
- data/config/websvcs02.osc.edu.yml +0 -24
- data/config/websvcs08.osc.edu.yml +0 -18
- data/examples/simplejob.rb +0 -66
- data/lib/pbs/conn.rb +0 -75
- data/lib/pbs/job.rb +0 -189
- data/lib/pbs/query.rb +0 -103
data/lib/pbs/torque.rb
CHANGED
@@ -1,73 +1,190 @@
|
|
1
|
-
require
|
1
|
+
require 'ffi'
|
2
2
|
|
3
3
|
module PBS
|
4
|
+
# An interface to the C-library of Torque
|
4
5
|
module Torque
|
5
6
|
extend FFI::Library
|
6
7
|
|
7
|
-
#
|
8
|
-
|
9
|
-
|
8
|
+
# @!attribute [rw] self.pbs_errno
|
9
|
+
# The internal PBS error number
|
10
|
+
# int pbs_errno
|
11
|
+
# @return [Fixnum] pbs error number
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
# @!attribute [r] self.pbs_server
|
14
|
+
# The PBS server name
|
15
|
+
# char *pbs_server
|
16
|
+
# @return [String] pbs server name
|
13
17
|
|
14
|
-
|
15
|
-
|
18
|
+
# @!method self.pbs_strerror(errno)
|
19
|
+
# Generates PBS error string from given error number
|
20
|
+
# char *pbs_strerror(int errno)
|
21
|
+
# @param errno [Fixnum] pbs error number
|
22
|
+
# @return [String] pbs error string
|
16
23
|
|
17
|
-
|
18
|
-
|
24
|
+
# @!method self.pbs_default
|
25
|
+
# Default PBS server name
|
26
|
+
# char *pbs_default(void)
|
27
|
+
# @see http://linux.die.net/man/3/pbs_default
|
28
|
+
# @return [String] default pbs server name
|
19
29
|
|
20
|
-
|
21
|
-
|
30
|
+
# @!method self.pbs_connect(server)
|
31
|
+
# Connect to PBS batch server
|
32
|
+
# int pbs_connect(char *server)
|
33
|
+
# @see http://linux.die.net/man/3/pbs_connect
|
34
|
+
# @param server [String] name of pbs server
|
35
|
+
# @return [Fixnum] connection identifier
|
22
36
|
|
23
|
-
|
24
|
-
|
37
|
+
# @!method self.pbs_disconnect(connect)
|
38
|
+
# Disconnect from a PBS batch server
|
39
|
+
# int pbs_disconnect(int connect)
|
40
|
+
# @see http://linux.die.net/man/3/pbs_disconnect
|
41
|
+
# @param connect [Fixnum] connection identifier
|
42
|
+
# @return [Fixnum] exit status code
|
25
43
|
|
26
|
-
|
27
|
-
|
44
|
+
# @!method self.pbs_deljob(connect, job_id, extend)
|
45
|
+
# Delete a PBS batch job
|
46
|
+
# int pbs_deljob(int connect, char *job_id, char *extend)
|
47
|
+
# @see http://linux.die.net/man/3/pbs_deljob
|
48
|
+
# @param connect [Fixnum] connection identifier
|
49
|
+
# @param job_id [String] the job id
|
50
|
+
# @param extend [String] implementation defined extensions
|
51
|
+
# @return [Fixnum] exit status code
|
28
52
|
|
29
|
-
|
30
|
-
|
53
|
+
# @!method self.pbs_holdjob(connect, job_id, hold_type, extend)
|
54
|
+
# Place a hold on a PBS batch job
|
55
|
+
# int pbs_holdjob(int connect, char *job_id, char *hold_type, char *extend)
|
56
|
+
# @see http://linux.die.net/man/3/pbs_holdjob
|
57
|
+
# @param connect [Fixnum] connection identifier
|
58
|
+
# @param job_id [String] the job id
|
59
|
+
# @param hold_type [String] type of hold to be applied
|
60
|
+
# @param extend [String] implementation defined extensions
|
61
|
+
# @return [Fixnum] exit status code
|
31
62
|
|
32
|
-
|
33
|
-
|
63
|
+
# @!method self.pbs_rlsjob(connect, job_id, hold_type, extend)
|
64
|
+
# Release a hold on a PBS batch job
|
65
|
+
# int pbs_rlsjob(int connect, char *job_id, char *hold_type, char *extend)
|
66
|
+
# @see http://linux.die.net/man/3/pbs_rlsjob
|
67
|
+
# @param connect [Fixnum] connection identifier
|
68
|
+
# @param job_id [String] the job id
|
69
|
+
# @param hold_type [String] type of hold to be released
|
70
|
+
# @param extend [String] implementation defined extensions
|
71
|
+
# @return [Fixnum] exit status code
|
34
72
|
|
35
|
-
|
36
|
-
|
73
|
+
# @!method self.pbs_statfree(stat)
|
74
|
+
# Free the memory allocated by {BatchStatus} object
|
75
|
+
# void pbs_statfree(struct batch_status *stat)
|
76
|
+
# @param stat [BatchStatus] the batch status object
|
77
|
+
# @return [void]
|
37
78
|
|
38
|
-
|
39
|
-
|
79
|
+
# @!method self.pbs_statjob(connect, id, attrib, extend)
|
80
|
+
# Obtain status of PBS batch jobs
|
81
|
+
# batch_status * pbs_statjob(int connect, char *id, struct attrl *attrib, char *extend)
|
82
|
+
# @see http://linux.die.net/man/3/pbs_statjob
|
83
|
+
# @param connect [Fixnum] connection identifier
|
84
|
+
# @param id [String] job or destination identifier
|
85
|
+
# @param attrib [Attrl] the attribute c-linked list object
|
86
|
+
# @param extend [String] implementation defined extensions
|
87
|
+
# @return [BatchStatus] c-linked list of batch status objects
|
88
|
+
# @note It is up to the user to free the space of the batch status objects
|
40
89
|
|
41
|
-
|
42
|
-
|
90
|
+
# @!method self.pbs_statnode(connect, id, attrib, extend)
|
91
|
+
# Obtain status of PBS nodes
|
92
|
+
# batch_status * pbs_statnode(int connect, char *id, struct attrl *attrib, char *extend)
|
93
|
+
# @see http://linux.die.net/man/3/pbs_statnode
|
94
|
+
# @param connect [Fixnum] connection identifier
|
95
|
+
# @param id [String] name of a node or null string
|
96
|
+
# @param attrib [Attrl] the attribute c-linked list object
|
97
|
+
# @param extend [String] implementation defined extensions
|
98
|
+
# @return [BatchStatus] c-linked list of batch status objects
|
99
|
+
# @note It is up to the user to free the space of the batch status objects
|
43
100
|
|
44
|
-
|
45
|
-
|
101
|
+
# @!method self.pbs_statque(connect, id, attrib, extend)
|
102
|
+
# Obtain status of PBS batch queues
|
103
|
+
# batch_status * pbs_statque(int connect, char *id, struct attrl *attrib, char *extend)
|
104
|
+
# @see http://linux.die.net/man/3/pbs_statque
|
105
|
+
# @param connect [Fixnum] connection identifier
|
106
|
+
# @param id [String] name of a queue or null string
|
107
|
+
# @param attrib [Attrl] the attribute c-linked list object
|
108
|
+
# @param extend [String] implementation defined extensions
|
109
|
+
# @return [BatchStatus] c-linked list of batch status objects
|
110
|
+
# @note It is up to the user to free the space of the batch status objects
|
46
111
|
|
47
|
-
|
48
|
-
|
112
|
+
# @!method self.pbs_statserver(connect, attrib, extend)
|
113
|
+
# Obtain status of a PBS batch server
|
114
|
+
# batch_status * pbs_statserver(int connect, struct attrl *attrib, char *extend)
|
115
|
+
# @see http://linux.die.net/man/3/pbs_statserver
|
116
|
+
# @param connect [Fixnum] connection identifier
|
117
|
+
# @param attrib [Attrl] the attribute c-linked list object
|
118
|
+
# @param extend [String] implementation defined extensions
|
119
|
+
# @return [BatchStatus] c-linked list of batch status objects
|
120
|
+
# @note It is up to the user to free the space of the batch status objects
|
49
121
|
|
50
|
-
|
51
|
-
|
122
|
+
# @!method self.pbs_submit(connect, attrib, script, destination, extend)
|
123
|
+
# Submit a PBS batch job
|
124
|
+
# char *pbs_submit(int connect, struct attropl *attrib, char *script, char *destination, char *extend)
|
125
|
+
# @see http://linux.die.net/man/3/pbs_submit
|
126
|
+
# @param connect [Fixnum] connection identifier
|
127
|
+
# @param attrib [Attropl] the attribute operation c-linked list object
|
128
|
+
# @param script [String] the path to the script
|
129
|
+
# @param destination [String] the queue to send job to
|
130
|
+
# @param extend [String] implementation defined extensions
|
131
|
+
# @return [String] the job id
|
52
132
|
|
53
|
-
|
54
|
-
|
133
|
+
# The path to the torque library file
|
134
|
+
# @return [String] path to torque library
|
135
|
+
def self.lib
|
136
|
+
@lib
|
137
|
+
end
|
138
|
+
|
139
|
+
# Define torque methods using a supplied library
|
140
|
+
# @param lib [#to_s, nil] path to library file
|
141
|
+
# @return [void]
|
142
|
+
def self.lib=(lib)
|
143
|
+
@lib = lib ? lib.to_s : 'torque'
|
55
144
|
|
56
|
-
#
|
57
|
-
|
145
|
+
# Set up FFI to use this library
|
146
|
+
ffi_lib @lib
|
147
|
+
|
148
|
+
attach_variable :pbs_errno, :int
|
149
|
+
attach_variable :pbs_server, :string
|
150
|
+
attach_function :pbs_strerror, [ :int ], :string
|
151
|
+
attach_function :pbs_default, [], :string
|
152
|
+
attach_function :pbs_connect, [ :string ], :int
|
153
|
+
attach_function :pbs_disconnect, [ :int ], :int
|
154
|
+
attach_function :pbs_deljob, [ :int, :string, :string ], :int
|
155
|
+
attach_function :pbs_holdjob, [ :int, :string, :string, :string ], :int
|
156
|
+
attach_function :pbs_rlsjob, [ :int, :string, :string, :string ], :int
|
157
|
+
attach_function :pbs_statfree, [ BatchStatus.ptr ], :void
|
158
|
+
attach_function :pbs_statjob, [ :int, :string, Attrl.ptr, :string ], BatchStatus.ptr
|
159
|
+
attach_function :pbs_statnode, [ :int, :string, Attrl.ptr, :string ], BatchStatus.ptr
|
160
|
+
attach_function :pbs_statque, [ :int, :string, Attrl.ptr, :string ], BatchStatus.ptr
|
161
|
+
attach_function :pbs_statserver, [ :int, Attrl.ptr, :string ], BatchStatus.ptr
|
162
|
+
|
163
|
+
# FIXME: The space for the job_identifier string is allocated by
|
164
|
+
# pbs_submit() and should be released via a call to free() when no longer
|
165
|
+
# needed
|
166
|
+
attach_function :pbs_submit, [ :int, Attropl.ptr, :string, :string, :string ], :string
|
58
167
|
end
|
59
168
|
|
169
|
+
# Check for any errors set in the errno
|
170
|
+
# @return [void]
|
60
171
|
def self.check_for_error
|
61
172
|
errno = pbs_errno
|
62
173
|
self.pbs_errno = 0 # reset error number
|
63
174
|
raise_error(errno) if errno > 0
|
64
175
|
end
|
65
176
|
|
177
|
+
# For a given errno, raise the corresponding error with error message
|
178
|
+
# @param errno [Fixnum] the error number
|
179
|
+
# @raise [Error] if errno is not 0
|
180
|
+
# @return [void]
|
66
181
|
def self.raise_error(errno)
|
67
182
|
raise (ERROR_CODES[errno] || PBS::Error), "#{pbs_strerror(errno)}"
|
68
183
|
end
|
69
184
|
|
185
|
+
#
|
70
186
|
# Data structures defined in pbs_ifl.h
|
187
|
+
#
|
71
188
|
|
72
189
|
# Enum for Batch Operation
|
73
190
|
BatchOp = enum(:set, :unset, :incr, :decr, :eq, :ne, :ge, :gt, :le, :lt, :dflt, :merge, :incr_old)
|
@@ -80,34 +197,31 @@ module PBS
|
|
80
197
|
:value, :pointer, # string for value of attribute
|
81
198
|
:op, BatchOp # not used in an Attrl object
|
82
199
|
|
200
|
+
# Given an array of attribute names convert it to {Attrl} C-linked list
|
201
|
+
# @param list [Array<Symbol>] list of attribute names
|
202
|
+
# @return [Attrl] generated attribute c-linked list object
|
83
203
|
def self.from_list(list)
|
84
204
|
attrl = nil
|
85
205
|
prev = Attrl.new(FFI::Pointer::NULL)
|
86
206
|
list.each do |key|
|
87
207
|
attrl = Attrl.new
|
88
208
|
attrl[:name] = FFI::MemoryPointer.from_string(key.to_s)
|
89
|
-
attrl[:resource] = FFI::Pointer::NULL
|
90
|
-
attrl[:value] = FFI::Pointer::NULL
|
91
|
-
attrl[:op] = 0
|
92
209
|
attrl[:next] = prev
|
93
210
|
prev = attrl
|
94
211
|
end
|
95
212
|
attrl
|
96
213
|
end
|
97
214
|
|
98
|
-
|
99
|
-
|
215
|
+
# Convert to hash describing this linked list
|
216
|
+
# @return [Hash] hash describing linked list
|
217
|
+
def to_h
|
100
218
|
attrl = self
|
219
|
+
hash = {}
|
101
220
|
until attrl.to_ptr.null?
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
if resource.nil?
|
107
|
-
hash[name] = value
|
108
|
-
else
|
109
|
-
hash[name][resource] = value
|
110
|
-
end
|
221
|
+
n = attrl[:name].read_string
|
222
|
+
v = attrl[:value].read_string
|
223
|
+
r = attrl[:resource].null? ? nil : attrl[:resource].read_string
|
224
|
+
r ? (hash[n.to_sym] ||= {} and hash[n.to_sym][r.to_sym] = v) : hash[n.to_sym] = v
|
111
225
|
attrl = attrl[:next]
|
112
226
|
end
|
113
227
|
hash
|
@@ -122,6 +236,9 @@ module PBS
|
|
122
236
|
:value, :pointer, # string for value of attribute
|
123
237
|
:op, BatchOp # operation to perform for this attribute
|
124
238
|
|
239
|
+
# Convert to C-linked list of structs from hash
|
240
|
+
# @param hash [Hash] hash representation of this c-linked list
|
241
|
+
# @return [Attropl] generated attribute operation c-linked list object
|
125
242
|
def self.from_hash(hash)
|
126
243
|
# Convert hash into array
|
127
244
|
# Format: {name: value, name: {resource: value, resource: value}}
|
@@ -131,41 +248,42 @@ module PBS
|
|
131
248
|
prev = Attropl.new(FFI::Pointer::NULL)
|
132
249
|
ary.each do |attrib|
|
133
250
|
attropl = Attropl.new
|
134
|
-
attropl[:name]
|
135
|
-
attropl[:value]
|
136
|
-
attropl[:resource] = FFI::MemoryPointer.from_string
|
137
|
-
attropl[:
|
138
|
-
attropl[:next] = prev
|
251
|
+
attropl[:name] = FFI::MemoryPointer.from_string attrib[0].to_s
|
252
|
+
attropl[:value] = FFI::MemoryPointer.from_string attrib[1].to_s
|
253
|
+
attropl[:resource] = FFI::MemoryPointer.from_string attrib[2].to_s if attrib[2]
|
254
|
+
attropl[:next] = prev
|
139
255
|
prev = attropl
|
140
256
|
end
|
141
257
|
attropl
|
142
258
|
end
|
143
259
|
end
|
144
260
|
|
145
|
-
# Struct for status
|
261
|
+
# Struct for PBS batch server status responses
|
146
262
|
class BatchStatus < FFI::ManagedStruct
|
147
263
|
layout :next, BatchStatus.ptr, # pointer to next BatchStatus object
|
148
264
|
:name, :string, # string for name of this status
|
149
265
|
:attribs, Attrl.ptr, # pointer to beginning of C-linked list of an Attrl object
|
150
266
|
:text, :string # string containing unknown text
|
151
267
|
|
268
|
+
# Free memory for allocated {BatchStatus} C-linked list
|
152
269
|
def self.release(ptr)
|
153
270
|
pbs_statfree(ptr)
|
154
271
|
end
|
155
272
|
|
156
|
-
|
157
|
-
|
273
|
+
# Convert to hash describing this linked list
|
274
|
+
# @return [Hash] hash describing linked list
|
275
|
+
def to_h
|
158
276
|
batch = self
|
277
|
+
hash = {}
|
159
278
|
until batch.to_ptr.null?
|
160
|
-
|
279
|
+
hash[batch[:name]] = batch[:attribs].to_h
|
161
280
|
batch = batch[:next]
|
162
281
|
end
|
163
|
-
|
282
|
+
hash
|
164
283
|
end
|
165
284
|
end
|
166
285
|
|
167
|
-
# Defined error codes
|
168
|
-
# valid as of Torque >=4.2.10
|
286
|
+
# Defined error codes, valid as of Torque >=4.2.10
|
169
287
|
ERROR_CODES = {
|
170
288
|
15001 => PBS::UnkjobidError,
|
171
289
|
15002 => PBS::NoattrError,
|
data/lib/pbs/version.rb
CHANGED
data/pbs.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.platform = Gem::Platform::RUBY
|
10
10
|
spec.authors = ["Jeremy Nicklas"]
|
11
11
|
spec.email = ["jnicklas@osc.edu"]
|
12
|
-
spec.summary = %q{
|
13
|
-
spec.description = %q{
|
12
|
+
spec.summary = %q{Ruby gem that uses FFI to interface with Adaptive Computing's resource manager Torque}
|
13
|
+
spec.description = %q{Ruby wrapper for the Torque C library utilizing Ruby-FFI. This has been successfully tested with Torque 4.2.10 and greater. Your mileage may vary.}
|
14
14
|
spec.homepage = "https://github.com/OSC/pbs-ruby"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
|
+
spec.required_ruby_version = '~> 2.2'
|
21
22
|
|
22
23
|
spec.add_runtime_dependency "ffi", "~> 1.9", ">= 1.9.6"
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Nicklas
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -58,8 +58,8 @@ dependencies:
|
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '10.0'
|
61
|
-
description:
|
62
|
-
|
61
|
+
description: Ruby wrapper for the Torque C library utilizing Ruby-FFI. This has been
|
62
|
+
successfully tested with Torque 4.2.10 and greater. Your mileage may vary.
|
63
63
|
email:
|
64
64
|
- jnicklas@osc.edu
|
65
65
|
executables: []
|
@@ -67,20 +67,15 @@ extensions: []
|
|
67
67
|
extra_rdoc_files: []
|
68
68
|
files:
|
69
69
|
- ".gitignore"
|
70
|
+
- CHANGELOG.md
|
70
71
|
- Gemfile
|
71
72
|
- LICENSE.txt
|
72
73
|
- README.md
|
73
74
|
- Rakefile
|
74
|
-
- config/batch.yml
|
75
|
-
- config/websvcs02.osc.edu.yml
|
76
|
-
- config/websvcs08.osc.edu.yml
|
77
|
-
- examples/simplejob.rb
|
78
75
|
- lib/pbs.rb
|
79
76
|
- lib/pbs/attributes.rb
|
80
|
-
- lib/pbs/
|
77
|
+
- lib/pbs/batch.rb
|
81
78
|
- lib/pbs/error.rb
|
82
|
-
- lib/pbs/job.rb
|
83
|
-
- lib/pbs/query.rb
|
84
79
|
- lib/pbs/torque.rb
|
85
80
|
- lib/pbs/version.rb
|
86
81
|
- pbs.gemspec
|
@@ -94,9 +89,9 @@ require_paths:
|
|
94
89
|
- lib
|
95
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
91
|
requirements:
|
97
|
-
- - "
|
92
|
+
- - "~>"
|
98
93
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
94
|
+
version: '2.2'
|
100
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
96
|
requirements:
|
102
97
|
- - ">="
|
@@ -104,9 +99,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
99
|
version: '0'
|
105
100
|
requirements: []
|
106
101
|
rubyforge_project:
|
107
|
-
rubygems_version: 2.4.
|
102
|
+
rubygems_version: 2.4.5
|
108
103
|
signing_key:
|
109
104
|
specification_version: 4
|
110
|
-
summary:
|
111
|
-
|
105
|
+
summary: Ruby gem that uses FFI to interface with Adaptive Computing's resource manager
|
106
|
+
Torque
|
112
107
|
test_files: []
|
108
|
+
has_rdoc:
|
data/config/batch.yml
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
oakley: &oakley
|
2
|
-
lib: '/usr/local/torque/default/lib/libtorque.so'
|
3
|
-
server: &oakley_server 'oak-batch.osc.edu'
|
4
|
-
qsub: 'LD_LIBRARY_PATH=/usr/local/torque/default/lib:$LD_LIBRARY_PATH /usr/local/torque/default/bin/qsub'
|
5
|
-
*oakley_server:
|
6
|
-
<<: *oakley
|
7
|
-
ruby: &ruby
|
8
|
-
lib: '/usr/local/torque/default/lib/libtorque.so'
|
9
|
-
server: &ruby_server 'ruby-batch.ten.osc.edu'
|
10
|
-
qsub: 'LD_LIBRARY_PATH=/usr/local/torque/default/lib:$LD_LIBRARY_PATH /usr/local/torque/default/bin/qsub'
|
11
|
-
*ruby_server:
|
12
|
-
<<: *ruby
|
13
|
-
oxymoron: &oxymoron
|
14
|
-
lib: '/usr/local/torque/default/lib/libtorque.so'
|
15
|
-
server: &oxymoron_server 'oak-batch.osc.edu:17001'
|
16
|
-
qsub: 'LD_LIBRARY_PATH=/usr/local/torque/default/lib:$LD_LIBRARY_PATH /usr/local/torque/default/bin/qsub'
|
17
|
-
*oxymoron_server:
|
18
|
-
<<: *oxymoron
|
19
|
-
quick: &quick
|
20
|
-
lib: '/usr/local/torque/default/lib/libtorque.so'
|
21
|
-
server: &quick_server 'quick-batch.osc.edu'
|
22
|
-
qsub: 'LD_LIBRARY_PATH=/usr/local/torque/default/lib:$LD_LIBRARY_PATH /usr/local/torque/default/bin/qsub'
|
23
|
-
*quick_server:
|
24
|
-
<<: *quick
|