class Hodor::Oozie::Job

Attributes

columns[RW]
conf[R]
id[R]
index[R]
parent_id[R]
rest_call[R]
skip_to[R]

Public Class Methods

new() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 22
def initialize
  @index = -1
  @rest_call = session.last_query
end

Public Instance Methods

child_columns() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 119
def child_columns
  first_child = children.first
  if first_child
    first_child.class.default_columns
  else
    nil
  end
end
children() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 43
def children
  if @children.nil?
    @children = expand
  end
  @children
end
children_title() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 128
def children_title
  "#{self.class.name.split('::').last} Children"
end
conf_map() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 177
def conf_map
  io = StringIO.new(conf || "")
  handler = Configuration.new()
  Ox.sax_parse(handler, io)
  handler.map
end
definition() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 188
def definition
  session.get_job_state(id, "show=definition")
end
display_as_array(columns, ellipsis = false) click to toggle source
# File lib/hodor/api/oozie/job.rb, line 102
def display_as_array(columns, ellipsis = false)
  row = columns.inject([]) { |cols, head|
    if ellipsis
      val = "..."
    else
      display_override = "display_#{head.to_s}".to_sym
      if respond_to?(display_override)
        val = method(display_override.to_s).call
      else
        val = instance_variable_get("@#{head}")
        val = display_as_time(val) if val.is_a?(Time)
      end
    end
    cols << sanitize(val, 80)
  }
end
display_as_time(val) click to toggle source
# File lib/hodor/api/oozie/job.rb, line 50
def display_as_time(val)
  display_date = val.strftime("%Y-%m-%d %H:%M")
  cur_date = Time.now.strftime("%Y-")
  if display_date[0..4].eql?(cur_date)
    display_date[5..-1]
  else
    display_date
  end
end
display_children() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 132
def display_children
  if children.nil? || children.length == 0
    nil
  else
    headings = child_columns.map { |head| 
      head.to_s.split('_').map { |w| w.capitalize }.join(' ')
    }
    children.each_with_index { |c, i|
      c.set_index(i)
    }

    truncated = children.length > session.len
    childrows = truncated ? children[0..session.len-1] : children

    rows = childrows.inject([]) { |result, v|
      result << v.display_as_array(child_columns)
      result
    }

    rows[rows.length-1][0] = "#{rows[rows.length-1][0]}+" if truncated
    { headings: headings, rows: rows }
  end
end
display_properties() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 73
def display_properties
  if self.class.respond_to?(:suppress_properties)
    suppress = self.class.suppress_properties
  else
    suppress = false
  end
  props = suppress ? nil :
    instance_variables.map { |var| var[1..-1] }.select { |var| !var.eql?("index") }
  if props
    rows = props.inject([]) { |result, prop|
      display_override = "display_#{prop.to_s}".to_sym
      if respond_to?(display_override)
        val = method(display_override.to_s).call
      else
        val = instance_variable_get("@#{prop}")
        if val.is_a?(Time)
          val = display_as_time(val)
        else
          val = val
        end
      end
      result << [prop, sanitize(val)]
    }
    { rows: rows }
  else
    nil
  end
end
expand() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 39
def expand
  nil
end
indexed_job_id() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 31
def indexed_job_id
  nil
end
log() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 184
def log
  session.get_job_state(id, "show=log")
end
oozie() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 18
def oozie
  Hodor::Oozie
end
parse_time(timestamp) click to toggle source
# File lib/hodor/api/oozie/job.rb, line 35
def parse_time timestamp
  Time.strptime(timestamp, "%a, %d %b %Y %H:%M:%S %Z") if timestamp
end
sanitize(val, max_length = 120) click to toggle source
# File lib/hodor/api/oozie/job.rb, line 60
def sanitize val, max_length = 120
  sval = val.to_s.gsub(/\s+/, ' ')
  if sval.length > max_length
    sval.to_s[0..max_length-3] + '...'
  else
    sval
  end
end
session() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 14
def session
  Hodor::Oozie::Session.instance
end
set_index(i) click to toggle source
# File lib/hodor/api/oozie/job.rb, line 27
def set_index(i)
  @index = i
end
title() click to toggle source
# File lib/hodor/api/oozie/job.rb, line 69
def title
  "#{self.class.name.split('::').last} Properties"
end