Class: WorkflowManager::TaskSpooler

Inherits:
LocalComputer show all
Defined in:
lib/workflow_manager/cluster.rb

Instance Attribute Summary

Attributes inherited from Cluster

#log_dir, #name, #options

Instance Method Summary collapse

Methods inherited from LocalComputer

#copy_commands, #delete_command, #job_ends?

Methods inherited from Cluster

#copy_commands, #default_node, #delete_command, #generate_new_job_script, #initialize, #job_ends?, #node_list

Constructor Details

This class inherits a constructor from WorkflowManager::Cluster

Instance Method Details

#cluster_nodesObject



141
142
143
# File 'lib/workflow_manager/cluster.rb', line 141

def cluster_nodes
  {"Local with TaskSpooler" => ""}
end

#job_pending?(job_id) ⇒ Boolean

Returns:

  • (Boolean)


123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/workflow_manager/cluster.rb', line 123

def job_pending?(job_id)
  command = "tsp"
  result = IO.popen(command) do |io|
    flag = false
    while line=io.gets
      x = line.split
      if x[0].to_i == job_id.to_i and x[1] == "queued"
        flag = true
        break
      end
    end
    flag
  end
  result
end

#job_running?(pid) ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/workflow_manager/cluster.rb', line 108

def job_running?(pid)
  command = "tsp"
  result = IO.popen(command) do |io|
    flag = false
    while line=io.gets
      x = line.split
      if x[0].to_i == pid.to_i and x[1] == "running"
        flag = true
        break
      end
    end
    flag
  end
  result
end

#kill_command(job_id) ⇒ Object



138
139
140
# File 'lib/workflow_manager/cluster.rb', line 138

def kill_command(job_id)
  command = "tsp -k #{job_id}"
end

#submit_job(script_file, script_content, option = '') ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/workflow_manager/cluster.rb', line 96

def submit_job(script_file, script_content, option='')
  if script_name = File.basename(script_file) and script_name =~ /\.sh$/
    new_job_script = generate_new_job_script(script_name, script_content)
    new_job_script_base = File.basename(new_job_script)
    log_file = File.join(@log_dir, new_job_script_base + "_o.log")
    err_file = File.join(@log_dir, new_job_script_base + "_e.log")
    command = "tsp sh -c 'bash #{new_job_script} 1> #{log_file} 2> #{err_file}'"
    job_id = `#{command}`.to_s.chomp
    sleep 1
    [job_id.to_s, log_file, command]
  end
end