Sha256: 1f17677103228f695f5afafba55284fb95db8354ceebd8356be9749c0b19c863

Contents?: true

Size: 1.61 KB

Versions: 9

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module Karafka
  module Web
    module Ui
      module Models
        # Aggregated health data statistics representation
        class Health
          class << self
            # @param state [State] current system state
            # @return [Hash] has with aggregated statistics
            def current(state)
              stats = {}

              iterate_partitions(state) do |process, consumer_group, topic, partition|
                cg_name = consumer_group.id
                t_name = topic.name
                pt_id = partition.id

                stats[cg_name] ||= {}
                stats[cg_name][t_name] ||= {}
                stats[cg_name][t_name][pt_id] = partition.to_h
                stats[cg_name][t_name][pt_id][:process] = process
              end

              stats
            end

            private

            # Iterates over all partitions, yielding with extra expanded details
            #
            # @param state [State]
            def iterate_partitions(state)
              processes = Processes.active(state)

              processes.each do |process|
                process.consumer_groups.each do |consumer_group|
                  consumer_group.subscription_groups.each do |subscription_group|
                    subscription_group.topics.each do |topic|
                      topic.partitions.each do |partition|
                        yield(process, consumer_group, topic, partition)
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
karafka-web-0.6.3 lib/karafka/web/ui/models/health.rb
karafka-web-0.6.2 lib/karafka/web/ui/models/health.rb
karafka-web-0.6.1 lib/karafka/web/ui/models/health.rb
karafka-web-0.6.0 lib/karafka/web/ui/models/health.rb
karafka-web-0.5.2 lib/karafka/web/ui/models/health.rb
karafka-web-0.5.1 lib/karafka/web/ui/models/health.rb
karafka-web-0.5.0 lib/karafka/web/ui/models/health.rb
karafka-web-0.4.1 lib/karafka/web/ui/models/health.rb
karafka-web-0.4.0 lib/karafka/web/ui/models/health.rb