Sha256: 7591738988f8076e44c95f9377e1bed4e9f83c3759a25fa9bd85706efd3541fd

Contents?: true

Size: 1.74 KB

Versions: 4

Compression:

Stored size: 1.74 KB

Contents

module Vidar
  module K8s
    class ContainerStatus
      attr_reader :data, :state

      def initialize(data)
        @data = data
        @state = data["state"]
      end

      def name
        data["name"]
      end

      def ok?
        (ready? && running?) || terminated_completed?
      end

      def to_text
        parts = ["Name: #{name}"] + text_statuses
        parts.map { |s| s.ljust(50, " ") }.join(" | ")
      end

      def text_statuses
        if running?
          if ready?
            [ColorizedString["Status: Ready & Running"].light_green, "Started at: #{running_started_at}"]
          else
            [ColorizedString["Status: Not ready"].light_red, "Started at: #{running_started_at}"]
          end
        elsif terminated_completed?
          [ColorizedString["Status: Terminated/Completed"].light_green, "Finished at: #{terminated_finished_at}"]
        elsif terminated_error?
          [ColorizedString["Status: Terminated/Error"].light_red]
        elsif waiting?
          [ColorizedString["Status: Waiting"].light_green]
        else
          [ColorizedString[state.inspect].light_red]
        end
      end

      def waiting?
        state["waiting"]
      end

      def ready?
        data["ready"]
      end

      def running?
        !running_started_at.nil?
      end

      def running_started_at
        state.dig("running", "startedAt")
      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
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vidar-0.2.0 lib/vidar/k8s/container_status.rb
vidar-0.1.6 lib/vidar/k8s/container_status.rb
vidar-0.1.5 lib/vidar/k8s/container_status.rb
vidar-0.1.4 lib/vidar/k8s/container_status.rb