simplews 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/simplews.rb +8 -6
- data/lib/simplews/jobs.rb +28 -1
- metadata +2 -2
data/lib/simplews.rb
CHANGED
@@ -110,6 +110,7 @@ class SimpleWS < SOAP::RPC::StandaloneServer
|
|
110
110
|
puts "Server #{ name } at #{ host }:#{ port }"
|
111
111
|
|
112
112
|
desc "Return the WSDL describing the web server"
|
113
|
+
param_desc :return => "WSDL description"
|
113
114
|
serve :wsdl, %w(), :return => :string
|
114
115
|
METHODS.each{|name, info|
|
115
116
|
serve name, info[:args], info[:types], &info[:block]
|
@@ -127,24 +128,24 @@ class SimpleWS < SOAP::RPC::StandaloneServer
|
|
127
128
|
@@last_param_description = nil
|
128
129
|
STEP_DESCRIPTIONS = {}
|
129
130
|
PARAMETER_DESCRIPTIONS = {}
|
130
|
-
def desc(text)
|
131
|
+
def desc(text = "")
|
131
132
|
@@last_description = text
|
132
133
|
end
|
133
134
|
|
134
135
|
# Add descriptions for the parameters of the next method served
|
135
|
-
def param_desc(param_descriptions)
|
136
|
+
def param_desc(param_descriptions = {})
|
136
137
|
@@last_param_description = {}
|
137
138
|
param_descriptions.each{|param, description| @@last_param_description[param.to_s] = description}
|
138
139
|
end
|
139
140
|
|
140
141
|
# Add a description for the next method served defined in at the class level
|
141
|
-
def self.desc(text)
|
142
|
+
def self.desc(text = "")
|
142
143
|
@@last_description = text
|
143
144
|
end
|
144
145
|
|
145
146
|
# Add descriptions for the parameters of the next method served at the class
|
146
147
|
# level
|
147
|
-
def self.param_desc(param_descriptions)
|
148
|
+
def self.param_desc(param_descriptions = {})
|
148
149
|
@@last_param_description = {}
|
149
150
|
param_descriptions.each{|param, description| @@last_param_description[param.to_s] = description}
|
150
151
|
end
|
@@ -235,15 +236,16 @@ class SimpleWS < SOAP::RPC::StandaloneServer
|
|
235
236
|
@messages << message
|
236
237
|
|
237
238
|
message = Builder::XmlMarkup.new(:indent => 2).message :name => "#{ name }Response" do |xml|
|
238
|
-
type = types[:return]
|
239
|
+
type = [types[:return], types["return"]].compact.first
|
240
|
+
type = :string if type.nil?
|
239
241
|
if type
|
240
242
|
type = type.to_sym
|
241
|
-
end
|
242
243
|
xml.part :name => 'return', :type => TYPES2WSDL[type] do
|
243
244
|
if PARAMETER_DESCRIPTIONS[name] && PARAMETER_DESCRIPTIONS[name]['return']
|
244
245
|
xml.documentation PARAMETER_DESCRIPTIONS[name]['return']
|
245
246
|
end
|
246
247
|
end
|
248
|
+
end
|
247
249
|
end
|
248
250
|
@messages << message
|
249
251
|
|
data/lib/simplews/jobs.rb
CHANGED
@@ -369,6 +369,7 @@ class SimpleWS::Jobs < SimpleWS
|
|
369
369
|
PARAMETER_DESCRIPTIONS[name.to_s] ||= @@last_param_description
|
370
370
|
@@last_description = nil
|
371
371
|
@@last_param_description = nil
|
372
|
+
PARAMETER_DESCRIPTIONS[name.to_s]['return'] ||= 'Job identifier' if PARAMETER_DESCRIPTIONS[name.to_s]
|
372
373
|
|
373
374
|
Scheduler.task name, results, block
|
374
375
|
serve name.to_s, params + ['suggested_name'], types.merge(:suggested_name => 'string', :return => :string) do |*args|
|
@@ -382,6 +383,10 @@ class SimpleWS::Jobs < SimpleWS
|
|
382
383
|
PARAMETER_DESCRIPTIONS[name.to_s] ||= @@last_param_description
|
383
384
|
@@last_description = nil
|
384
385
|
@@last_param_description = nil
|
386
|
+
if PARAMETER_DESCRIPTIONS[name.to_s]
|
387
|
+
PARAMETER_DESCRIPTIONS[name.to_s]['return'] ||= 'Job identifier'
|
388
|
+
PARAMETER_DESCRIPTIONS[name.to_s]['suggested_name'] ||= 'Suggested name for the job'
|
389
|
+
end
|
385
390
|
|
386
391
|
Scheduler.task name, results, block
|
387
392
|
@@tasks[name] = {:params => params, :types => types};
|
@@ -408,44 +413,66 @@ class SimpleWS::Jobs < SimpleWS
|
|
408
413
|
end
|
409
414
|
}
|
410
415
|
|
416
|
+
|
417
|
+
desc "Return the names of the jobs in the queue"
|
418
|
+
param_desc :return => "Array of job names"
|
411
419
|
serve :queue, [], :return => :array do
|
412
420
|
Scheduler.queue.collect{|info| info[:name]}
|
413
421
|
end
|
414
422
|
|
423
|
+
desc "Check the status of a job"
|
424
|
+
param_desc :job => "Job identifier", :return => "Status code. Special status codes are: 'queue', 'done', 'error', and 'aborted'"
|
415
425
|
serve :status, ['job'], :job => :string, :return => :string do |job|
|
416
426
|
Scheduler.job_info(job)[:status].to_s
|
417
427
|
end
|
418
428
|
|
429
|
+
desc "Return an array with the messages issued by the job"
|
430
|
+
param_desc :job => "Job identifier", :return => "Array with message strings"
|
419
431
|
serve :messages, ['job'], :job => :string, :return => :array do |job|
|
420
432
|
Scheduler.job_info(job)[:messages]
|
421
433
|
end
|
422
434
|
|
435
|
+
desc "Return a YAML string containing arbitrary information set up by the job"
|
436
|
+
param_desc :job => "Job identifier", :return => "Hash with arbitrary values in YAML format"
|
423
437
|
serve :info, ['job'], :job => :string, :return => :string do |job|
|
424
438
|
Scheduler.job_info(job)[:info].to_yaml
|
425
439
|
end
|
426
440
|
|
427
|
-
|
441
|
+
desc "Abort the job"
|
442
|
+
param_desc :job => "Job identifier"
|
443
|
+
serve :abort, %w(job), :job => :string, :return => false do |job|
|
428
444
|
Scheduler.abort(job)
|
429
445
|
end
|
430
446
|
|
447
|
+
desc "Check if the job is done. Could have finished successfully, with error, or have been aborted"
|
448
|
+
param_desc :job => "Job identifier", :return => "True if the job has status 'done', 'error' or 'aborted'"
|
431
449
|
serve :done, %w(job), :job => :string, :return => :boolean do |job|
|
432
450
|
[:done, :error, :aborted].include? Scheduler.job_info(job)[:status].to_sym
|
433
451
|
end
|
434
452
|
|
453
|
+
desc "Check if the job has finished with error. The last message is the error message"
|
454
|
+
param_desc :job => "Job identifier", :return => "True if the job has status 'error'"
|
435
455
|
serve :error, %w(job), :job => :string, :return => :boolean do |job|
|
436
456
|
Scheduler.job_info(job)[:status] == :error
|
437
457
|
end
|
438
458
|
|
459
|
+
desc "Check if the job has been aborted"
|
460
|
+
param_desc :job => "Job identifier", :return => "True if the job has status 'aborted'"
|
439
461
|
serve :aborted, %w(job), :job => :string, :return => :boolean do |job|
|
440
462
|
Scheduler.job_info(job)[:status] == :aborted
|
441
463
|
end
|
442
464
|
|
465
|
+
desc "Return an array with result identifiers to be used with the 'result' operation. The content of the results depends
|
466
|
+
on the task"
|
467
|
+
param_desc :job => "Job identifier", :return => "Array of result identifiers"
|
443
468
|
serve :results, %w(job), :return => :array do |job|
|
444
469
|
results = Scheduler.job_results(job)
|
445
470
|
@results.merge! Hash[*results.flatten]
|
446
471
|
results.collect{|p| p[0]}
|
447
472
|
end
|
448
473
|
|
474
|
+
desc "Return the content of the result specified by the result identifier. These identifiers are retrieve using the 'results' operation"
|
475
|
+
param_desc :result => "Result identifier", :return => "Content of the result file, in Base64 encoding for compatibility"
|
449
476
|
serve :result, %w(result), :return => :binary do |result|
|
450
477
|
path = @results[result]
|
451
478
|
raise ResultNotFound unless File.exist? path
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplews
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-31 00:00:00 +01:00
|
13
13
|
default_executable: start_ws
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|