rbbt-util 5.26.136 → 5.26.137
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5517c44e5438fffb2c8e3fddbb99fef53084bbda02f74f7866fd51f8b7eadef9
|
4
|
+
data.tar.gz: 4aeba437356614ef827b9224169dfe7c84e543bf6ea5e87426bb545b71afe8ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d0474e8b079996176dc6f9947ec190c5b0b80cc8d0d4770f886556d69cb05fc943e04766c8679933efde4554811a0be225c5646823d31e2bd9e208a96a7dcb4
|
7
|
+
data.tar.gz: 47c703e6745fc998bef9d1304a55177a9d3607adff270061981d4c19adab11b8b8bf3ed2d7308a5e9504878bef0aad46105a47857b418b37674d924d9434c5ed
|
@@ -23,31 +23,33 @@ class WorkflowRemoteClient
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def cache_file
|
26
|
-
digest = Misc.obj2digest([
|
27
|
-
Rbbt.var.cache.REST[digest].find
|
26
|
+
digest = Misc.obj2digest([base_url, task, base_name, inputs])
|
27
|
+
Rbbt.var.cache.REST[[task, clean_name, digest] * "."].find
|
28
|
+
end
|
29
|
+
|
30
|
+
def cache_files
|
31
|
+
Dir.glob(cache_file + '.*')
|
28
32
|
end
|
29
33
|
|
30
34
|
def run(no_load = false)
|
31
35
|
no_load = @is_stream ? :stream : true if no_load
|
32
36
|
|
33
37
|
@mutex.synchronize do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
self.load
|
47
|
-
end
|
48
|
-
ensure
|
49
|
-
@started = true
|
38
|
+
begin
|
39
|
+
if @is_exec
|
40
|
+
exec(no_load)
|
41
|
+
elsif no_load == :stream
|
42
|
+
_run_job(:stream)
|
43
|
+
elsif no_load
|
44
|
+
init_job
|
45
|
+
nil
|
46
|
+
else
|
47
|
+
init_job
|
48
|
+
join
|
49
|
+
self.load
|
50
50
|
end
|
51
|
+
ensure
|
52
|
+
@started = true
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
@@ -159,6 +161,7 @@ class WorkflowRemoteClient
|
|
159
161
|
end
|
160
162
|
|
161
163
|
def done?
|
164
|
+
return true if cache_files.any?
|
162
165
|
init_job unless @url
|
163
166
|
@done || status.to_s == 'done' || status.to_s == 'noinfo'
|
164
167
|
end
|
@@ -25,22 +25,25 @@ module WorkflowRESTClient
|
|
25
25
|
@documention ||= IndiferentHash.setup(WorkflowRESTClient.get_json(File.join(url, "documentation"),{}))
|
26
26
|
end
|
27
27
|
|
28
|
+
def self.task_info(url, task)
|
29
|
+
@@task_info ||= {}
|
30
|
+
|
31
|
+
key = [url, task] * "#"
|
32
|
+
@@task_info[key] ||= begin
|
33
|
+
task_info = WorkflowRESTClient.get_json(File.join(url, task.to_s, 'info'))
|
34
|
+
task_info = WorkflowRESTClient.fix_hash(task_info)
|
35
|
+
|
36
|
+
task_info[:result_type] = task_info[:result_type].to_sym
|
37
|
+
task_info[:export] = task_info[:export].to_sym
|
38
|
+
task_info[:input_types] = WorkflowRESTClient.fix_hash(task_info[:input_types], true)
|
39
|
+
task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }
|
40
|
+
|
41
|
+
@@task_info[key] = task_info
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
28
45
|
def task_info(task)
|
29
|
-
|
30
|
-
@task_info[task]
|
31
|
-
|
32
|
-
if @task_info[task].nil?
|
33
|
-
task_info = WorkflowRESTClient.get_json(File.join(url, task.to_s, 'info'))
|
34
|
-
task_info = WorkflowRESTClient.fix_hash(task_info)
|
35
|
-
|
36
|
-
task_info[:result_type] = task_info[:result_type].to_sym
|
37
|
-
task_info[:export] = task_info[:export].to_sym
|
38
|
-
task_info[:input_types] = WorkflowRESTClient.fix_hash(task_info[:input_types], true)
|
39
|
-
task_info[:inputs] = task_info[:inputs].collect{|input| input.to_sym }
|
40
|
-
|
41
|
-
@task_info[task] = task_info
|
42
|
-
end
|
43
|
-
@task_info[task]
|
46
|
+
WorkflowRESTClient.task_info(url, task)
|
44
47
|
end
|
45
48
|
|
46
49
|
def exported_tasks
|
@@ -165,14 +165,16 @@ module WorkflowRESTClient
|
|
165
165
|
|
166
166
|
def get
|
167
167
|
params ||= {}
|
168
|
-
params = params.merge(:_format => [:string, :boolean, :tsv, :annotations
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
params = params.merge(:_format => [:string, :boolean, :tsv, :annotations, :array].include?(result_type.to_sym) ? :raw : :json )
|
169
|
+
@cache_result ||= Persist.persist("REST persist", :binary, :file => cache_file + "." + Misc.obj2digest(params)) do
|
170
|
+
Misc.insist 3, rand(2) + 1 do
|
171
|
+
begin
|
172
|
+
init_job if url.nil?
|
173
|
+
@adaptor.get_raw(url, params)
|
174
|
+
rescue
|
175
|
+
Log.exception $!
|
176
|
+
raise $!
|
177
|
+
end
|
176
178
|
end
|
177
179
|
end
|
178
180
|
end
|
@@ -231,7 +233,9 @@ module WorkflowRESTClient
|
|
231
233
|
def _clean
|
232
234
|
begin
|
233
235
|
_restart
|
234
|
-
|
236
|
+
cache_files.each do |cache_file|
|
237
|
+
Open.rm cache_file
|
238
|
+
end
|
235
239
|
params = {:_update => :clean}
|
236
240
|
@adaptor.clean_url(url, params) if @url
|
237
241
|
rescue Exception
|
@@ -18,6 +18,7 @@ $ rbbt app start [options] <app_name>
|
|
18
18
|
-s--server* Server type: thin, webrick, unicorn, etc
|
19
19
|
-f--finder Start server with finder functionality
|
20
20
|
-fs--file_server Activate file serving for resources
|
21
|
+
-mj--monitor_jobs Monitor jobs (UNSAFE)
|
21
22
|
-R--Rserve_session* Rserve session to use, otherwise start new one
|
22
23
|
-wd--workdir* Change the working directory of the workflow
|
23
24
|
--views* Directory with view templates
|
@@ -62,6 +63,7 @@ Misc.in_dir(app_dir) do
|
|
62
63
|
ENV["RACK_ENV"] = options[:environment] if options.include?(:environment)
|
63
64
|
ENV["RBBT_VIEWS_DIR"] = options[:views] if options.include?(:views)
|
64
65
|
ENV["RBBT_REST_FILE_SERVER"] = "true" if options[:file_server]
|
66
|
+
ENV["RBBT_MONITOR_REST_JOBS"] = "true" if options[:monitor_jobs]
|
65
67
|
|
66
68
|
|
67
69
|
if options[:stream]
|
@@ -24,6 +24,7 @@ $ rbbt workflow server [options] <Workflow>
|
|
24
24
|
--views* Directory with view templates
|
25
25
|
--stream Activate streaming of workflow tasks
|
26
26
|
-fs--file_server Activate file serving for resources
|
27
|
+
-mj--monitor_jobs Monitor jobs (UNSAFE)
|
27
28
|
--export_all Export all workflow tasks (use with caution!)
|
28
29
|
--export* Export workflow tasks (asynchronous)
|
29
30
|
--export_asynchronous* Export workflow tasks as asynchronous
|
@@ -86,6 +87,7 @@ TmpFile.with_file do |app_dir|
|
|
86
87
|
ENV["RACK_ENV"] = options[:environment] if options.include?(:environment)
|
87
88
|
ENV["RBBT_VIEWS_DIR"] = options[:views] if options.include?(:views)
|
88
89
|
ENV["RBBT_REST_FILE_SERVER"] = "true" if options[:file_server]
|
90
|
+
ENV["RBBT_MONITOR_REST_JOBS"] = "true" if options[:monitor_jobs]
|
89
91
|
|
90
92
|
if options[:export_all]
|
91
93
|
ENV["RBBT_WORKFLOW_EXPORT_ALL"] = 'true'
|