Sha256: 62e9626bef54453be6471cb61720262ae05e806c25308f8799d8a8ef9e75f595

Contents?: true

Size: 1.54 KB

Versions: 96

Compression:

Stored size: 1.54 KB

Contents

module Katello
  module EventDaemon
    class Monitor
      def initialize(services)
        @services = services
        @service_statuses = {}
        @services.keys.each do |service_name|
          @service_statuses[service_name] = { running: 'starting' }
        end
      end

      def start
        write_statuses_to_cache
        loop do
          Rails.application.executor.wrap do
            check_services
          end
          sleep 15
        end
      end

      def write_statuses_to_cache
        Rails.cache.write(
          Katello::EventDaemon::Runner::STATUS_CACHE_KEY,
          @service_statuses
        )
      end

      def check_services
        @services.each do |service_name, service_class|
          @service_statuses[service_name] = service_class.status
        rescue => error
          Rails.logger.error("Error occurred while pinging #{service_class}")
          Rails.logger.error(error.message)
          Rails.logger.error(error.backtrace.join("\n"))
        ensure
          if error || !@service_statuses.dig(service_name, :running)
            begin
              service_class.close
              service_class.run
              sleep 0.1
              @service_statuses[service_name] = service_class.status
            rescue => error
              Rails.logger.error("Error occurred while starting #{service_class}")
              Rails.logger.error(error.message)
              Rails.logger.error(error.backtrace.join("\n"))
            end
          end
        end
        write_statuses_to_cache
      end
    end
  end
end

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
katello-4.16.0 app/lib/katello/event_daemon/monitor.rb
katello-4.15.1 app/lib/katello/event_daemon/monitor.rb
katello-4.16.0.rc2 app/lib/katello/event_daemon/monitor.rb
katello-4.16.0.rc1 app/lib/katello/event_daemon/monitor.rb
katello-4.14.3 app/lib/katello/event_daemon/monitor.rb
katello-4.14.2 app/lib/katello/event_daemon/monitor.rb
katello-4.15.0 app/lib/katello/event_daemon/monitor.rb
katello-4.15.0.rc2 app/lib/katello/event_daemon/monitor.rb
katello-4.15.0.rc1 app/lib/katello/event_daemon/monitor.rb
katello-4.14.1 app/lib/katello/event_daemon/monitor.rb
katello-4.14.0 app/lib/katello/event_daemon/monitor.rb
katello-4.14.0.rc3 app/lib/katello/event_daemon/monitor.rb
katello-4.14.0.rc2 app/lib/katello/event_daemon/monitor.rb
katello-4.14.0.rc1.1 app/lib/katello/event_daemon/monitor.rb
katello-4.14.0.rc1 app/lib/katello/event_daemon/monitor.rb
katello-4.13.1 app/lib/katello/event_daemon/monitor.rb
katello-4.13.0 app/lib/katello/event_daemon/monitor.rb
katello-4.12.1 app/lib/katello/event_daemon/monitor.rb
katello-4.13.0.rc1 app/lib/katello/event_daemon/monitor.rb
katello-4.12.0 app/lib/katello/event_daemon/monitor.rb