Sha256: 29f1abd0f7cde20739a07976ce15b6a20c02814719c71937efb05e4c6ab4012b

Contents?: true

Size: 1.74 KB

Versions: 53

Compression:

Stored size: 1.74 KB

Contents

module Kontena::Cli::Helpers
  module HealthHelper
    def health_icon(health)
      case health
      when nil
        " "
      when :ok
        pastel.green('⊛')
      when :warning
        pastel.yellow('⊙')
      when :error
        pastel.red('⊗')
      when :offline
        pastel.dark('⊝')
      else
        fail "Invalid health=#{health}"
      end
    end

    # Validate grid nodes configuration and status
    #
    # @param grid [Hash] get(/grids/:grid) => { ... }
    # @param nodes [Array<Hash>] get(/grids/:grid/nodes)[nodes] => [ { ... } ]
    # @return [Symbol] health
    def grid_health(grid, nodes)
      initial = grid['initial_size']
      minimum = grid['initial_size'] / 2 + 1 # a majority is required for etcd quorum

      online = nodes.select{|node| node['initial_member'] && node['connected']}

      if online.length < minimum
        return :error
      elsif online.length < initial
        return :warning
      else
        return :ok
      end
    end

    # Validate grid node status based on the grid health
    #
    # @param node [Hash] GET /nodes/:grid/:node
    # @param grid_health [Symbol] @see #grid_health
    # @return [Symbol] health
    def node_health(node, grid_health)
      if node['initial_member']
        return node['connected'] ? grid_health : :offline
      else
        return node['connected'] ? :ok : :offline
      end
    end

    # @param node_etcd_health [Hash{health: String, error: String}]
    # @return [Symbol, String]
    def node_etcd_health(node_etcd_health)
      if node_etcd_health['health']
        return :ok, "healthy"
      elsif node_etcd_health['error']
        return :error, "unhealthy: #{node_etcd_health['error']}"
      else
        return :error, "unhealthy"
      end
    end
  end
end

Version data entries

53 entries across 53 versions & 2 rubygems

Version Path
krates-1.7.11 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.10 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.9 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.8 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.7 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.6 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.5 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.4 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.3 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.2 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.1 lib/kontena/cli/helpers/health_helper.rb
krates-1.7.0 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.9 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.8 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.7 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.6 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.5 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.4 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.3 lib/kontena/cli/helpers/health_helper.rb
krates-1.6.2 lib/kontena/cli/helpers/health_helper.rb