rbbt-rest 1.9.0 → 1.9.1

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: 1fdb32cbeb46c68fc69547ead44db23a8a7c429104b5a00ab64b0551cad3018e
4
- data.tar.gz: ff6ec603aa45072af8aa5cf99203bac5c63590f657b6f96d38cb172beee4ee09
3
+ metadata.gz: f704f277ce12001953704f8e901241c79f1bc0d6425967ae231455671bfa7879
4
+ data.tar.gz: 07d4ca572f44e36384bd7595f1c36738b6388c4f3da1fa03827a118b5eed3724
5
5
  SHA512:
6
- metadata.gz: cdc8bbe6d4548759e88e4cf034d6ec757311f3b0c5efb6c8ad656866cd146c5e9d91e83508759a1966bc4a73d588171e7067b7b4f26a0bffc6ba549d1be9c08d
7
- data.tar.gz: f2d21a95f95a61838596be12cd95a58ef3f979015be6c53b7137758f47616a4732cbc8b0eae75b9d354c20209f7244be8ad9dd3d31b3a49fb215dd3cfaf1d79c
6
+ metadata.gz: ca607c13addb28475b071f500a50e9ccac7c13007e765fb044cba6e9f41735a45e0de2ad403984bbaaf36ba662397140f06d542090bb9936981890d4b5b988c5
7
+ data.tar.gz: d2f72803da7071b5e0d2c743344dc120e7ad56c387ada1d002492ad5b0eeab138b5cd0d630b72af9e5fe8156268d36f65288193c494e2c2ced69c9e6829288b6
@@ -207,7 +207,11 @@ module RbbtRESTHelpers
207
207
  data = nil
208
208
  excel_file = TmpFile.tmp_file
209
209
  tsv.excel(excel_file, :sort_by => @excel_sort_by, :sort_by_cast => @excel_sort_by_cast, :name => true, :remove_links => true)
210
- send_file excel_file, :type => 'application/vnd.ms-excel', :filename => 'table.xls'
210
+ name = tsv_options[:table_id]
211
+ name ||= "rbbt-table"
212
+ name = name.sub(/\s/,'_')
213
+ name = name.sub('.tsv','')
214
+ send_file excel_file, :type => 'application/vnd.ms-excel', :filename => "#{name}.xls"
211
215
  when "heatmap"
212
216
  require 'rbbt/util/R'
213
217
  tsv, tsv_options = load_tsv(fragment_file)
@@ -59,7 +59,10 @@ module Sinatra
59
59
 
60
60
  set :environment, ENV["RACK_ENV"].to_sym if ENV["RACK_ENV"]
61
61
 
62
- attr_accessor :ajax, :layout, :format, :size, :update, :cache_type, :_, :profile
62
+ attr_accessor :ajax, :layout, :size, :update, :cache_type, :_, :profile
63
+
64
+ # This collides with a function in sinatra
65
+ #attr_accessor :format
63
66
 
64
67
 
65
68
  enable :cross_origin
@@ -52,8 +52,9 @@ module WorkflowRESTHelpers
52
52
 
53
53
  def execution_type(workflow, task)
54
54
  export = type_of_export(workflow, task)
55
+ return :slurm if ENV["RBBT_REST_USE_SLURM"] == 'true'
55
56
  return cache_type if cache_type
56
- return :sync if export == :exec and format == :html
57
+ return :sync if export == :exec and @format == :html
57
58
  return export if export == :exec
58
59
  return :asynchronous
59
60
  end
@@ -82,7 +83,7 @@ module WorkflowRESTHelpers
82
83
  end
83
84
 
84
85
  def show_exec_result(result, workflow, task)
85
- case format.to_sym
86
+ case @format.to_sym
86
87
  when :html
87
88
  show_result_html result, workflow, task, nil
88
89
  when :json
@@ -108,14 +109,14 @@ module WorkflowRESTHelpers
108
109
  when :jobname
109
110
  halt 200, nil
110
111
  else
111
- raise "Unsupported format: #{ format }"
112
+ raise "Unsupported format: #{ @format }"
112
113
  end
113
114
  end
114
115
 
115
116
  def show_result(job, workflow, task, params = nil)
116
117
  return show_result_html nil, workflow, task, job.name, job, params if @fragment
117
118
 
118
- case format.to_sym
119
+ case @format.to_sym
119
120
  when :html
120
121
  show_result_html :load, workflow, task, job.name, job, params
121
122
  when :table
@@ -183,7 +184,7 @@ module WorkflowRESTHelpers
183
184
  EOF
184
185
  send_file png_file, :type => 'image/png', :filename => job.name + ".heatmap.png"
185
186
  else
186
- raise "Unsupported format: #{ format }"
187
+ raise "Unsupported format: #{ @format }"
187
188
  end
188
189
  end
189
190
 
@@ -249,7 +250,7 @@ module WorkflowRESTHelpers
249
250
  job.join
250
251
  end
251
252
 
252
- if format == :jobname
253
+ if @format == :jobname
253
254
  job.name
254
255
  else
255
256
  job_url = job.respond_to?(:url)? job.url : File.join("/", workflow.to_s, task, job.name)
@@ -270,7 +271,7 @@ module WorkflowRESTHelpers
270
271
  # $rest_cache_semaphore is defined in rbbt-util etc/app.d/semaphores.rb
271
272
  job.fork($rest_cache_semaphore) unless job.started?
272
273
 
273
- if format == :jobname
274
+ if @format == :jobname
274
275
  job.soft_grace
275
276
  content_type :text
276
277
  job.name
@@ -283,6 +284,15 @@ module WorkflowRESTHelpers
283
284
  rescue Exception
284
285
  Log.exception $!
285
286
  end
287
+ when :slurm
288
+ require 'rbbt/hpc'
289
+ batch_system = ENV["BATCH_SYSTEM"] || "SLURM"
290
+ system = HPC.batch_system batch_system
291
+ system.orchestrate_job(job, {})
292
+ job_url = job.respond_to?(:url)? job.url : File.join("/", workflow.to_s, task, job.name)
293
+ job_url += "?_format=#{@format}" if @format
294
+ iii job_url
295
+ redirect to(job_url)
286
296
  else
287
297
  raise "Unsupported execution_type: #{ execution_type }"
288
298
  end
@@ -291,7 +301,7 @@ module WorkflowRESTHelpers
291
301
  def recursive_clean_job(workflow, job)
292
302
  job.recursive_clean
293
303
 
294
- if format == :jobname
304
+ if @format == :jobname
295
305
  halt 200, job.name
296
306
  elsif ajax
297
307
  halt 200
@@ -309,9 +319,9 @@ module WorkflowRESTHelpers
309
319
  def clean_job(workflow, job)
310
320
  job.clean
311
321
 
312
- if format == :jobname
322
+ if @format == :jobname
313
323
  halt 200, job.name
314
- elsif ajax or format == :json
324
+ elsif @ajax or @format == :json
315
325
  halt 200
316
326
  else
317
327
  redirect to(File.join("/", workflow.to_s, job.task_name.to_s))
@@ -44,7 +44,7 @@ module Sinatra
44
44
  self.instance_eval workflow.libdir.lib['sinatra.rb'].read, workflow.libdir.lib['sinatra.rb'].find if workflow.respond_to?(:libdir) and File.exist? workflow.libdir.lib['sinatra.rb']
45
45
 
46
46
  get "/#{workflow.to_s}" do
47
- case format
47
+ case @format
48
48
  when :json
49
49
  content_type "application/json"
50
50
 
@@ -56,14 +56,14 @@ module Sinatra
56
56
  end
57
57
 
58
58
  get "/#{workflow.to_s}/documentation" do
59
- case format
59
+ case @format
60
60
  when :html
61
61
  workflow_render('tasks', workflow)
62
62
  when :json
63
63
  content_type "application/json"
64
64
  workflow.documentation.to_json
65
65
  else
66
- raise "Unsupported format specified: #{ format }"
66
+ raise "Unsupported format specified: #{ @format }"
67
67
  end
68
68
  end
69
69
 
@@ -72,14 +72,14 @@ module Sinatra
72
72
 
73
73
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
74
74
 
75
- case format
75
+ case @format
76
76
  when :html
77
77
  workflow_render('task_info', workflow, nil, :cache => false )
78
78
  when :json
79
79
  content_type "application/json"
80
80
  workflow.task_info(task.to_sym).to_json
81
81
  else
82
- raise "Unsupported format specified: #{ format }"
82
+ raise "Unsupported format specified: #{ @format }"
83
83
  end
84
84
  end
85
85
 
@@ -88,14 +88,14 @@ module Sinatra
88
88
 
89
89
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
90
90
 
91
- case format
91
+ case @format
92
92
  when :html
93
93
  workflow_render('task_dependencies', workflow)
94
94
  when :json
95
95
  content_type "application/json"
96
96
  workflow.task_dependencies[task.to_sym].to_json
97
97
  else
98
- raise "Unsupported format specified: #{ format }"
98
+ raise "Unsupported format specified: #{ @format }"
99
99
  end
100
100
  end
101
101
 
@@ -116,7 +116,7 @@ module Sinatra
116
116
 
117
117
  task_parameters[:jobname] = jobname
118
118
 
119
- if complete_input_set(workflow, task, task_parameters) || format != :html || jobname
119
+ if complete_input_set(workflow, task, task_parameters) || @format != :html || jobname
120
120
  issue_job(workflow, task, jobname, task_parameters)
121
121
  else
122
122
  workflow_render('form', workflow, task, task_parameters)
@@ -185,7 +185,7 @@ module Sinatra
185
185
  error_for job
186
186
  when error
187
187
  error_for job
188
- when (exec_type == :asynchronous or exec_type == :async)
188
+ when (exec_type == :asynchronous or exec_type == :async or exec_type == :slurm)
189
189
  case @format.to_s
190
190
  when 'json', 'raw', 'binary'
191
191
  halt 202
@@ -226,7 +226,7 @@ module Sinatra
226
226
 
227
227
  halt 404, "Job not found: #{job.path} (#{job.status})" if job.status == :noinfo and not job.done?
228
228
 
229
- case format
229
+ case @format
230
230
  when :html
231
231
  workflow_render('job_info', workflow, task, :job => job, :info => job.info)
232
232
  when :input_bundle
@@ -262,7 +262,7 @@ module Sinatra
262
262
  end
263
263
  halt 200, info_json.to_json
264
264
  else
265
- raise "Unsupported format specified: #{ format }"
265
+ raise "Unsupported format specified: #{ @format }"
266
266
  end
267
267
  end
268
268
 
@@ -276,14 +276,14 @@ module Sinatra
276
276
 
277
277
  job = workflow.fast_load_id(File.join(task, job))
278
278
 
279
- case format
279
+ case @format
280
280
  when :html
281
281
  workflow_render('job_files', workflow, task, :info => job.info, :job => job)
282
282
  when :json
283
283
  content_type "application/json"
284
284
  job.files.to_json
285
285
  else
286
- raise "Unsupported format specified: #{ format }"
286
+ raise "Unsupported format specified: #{ @format }"
287
287
  end
288
288
  end
289
289
 
@@ -141,7 +141,7 @@ $cyan: rgba(50, 211, 255, 1)
141
141
  .dependencies, .job_info
142
142
  .status
143
143
  color: $cyan
144
- .status.waiting, .status.noinfo
144
+ .status.waiting, .status.noinfo, .status.cleaned
145
145
  color: $yellow
146
146
  .status.started
147
147
  color: $cyan
@@ -22,7 +22,7 @@
22
22
  - when String
23
23
  %p= card.description
24
24
  - when Proc
25
- = capture_haml &card.description
25
+ = capture &card.description
26
26
  - else
27
27
  - raise "Unknown description: #{fff card.description}"
28
28
 
@@ -36,7 +36,7 @@
36
36
  - inputs, input_block = input
37
37
  - if inputs.select{|input| @params[input.to_s].nil? }.any?
38
38
  - require_parameters = true
39
- - exception_html = capture_haml &input_block
39
+ - exception_html = capture &input_block
40
40
  - break
41
41
 
42
42
  - else
@@ -51,5 +51,5 @@
51
51
  - if require_parameters
52
52
  .ui.message.warning Please configure the parameters to execute the action
53
53
  - else
54
- = capture_haml &block
54
+ = capture &block
55
55
 
@@ -96,7 +96,7 @@
96
96
  - if defined? block and block
97
97
  /-- description block --
98
98
  .description.ui.basic.segment<
99
- = capture_haml &block
99
+ = capture &block
100
100
 
101
101
  - card.sections.each do |name,section_block|
102
102
  .ui.very.basic.segment(id="#{Misc.snake_case(name)}")
@@ -98,7 +98,7 @@
98
98
  - if defined? block and block
99
99
  /-- description block --
100
100
  .description.ui.basic.segment<
101
- = capture_haml &block
101
+ = capture &block
102
102
 
103
103
  - card.sections.each do |name,section_block|
104
104
  .ui.very.basic.segment(id="#{Misc.snake_case(name)}")
@@ -4,8 +4,11 @@
4
4
  %ul.dependencies
5
5
  - job.dependencies.reverse.each do |dep|
6
6
  - dep_workflow = dep.workflow
7
+ - dep_workflow = nil if dep_workflow == ""
7
8
  - dep_workflow ||= dep.task.workflow if dep.task
9
+ - dep_workflow = nil if dep_workflow == ""
8
10
  - dep_workflow ||= File.basename(File.dirname(File.dirname(dep.path)))
11
+ - dep_workflow = nil if dep_workflow == ""
9
12
  - str = [dep_workflow, dep.task_name, dep.name].compact * " - "
10
13
  - remote = true if Open.remote?(dep.path) || Open.ssh?(dep.path)
11
14
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-17 00:00:00.000000000 Z
11
+ date: 2023-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: modular-scale
@@ -1853,7 +1853,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1853
1853
  - !ruby/object:Gem::Version
1854
1854
  version: '0'
1855
1855
  requirements: []
1856
- rubygems_version: 3.4.8
1856
+ rubygems_version: 3.5.0.dev
1857
1857
  signing_key:
1858
1858
  specification_version: 4
1859
1859
  summary: Rbbt Web and REST interfaces