Sha256: b7c24ec58060f867d9c03be60f56135782f24fff8747a92ee727d175e78a9312

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

module SoarStatus
  class Status
    @@detailed_status_providers = {}
    @@release_version = ''
    @@release_commit_hash = ''
    @@detailed_status_providers = {}
    @@functional_status_provider = nil
    @@configuration = {}
    @@environment = {}

    def self.configuration=(configuration)
      @@configuration = configuration
    end

    def self.configuration
      @@configuration
    end

    def self.environment=(environment)
      @@environment = environment
    end

    def self.environment
      @@environment
    end

    def self.release_version=(release_version)
      @@release_version = release_version
    end

    def self.release_version
      @@release_version
    end

    def self.release_commit_hash=(release_commit_hash)
      @@release_commit_hash = release_commit_hash
    end

    def self.release_commit_hash
      @@release_commit_hash
    end

    def self.register_detailed_status_provider(name,provider)
      @@detailed_status_providers[name] = provider
    end

    def self.register_functional_status_provider(provider)
      @@functional_status_provider = provider
    end

    def self.functional_status
      return @@functional_status_provider.functional_status if @@functional_status_provider
      'no registered functional status provider'
    end

    def self.detailed_status
      {
        'release' => self.compile_release_information,
        'configuration' => @@configuration,
        'environment' => @@environment,
        'functional' => self.functional_status,
        'detail' => self.aggregate_detailed_statuses
      }
    end

    private

    def self.aggregate_detailed_statuses
      aggregated_statuses = {}
      @@detailed_status_providers.each do |name, object|
        aggregated_statuses[name] = object.detailed_status if object.detailed_status.is_a?(Hash)
      end
      aggregated_statuses
    end

    def self.compile_release_information
      {
        'commit_hash' => @@release_commit_hash,
        'version'     => @@release_version
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
soar_status-0.0.1 lib/soar_status/status.rb