rbbt-rest 1.3.4 → 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/rest/client/get.rb +5 -4
- data/lib/rbbt/rest/client/step.rb +31 -12
- data/lib/rbbt/rest/main.rb +1 -0
- data/lib/rbbt/rest/workflow.rb +2 -0
- data/lib/rbbt/rest/workflow/jobs.rb +11 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08aa70a66616d766753916da78c7439a4ec800c5
|
4
|
+
data.tar.gz: 29ce9753938dcaf1890744d51a0b65bc694721c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d24e26e939eedc02ebb6c7f60651d1404f4da0900a5cc97e06809885efbfd3d292dff3006fc98dc2d5c26ca4808123ea30a5e50594a082e8b046a54191b10cc
|
7
|
+
data.tar.gz: 6562147f6e34262b00f5ebf4105e404ab10a37e169a4510844d4c3921b353dc2c2a7f237a6355613c1b57bebe921449e46340b77c6c1c89d22c0c1115b851fd3
|
data/lib/rbbt/rest/client/get.rb
CHANGED
@@ -18,14 +18,15 @@ class WorkflowRESTClient
|
|
18
18
|
begin
|
19
19
|
yield
|
20
20
|
rescue Exception => e
|
21
|
-
raise
|
22
|
-
klass, message = e.response.split " => "
|
21
|
+
raise e unless e.respond_to? :response
|
23
22
|
begin
|
23
|
+
klass, message = e.response.to_s.split " => "
|
24
24
|
klass = Kernel.const_get klass
|
25
|
+
raise klass.new message
|
25
26
|
rescue
|
26
|
-
raise
|
27
|
+
raise e
|
27
28
|
end
|
28
|
-
raise
|
29
|
+
raise $!
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
@@ -17,15 +17,21 @@ class WorkflowRESTClient
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def info
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
@info ||= begin
|
21
|
+
init_job unless url
|
22
|
+
info = WorkflowRESTClient.get_json(File.join(url, 'info'))
|
23
|
+
info = WorkflowRESTClient.fix_hash(info)
|
24
|
+
info[:status] = info[:status].to_sym if String === info[:status]
|
25
|
+
info
|
26
|
+
end
|
25
27
|
end
|
26
28
|
|
27
29
|
def status
|
28
|
-
|
30
|
+
begin
|
31
|
+
info[:status]
|
32
|
+
ensure
|
33
|
+
@info = nil
|
34
|
+
end
|
29
35
|
end
|
30
36
|
|
31
37
|
def done?
|
@@ -58,6 +64,8 @@ class WorkflowRESTClient
|
|
58
64
|
TSV.open(StringIO.new(res))
|
59
65
|
when :annotations
|
60
66
|
Annotated.load_tsv(TSV.open(StringIO.new(res)))
|
67
|
+
when :array
|
68
|
+
res.split("\n")
|
61
69
|
else
|
62
70
|
JSON.parse res
|
63
71
|
end
|
@@ -65,9 +73,9 @@ class WorkflowRESTClient
|
|
65
73
|
|
66
74
|
def get
|
67
75
|
params ||= {}
|
68
|
-
params = params.merge(:_format => [:string, :boolean, :tsv, :annotations].include?(result_type) ? :raw : :json )
|
76
|
+
params = params.merge(:_format => [:string, :boolean, :tsv, :annotations,:array].include?(result_type.to_sym) ? :raw : :json )
|
69
77
|
begin
|
70
|
-
WorkflowRESTClient.get_raw(url, params)
|
78
|
+
WorkflowRESTClient.get_raw(url, params)
|
71
79
|
rescue => e
|
72
80
|
raise e.response
|
73
81
|
end
|
@@ -82,9 +90,7 @@ class WorkflowRESTClient
|
|
82
90
|
res = WorkflowRESTClient.capture_exception do
|
83
91
|
RestClient.post(URI.encode(File.join(base_url, task.to_s)), inputs.merge(:_cache_type => :exec, :_format => [:string, :boolean, :tsv, :annotations].include?(result_type) ? :raw : :json))
|
84
92
|
end
|
85
|
-
|
86
|
-
exit
|
87
|
-
loaded
|
93
|
+
load_res res
|
88
94
|
end
|
89
95
|
|
90
96
|
def fork
|
@@ -114,8 +120,21 @@ class WorkflowRESTClient
|
|
114
120
|
self
|
115
121
|
end
|
116
122
|
|
123
|
+
def recursive_clean
|
124
|
+
init_job unless url
|
125
|
+
begin
|
126
|
+
WorkflowRESTClient.get_raw(url, :_update => :recursive_clean) unless @is_exec
|
127
|
+
rescue Exception
|
128
|
+
end
|
129
|
+
self
|
130
|
+
end
|
131
|
+
|
117
132
|
def clean
|
118
|
-
|
133
|
+
init_job unless url
|
134
|
+
begin
|
135
|
+
WorkflowRESTClient.get_raw(url, :_update => :clean) unless @is_exec
|
136
|
+
rescue Exception
|
137
|
+
end
|
119
138
|
self
|
120
139
|
end
|
121
140
|
end
|
data/lib/rbbt/rest/main.rb
CHANGED
data/lib/rbbt/rest/workflow.rb
CHANGED
@@ -39,6 +39,7 @@ module Sinatra
|
|
39
39
|
Log.debug "Adding #{ workflow } to REST server"
|
40
40
|
|
41
41
|
add_workflow_resource(workflow) if add_resource
|
42
|
+
workflow.documentation
|
42
43
|
|
43
44
|
|
44
45
|
self.instance_eval workflow.libdir.lib['sinatra.rb'].read, workflow.libdir.lib['sinatra.rb'].find if workflow.respond_to?(:libdir) and File.exists? workflow.libdir.lib['sinatra.rb']
|
@@ -138,6 +139,7 @@ module Sinatra
|
|
138
139
|
job = workflow.load_id(File.join(task, job))
|
139
140
|
|
140
141
|
clean_job(workflow, job) if update == :clean
|
142
|
+
recursive_clean_job(workflow, job) if update == :recursive_clean
|
141
143
|
|
142
144
|
begin
|
143
145
|
started = job.info.any?
|
@@ -34,7 +34,7 @@ module WorkflowRESTHelpers
|
|
34
34
|
when workflow.asynchronous_exports.include?(task)
|
35
35
|
:asynchronous
|
36
36
|
else
|
37
|
-
raise "No known export type for #{ workflow } #{ task }"
|
37
|
+
raise "No known export type for #{ workflow } #{ task }. Accesses denied"
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -147,6 +147,7 @@ module WorkflowRESTHelpers
|
|
147
147
|
job = workflow.job(task, jobname, inputs)
|
148
148
|
|
149
149
|
job.clean if update == :clean
|
150
|
+
job.recursive_clean if update == :recursive_clean
|
150
151
|
|
151
152
|
execution_type = execution_type(workflow, task)
|
152
153
|
case execution_type
|
@@ -175,6 +176,15 @@ module WorkflowRESTHelpers
|
|
175
176
|
end
|
176
177
|
end
|
177
178
|
|
179
|
+
def recursive_clean_job(workflow, job)
|
180
|
+
job.recursive_clean
|
181
|
+
|
182
|
+
if ajax
|
183
|
+
halt 200
|
184
|
+
else
|
185
|
+
redirect to(File.join("/", workflow.to_s, job.task_name.to_s))
|
186
|
+
end
|
187
|
+
end
|
178
188
|
def clean_job(workflow, job)
|
179
189
|
job.clean
|
180
190
|
|