Class: Philiprehberger::CircuitBoard::Status

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/circuit_board/status.rb

Overview

Represents the aggregated health status of all checks.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(results) ⇒ Status

Returns a new instance of Status.

Parameters:

  • results (Array<Hash>)

    individual check results



10
11
12
# File 'lib/philiprehberger/circuit_board/status.rb', line 10

def initialize(results)
  @results = results
end

Instance Attribute Details

#resultsObject (readonly)

Returns the value of attribute results.



7
8
9
# File 'lib/philiprehberger/circuit_board/status.rb', line 7

def results
  @results
end

Instance Method Details

#degraded?Boolean

Whether the system is degraded: all critical checks pass but at least one non-critical fails.

Returns:

  • (Boolean)


55
56
57
58
59
# File 'lib/philiprehberger/circuit_board/status.rb', line 55

def degraded?
  return false if healthy?

  critical_ok? && @results.any? { |r| !r[:healthy] }
end

#durationFloat

Total wall-clock duration (max of individual durations).

Returns:

  • (Float)


38
39
40
41
42
# File 'lib/philiprehberger/circuit_board/status.rb', line 38

def duration
  return 0.0 if @results.empty?

  @results.map { |r| r[:duration] || 0.0 }.max
end

#healthy?Boolean

Whether all checks passed.

Returns:

  • (Boolean)


17
18
19
# File 'lib/philiprehberger/circuit_board/status.rb', line 17

def healthy?
  @results.all? { |r| r[:healthy] }
end

#healthy_checksArray<Hash>

Return check results that passed.

Returns:

  • (Array<Hash>)


31
32
33
# File 'lib/philiprehberger/circuit_board/status.rb', line 31

def healthy_checks
  @results.select { |r| r[:healthy] }
end

#to_hHash

Convert to a hash representation.

Returns:

  • (Hash)

    status hash with :status and :checks keys



64
65
66
67
68
69
# File 'lib/philiprehberger/circuit_board/status.rb', line 64

def to_h
  {
    status: compute_status,
    checks: @results
  }
end

#to_json(*_args) ⇒ String

JSON representation.

Returns:

  • (String)


47
48
49
50
# File 'lib/philiprehberger/circuit_board/status.rb', line 47

def to_json(*_args)
  require 'json'
  JSON.generate(to_h)
end

#unhealthy_checksArray<Hash>

Return check results that failed.

Returns:

  • (Array<Hash>)


24
25
26
# File 'lib/philiprehberger/circuit_board/status.rb', line 24

def unhealthy_checks
  @results.reject { |r| r[:healthy] }
end