class Ufo::Ps::Task

Public Class Methods

extra_columns() click to toggle source
# File lib/ufo/ps/task.rb, line 95
def self.extra_columns
  @@extra_columns
end
extra_columns=(val) click to toggle source
# File lib/ufo/ps/task.rb, line 91
def self.extra_columns=(val)
  @@extra_columns = val
end
header() click to toggle source
# File lib/ufo/ps/task.rb, line 3
def self.header
  header = %w[Id Name Release Started Status Notes]
  header << "Container Instance" if extra_columns
  header
end
new(task) click to toggle source
# File lib/ufo/ps/task.rb, line 9
def initialize(task)
  @task = task
end

Public Instance Methods

container_instance_arn() click to toggle source
# File lib/ufo/ps/task.rb, line 29
def container_instance_arn
  @task['container_instance_arn'].split('/').last
end
extra_columns() click to toggle source
# File lib/ufo/ps/task.rb, line 99
def extra_columns
  self.class.extra_columns
end
hide?() click to toggle source

hide stopped tasks have been stopped for more than 5 minutes

created_at=2018-07-05 21:52:13 -0700,

started_at=2018-07-05 21:52:15 -0700, stopping_at=2018-07-05 22:03:44 -0700, stopped_at=2018-07-05 22:03:45 -0700,

# File lib/ufo/ps/task.rb, line 54
def hide?
  stopped_at = time(@task["stopped_at"])
  status == "STOPPED" && stopped_at < Time.now - 60 * 5
end
id() click to toggle source
# File lib/ufo/ps/task.rb, line 19
def id
  @task['task_arn'].split('/').last.split('-').first
end
name() click to toggle source
# File lib/ufo/ps/task.rb, line 23
def name
  @task["overrides"]["container_overrides"].first["name"]
rescue NoMethodError
  @task["containers"].first["name"]
end
notes() click to toggle source
# File lib/ufo/ps/task.rb, line 63
def notes
  return unless @task["stopped_reason"]

  if @task["stopped_reason"] =~ /Task failed ELB health checks/
    "Failed ELB health check"
  else
    @task["stopped_reason"]
  end
end
relative_time(start_time) click to toggle source

stackoverflow.com/questions/195740/how-do-you-do-relative-time-in-rails/195894

# File lib/ufo/ps/task.rb, line 74
def relative_time(start_time)
  diff_seconds = Time.now - start_time
  case diff_seconds
    when 0 .. 59
      "#{diff_seconds.to_i} seconds ago"
    when 60 .. (3600-1)
      "#{(diff_seconds/60).to_i} minutes ago"
    when 3600 .. (3600*24-1)
      "#{(diff_seconds/3600).to_i} hours ago"
    when (3600*24) .. (3600*24*30)
      "#{(diff_seconds/(3600*24)).to_i} days ago"
    else
      start_time.strftime("%m/%d/%Y")
  end
end
release() click to toggle source
# File lib/ufo/ps/task.rb, line 33
def release
  @task["task_definition_arn"].split('/').last
end
started() click to toggle source
# File lib/ufo/ps/task.rb, line 37
def started
  started = time(@task["started_at"])
  return "PENDING" unless started
  relative_time(started)
end
status() click to toggle source
# File lib/ufo/ps/task.rb, line 59
def status
  @task["last_status"]
end
time(value) click to toggle source
# File lib/ufo/ps/task.rb, line 43
def time(value)
  Time.parse(value.to_s)
rescue ArgumentError
  nil
end
to_a() click to toggle source
# File lib/ufo/ps/task.rb, line 13
def to_a
  row = [id, name, release, started, status, notes]
  row << container_instance_arn if extra_columns
  row
end