class Protoboard::Helpers::ServicesHealthcheckGenerator
This class is responsible to generate information about the circuits
added
Public Instance Methods
call(with_namespace:)
click to toggle source
Verifies the list of circuits
added and returns a hash with the +circuits names+ and its states.
==== Examples { 'services' => { 'my_service_name' => { 'circuits' => { 'some_namespace/my_service_name/SomeClass#some_method' => 'OK', 'my_custom_name' => 'NOT_OK' } } } } ====
# File lib/protoboard/helpers/services_healthcheck_generator.rb, line 25 def call(with_namespace:) circuits_hash = Protoboard::CircuitBreaker.registered_circuits.map do |circuit| state = Protoboard.config.adapter.check_state(circuit.name) { name: circuit.name, status: state, service: circuit.service } end services_hash = circuits_hash .group_by { |circuit| circuit[:service] } .map do |service, circuits_hash| circuits = circuits_hash.each_with_object({}) do |circuit, memo| circuit_name = format_circuit_name(circuit[:name], with_namespace: with_namespace) memo[circuit_name] = circuit[:status] end { service => { 'circuits' => circuits } } end.reduce(:merge) { 'services' => services_hash.to_h } end
Private Instance Methods
format_circuit_name(circuit_name, with_namespace:)
click to toggle source
# File lib/protoboard/helpers/services_healthcheck_generator.rb, line 47 def format_circuit_name(circuit_name, with_namespace:) return circuit_name if with_namespace circuit_name.sub("#{Protoboard.config.namespace}/", '') end