lib/vidar/k8s/container_status.rb in vidar-0.3.4 vs lib/vidar/k8s/container_status.rb in vidar-0.4.0

- old
+ new

@@ -1,24 +1,35 @@ module Vidar module K8s class ContainerStatus - attr_reader :data, :state, :namespace + JOB_KIND = "Job".freeze + attr_reader :data, :state, :namespace, :kind + def initialize(data) - @data = data - @state = data["state"] + @data = data + @state = data["state"] @namespace = data["namespace"] + @kind = data["kind"] end def name data["name"] end - def ok? - (ready? && running?) || terminated_completed? + def deployed? + return terminated? if job? + + ready? && running? end + def success? + return terminated_completed? if job? + + ready? && running? + end + def print puts to_text end def to_text @@ -35,17 +46,17 @@ [ColorizedString["Ready & Running"].light_green, "Started at: #{running_started_at}"] else [ColorizedString["Not ready"].light_red, "Started at: #{running_started_at}"] end elsif terminated_completed? - [ColorizedString["Terminated/Completed"].light_green, "Finished at: #{terminated_finished_at}"] + [ColorizedString["Terminated/Completed"].light_green, terminated_finished_at ? "Finished at: #{terminated_finished_at}" : ""] elsif terminated_error? - [ColorizedString["Terminated/Error"].light_red] + [ColorizedString["Terminated/Error"].light_red, ""] elsif waiting? - [ColorizedString["Waiting"].light_green] + [ColorizedString["Waiting"].light_green, ""] else - [ColorizedString[state.inspect].light_red] + [ColorizedString[state.inspect].light_red, ""] end end def waiting? state["waiting"] @@ -61,19 +72,27 @@ def running_started_at state.dig("running", "startedAt") end + def terminated? + !state["terminated"].nil? + end + def terminated_completed? state.dig("terminated", "reason") == "Completed" || state.dig("terminated", "exitCode") == 0 end def terminated_finished_at state.dig("terminated", "finishedAt") end def terminated_error? state.dig("terminated", "reason") == "Error" || state.dig("terminated", "exitCode") + end + + def job? + kind == JOB_KIND end end end end