Class: BashManager

Inherits:
QueueManager show all
Defined in:
lib/autoflow/queue_managers/bash_manager.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from QueueManager

#asign_queue_id, #close_file, #create_file, #create_folder, descendants, #exec, #get_all_deps, #get_dependencies, #get_queue_system_dependencies, #get_relations_and_folders, #init_log, #launch2queue_system, #launch_job_in_folder, #make_environment_file, #read_file, #rm_done_dependencies, select_manager, select_queue_manager, #sort_jobs_by_dependencies, #system_call, system_call, #write_file, #write_job

Constructor Details

#initialize(exec_folder, options, commands, persist_variables) ⇒ BashManager

Returns a new instance of BashManager.



4
5
6
7
8
9
10
11
12
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 4

def initialize(exec_folder, options, commands, persist_variables)
  super
  @queued = []
  @count = 0
  @pids = {}
  @path2execution_script = File.join(@exec_folder, 'execution.sh') 
  create_file('execution.sh', @exec_folder)
  write_file('execution.sh', '#! /usr/bin/env bash')
end

Class Method Details

.available?(options) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 44

def self.available?(options)
  return true
end

.priorityObject



48
49
50
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 48

def self.priority
  return 0 
end

Instance Method Details

#get_queue_system_id(shell_output) ⇒ Object



40
41
42
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 40

def get_queue_system_id(shell_output)
  return nil
end

#launch_all_jobsObject



14
15
16
17
18
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 14

def launch_all_jobs
  super
  close_file('execution.sh', 0755)
  system_call("#{@path2execution_script} > #{File.join(File.dirname(@path2execution_script),'output')} & ", @exec_folder)
end

#submit_job(job, ar_dependencies) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 24

def submit_job(job, ar_dependencies)
  write_file('execution.sh','')
  if !ar_dependencies.empty? 
    ar_dependencies.each do |dep|
      cmd = "wait \"$pid#{@pids[dep]}\"\nif [ $? -ne 0 ]\nthen \n\techo \"#{job.name} failed\"\n\texit\nfi"
      write_file('execution.sh', cmd) 
    end
  end
  write_file('execution.sh', "cd #{job.attrib[:exec_folder]}")
  write_file('execution.sh', "./#{job.name}.sh &> task_log & pid#{@count}=$!")
  @pids[job.name] = @count
  @count += 1
  @queued << job.name # For dependencies purposes
  return nil
end

#write_header(id, node, sh) ⇒ Object



20
21
22
# File 'lib/autoflow/queue_managers/bash_manager.rb', line 20

def write_header(id, node, sh)
  #@queued << id # For dependencies purposes
end