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