Module: RemoteStep::SSH

Defined in:
lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#override_dependenciesObject

Returns the value of attribute override_dependencies.



3
4
5
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 3

def override_dependencies
  @override_dependencies
end

Instance Method Details

#cleanObject



74
75
76
77
78
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 74

def clean
  init_job
  RemoteWorkflow::SSH.clean(@url, @input_id, @base_name)
  _restart
end

#init_job(cache_type = nil, other_params = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 5

def init_job(cache_type = nil, other_params = {})
  return self if @url
  cache_type = :asynchronous if cache_type.nil? and not @is_exec
  cache_type = :exec if cache_type.nil?
  @last_info_time = nil
  @done = false
  @server, @server_path = RemoteWorkflow::SSH.parse_url base_url
  @input_id ||= "inputs-" << rand(100000).to_s

  if override_dependencies && override_dependencies.any?
    override_dependencies.each do |od|
      name, _sep, value = od.partition("=")
      inputs[name] = value
    end
  end

  inputs.select{|i| Step === i }.each{|i| i.produce }

  RemoteWorkflow::SSH.upload_inputs(@server, inputs, @input_types, @input_id)

  @remote_path ||= Persist.memory("RemoteSteps", :workflow => self, :task => task, :jobname => @name, :inputs => inputs, :cache_type => cache_type) do
    Misc.insist do
      input_types = {}
      RemoteWorkflow::SSH.post_job(File.join(base_url, task.to_s), @input_id, @base_name)
    end
  end
  @name = @remote_path.split("/").last

  if Open.remote?(@name)
    @url = @name
    @name = File.basename(@name)
  else
    @url = File.join(base_url, task.to_s, @name)
  end

  self
end

#loadObject



65
66
67
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 65

def load
  load_res Open.open(path)
end

#pathObject



43
44
45
46
47
48
49
50
51
52
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 43

def path
  @server, @server_path = RemoteWorkflow::SSH.parse_url @base_url
  if info[:path]
    "ssh://" + @server + ":" + info[:path]
  elsif @remote_path
    "ssh://" + @server + ":" + @remote_path
  else
    "ssh://" + @server + ":" + ["var/jobs", self.workflow.to_s, task_name.to_s, @name] * "/"
  end
end

#produce(*args) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 54

def produce(*args)
  input_types = {}
  init_job
  @remote_path = RemoteWorkflow::SSH.run_job(File.join(base_url, task.to_s), @input_id, @base_name)
  @started = true
  while ! done?
    sleep 1
  end
  self
end

#run(*args) ⇒ Object



69
70
71
72
# File 'lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb', line 69

def run(*args)
  produce(*args)
  self.load unless args.first
end