class RemoteWorkflow
Constants
- RBBT_DEBUG_REMOTE_JSON
Attributes
Public Class Methods
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 41 def self.capture_exception begin yield rescue Exception => e raise e unless e.respond_to? :response begin ne = parse_exception e.response.to_s case ne when String raise e.class, ne when Exception raise ne else raise end rescue raise e end raise $! end end
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 5 def self.fix_hash(hash, fix_values = false) fixed = {} hash.each do |key, value| fixed[key.to_sym] = case value when TrueClass value when FalseClass value when Hash fix_hash(value) when (fix_values and String ) value.to_sym when IO value.read when TSV::Dumper value.stream when Step stream = get_stream(value) stream || value.load else value end end fixed end
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 63 def self.fix_params(params) new_params = {} params.each do |k,v| if Array === v and v.empty? new_params[k] = "EMPTY_ARRAY" else new_params[k] = v end end new_params end
Source
# File lib/rbbt/workflow/remote_workflow.rb, line 67 def self.load_path(job_url) parts = job_url.split("/") name = parts.pop.split("?").first task = parts.pop workflow = parts.last url = parts * "/" step = RemoteStep.new url, task, nil step.name = name step.workflow = workflow step.started = true step.result_type = step.info[:result_type] step.result_description = step.info[:result_description] step end
Source
# File lib/rbbt/workflow/remote_workflow.rb, line 8 def initialize(url, name = nil) name = File.basename(url) if name.nil? Log.debug{ "Loading remote workflow #{ name }: #{ url }" } @url, @name = url, name rest = url.include?('ssh://') ? false : true if rest self.extend RemoteWorkflow::REST else self.extend RemoteWorkflow::SSH end init_remote_tasks end
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 31 def self.parse_exception(text) klass, message = text.split " => " begin klass = Kernel.const_get klass return klass.new message rescue message end end
Public Instance Methods
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 75 def exported_tasks @asynchronous_exports + @synchronous_exports + @exec_exports end
Source
# File lib/rbbt/workflow/remote_workflow.rb, line 58 def load_id(id) task, name = id.split("/") step = RemoteStep.new url, task, nil step.name = name step.result_type = task_info(task)[:result_type] step.result_description = task_info(task)[:result_description] step end
Source
# File lib/rbbt/workflow/remote_workflow/driver.rb, line 79 def load_tasks exported_tasks.each{|name| tasks[name]} end
Source
# File lib/rbbt/workflow/remote_workflow.rb, line 28 def remote_job(task, name = nil, inputs = {}) task_info = task_info(task) fixed_inputs = {} input_types = IndiferentHash.setup(task_info[:input_types]) inputs.each do |k,v| k = k.to_sym if TSV === v fixed_inputs[k] = v.to_s elsif Path === v && Path.step_file?(v) fixed_inputs[k] = v.identify else next if input_types[k].nil? case input_types[k].to_sym when :tsv, :array, :file, :text fixed_inputs[k] = (String === v and Open.exists?(v)) ? Open.open(v) : v else fixed_inputs[k] = v end end end stream_input = @can_stream ? task_info(task)[:input_options].select{|k,o| o[:stream] }.collect{|k,o| k }.first : nil step = RemoteStep.new(url, task, name, fixed_inputs, task_info[:input_types], task_info[:result_type], task_info[:result_description], @exec_exports.include?(task), @stream_exports.include?(task), stream_input) step.workflow = self step end
Also aliased as: job