t2-server 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/run_workflow +18 -16
- data/lib/t2server.rb +1 -1
- data/lib/t2server/run.rb +32 -15
- data/lib/t2server/server.rb +40 -33
- metadata +4 -4
data/bin/run_workflow
CHANGED
@@ -41,25 +41,23 @@ require 'optparse'
|
|
41
41
|
# server seems to be rather sensitive to slashes, hence
|
42
42
|
# all the [...] mucking about.
|
43
43
|
def get_outputs(run, pout, dir="")
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
44
|
+
dirs, files = run.ls("out#{dir}")
|
45
|
+
dirs.each {|d| get_outputs(run, pout, "#{dir}/#{d}")}
|
46
|
+
files.each do |out|
|
47
|
+
print " #{dir}/#{out} -> "
|
48
|
+
output_name = "#{dir[1..-1]}/#{out}"
|
49
|
+
data = run.get_output(output_name)
|
50
|
+
if pout
|
51
|
+
p data
|
48
52
|
else
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
p data
|
53
|
-
else
|
54
|
-
filename = "#{dir[1..-1]}/#{out}".gsub('/','-')
|
55
|
-
File.open(filename, "w") do |file|
|
56
|
-
file.syswrite(data)
|
57
|
-
end
|
58
|
-
puts "written to file: #{filename}"
|
53
|
+
filename = output_name.gsub('/', '-')
|
54
|
+
File.open(filename, "w") do |file|
|
55
|
+
file.syswrite(data)
|
59
56
|
end
|
57
|
+
puts "written to file: #{filename}"
|
60
58
|
end
|
61
59
|
end
|
62
|
-
end
|
60
|
+
end
|
63
61
|
|
64
62
|
# set up options
|
65
63
|
inputs = {}
|
@@ -113,6 +111,7 @@ end
|
|
113
111
|
# create run and set inputs
|
114
112
|
run = T2Server::Run.create(uri, wkf)
|
115
113
|
puts "Created run with uuid: #{run.uuid}"
|
114
|
+
puts "Created at #{run.create_time}"
|
116
115
|
|
117
116
|
inputs.each do |input, value|
|
118
117
|
puts "Set input '#{input}' to #{value}"
|
@@ -120,8 +119,11 @@ inputs.each do |input, value|
|
|
120
119
|
end
|
121
120
|
|
122
121
|
# start run and wait until it is finished
|
122
|
+
run.start
|
123
|
+
puts "Started at #{run.start_time}"
|
123
124
|
print "Running"
|
124
|
-
run.
|
125
|
+
run.wait(:progress => true)
|
126
|
+
puts "Finished at #{run.finish_time}"
|
125
127
|
|
126
128
|
# get outputs
|
127
129
|
stdout = run.stdout
|
data/lib/t2server.rb
CHANGED
data/lib/t2server/run.rb
CHANGED
@@ -113,13 +113,14 @@ module T2Server
|
|
113
113
|
@server.set_run_attribute(@uuid, @links[:status], STATE[:running])
|
114
114
|
end
|
115
115
|
|
116
|
-
def
|
116
|
+
def wait(params={})
|
117
|
+
return unless running?
|
118
|
+
|
117
119
|
interval = params[:interval] || 1
|
118
120
|
progress = params[:progress] || false
|
119
121
|
keepalive = params[:keepalive] || false ### TODO maybe move out of params
|
120
122
|
|
121
|
-
#
|
122
|
-
start
|
123
|
+
# wait
|
123
124
|
until finished?
|
124
125
|
sleep(interval)
|
125
126
|
if progress
|
@@ -172,10 +173,11 @@ module T2Server
|
|
172
173
|
|
173
174
|
# compile a list of directory entries stripping the
|
174
175
|
# directory name from the front of each filename
|
175
|
-
|
176
|
-
|
177
|
-
XPath.each(doc, "//nss:
|
178
|
-
|
176
|
+
dirs = []
|
177
|
+
files = []
|
178
|
+
XPath.each(doc, "//nss:dir", Namespaces::MAP) {|e| dirs << e.text.split('/')[-1]}
|
179
|
+
XPath.each(doc, "//nss:file", Namespaces::MAP) {|e| files << e.text.split('/')[-1]}
|
180
|
+
[dirs, files]
|
179
181
|
end
|
180
182
|
|
181
183
|
def initialized?
|
@@ -189,6 +191,18 @@ module T2Server
|
|
189
191
|
def finished?
|
190
192
|
status == STATE[:finished]
|
191
193
|
end
|
194
|
+
|
195
|
+
def create_time
|
196
|
+
@server.get_run_attribute(@uuid, @links[:createtime])
|
197
|
+
end
|
198
|
+
|
199
|
+
def start_time
|
200
|
+
@server.get_run_attribute(@uuid, @links[:starttime])
|
201
|
+
end
|
202
|
+
|
203
|
+
def finish_time
|
204
|
+
@server.get_run_attribute(@uuid, @links[:finishtime])
|
205
|
+
end
|
192
206
|
|
193
207
|
private
|
194
208
|
def get_attributes(desc)
|
@@ -214,14 +228,17 @@ module T2Server
|
|
214
228
|
doc = Document.new(desc)
|
215
229
|
nsmap = Namespaces::MAP
|
216
230
|
{
|
217
|
-
:expiry
|
218
|
-
:workflow
|
219
|
-
:status
|
220
|
-
:
|
221
|
-
:
|
222
|
-
:
|
223
|
-
:
|
224
|
-
:
|
231
|
+
:expiry => XPath.first(doc, "//nsr:expiry", nsmap).attributes["href"].split('/')[-1],
|
232
|
+
:workflow => XPath.first(doc, "//nsr:creationWorkflow", nsmap).attributes["href"].split('/')[-1],
|
233
|
+
:status => XPath.first(doc, "//nsr:status", nsmap).attributes["href"].split('/')[-1],
|
234
|
+
:createtime => XPath.first(doc, "//nsr:createTime", nsmap).attributes["href"].split('/')[-1],
|
235
|
+
:starttime => XPath.first(doc, "//nsr:startTime", nsmap).attributes["href"].split('/')[-1],
|
236
|
+
:finishtime => XPath.first(doc, "//nsr:finishTime", nsmap).attributes["href"].split('/')[-1],
|
237
|
+
:wdir => XPath.first(doc, "//nsr:workingDirectory", nsmap).attributes["href"].split('/')[-1],
|
238
|
+
:inputs => XPath.first(doc, "//nsr:inputs", nsmap).attributes["href"].split('/')[-1],
|
239
|
+
:output => XPath.first(doc, "//nsr:output", nsmap).attributes["href"].split('/')[-1],
|
240
|
+
:securectx => XPath.first(doc, "//nsr:securityContext", nsmap).attributes["href"].split('/')[-1],
|
241
|
+
:listeners => XPath.first(doc, "//nsr:listeners", nsmap).attributes["href"].split('/')[-1]
|
225
242
|
}
|
226
243
|
end
|
227
244
|
end
|
data/lib/t2server/server.rb
CHANGED
@@ -59,7 +59,7 @@ module T2Server
|
|
59
59
|
|
60
60
|
# initialise run list
|
61
61
|
@runs = {}
|
62
|
-
@runs =
|
62
|
+
@runs = get_runs
|
63
63
|
end
|
64
64
|
|
65
65
|
def Server.connect(uri)
|
@@ -101,38 +101,13 @@ module T2Server
|
|
101
101
|
""
|
102
102
|
end
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
def runs
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
doc = Document.new(response.body)
|
112
|
-
|
113
|
-
# get list of run uuids
|
114
|
-
uuids = []
|
115
|
-
XPath.each(doc, "//nsr:run", Namespaces::MAP) do |run|
|
116
|
-
uuids << run.attributes["href"].split('/')[-1]
|
117
|
-
end
|
118
|
-
|
119
|
-
# add new runs
|
120
|
-
uuids.each do |uuid|
|
121
|
-
if !@runs.has_key? uuid
|
122
|
-
description = get_run_description(uuid)
|
123
|
-
@runs[uuid] = Run.create(self, "", uuid)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
# clear out the expired runs
|
128
|
-
if @runs.length > @run_limit
|
129
|
-
@runs.delete_if {|key, val| !uuids.member? key}
|
130
|
-
end
|
131
|
-
|
132
|
-
@runs
|
133
|
-
else
|
134
|
-
response_error(response)
|
135
|
-
end
|
106
|
+
get_runs.values
|
107
|
+
end
|
108
|
+
|
109
|
+
def run(uuid)
|
110
|
+
get_runs[uuid]
|
136
111
|
end
|
137
112
|
|
138
113
|
def delete_run(uuid)
|
@@ -154,7 +129,7 @@ module T2Server
|
|
154
129
|
|
155
130
|
def delete_all_runs
|
156
131
|
# first refresh run list
|
157
|
-
runs.
|
132
|
+
runs.each {|run| run.delete}
|
158
133
|
end
|
159
134
|
|
160
135
|
def set_run_input(run, input, value)
|
@@ -320,5 +295,37 @@ module T2Server
|
|
320
295
|
false
|
321
296
|
end
|
322
297
|
|
298
|
+
def get_runs
|
299
|
+
request = Net::HTTP::Get.new("#{@links[:runs]}")
|
300
|
+
response = Net::HTTP.new(@host, @port).start {|http| http.request(request)}
|
301
|
+
|
302
|
+
case response
|
303
|
+
when Net::HTTPOK
|
304
|
+
doc = Document.new(response.body)
|
305
|
+
|
306
|
+
# get list of run uuids
|
307
|
+
uuids = []
|
308
|
+
XPath.each(doc, "//nsr:run", Namespaces::MAP) do |run|
|
309
|
+
uuids << run.attributes["href"].split('/')[-1]
|
310
|
+
end
|
311
|
+
|
312
|
+
# add new runs
|
313
|
+
uuids.each do |uuid|
|
314
|
+
if !@runs.has_key? uuid
|
315
|
+
description = get_run_description(uuid)
|
316
|
+
@runs[uuid] = Run.create(self, "", uuid)
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
# clear out the expired runs
|
321
|
+
if @runs.length > @run_limit
|
322
|
+
@runs.delete_if {|key, val| !uuids.member? key}
|
323
|
+
end
|
324
|
+
|
325
|
+
@runs
|
326
|
+
else
|
327
|
+
response_error(response)
|
328
|
+
end
|
329
|
+
end
|
323
330
|
end
|
324
331
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: t2-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Robert Haines
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-22 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|