rbbt-rest 1.3.4 → 1.3.5
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/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
|
|