Sha256: 711f13eb11c43d9c3b0930a8d09be723ce7c42aa9832a99cf287ce445bbeaa8c

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module Outpost
  class DSL
    class << self
      attr_reader :scouts

      def using(scouts, &block)
        @scouts ||= Hash.new { |h, k| h[k] = {} }

        config = ScoutConfig.new
        config.instance_eval(&block)

        scouts.each do |scout, description|
          @scouts[scout][:description] = description
          @scouts[scout][:config]      = config
        end
      end
    end

    attr_reader :last_status, :reports

    def run
      @reports = self.class.scouts.map do |scout, options|
        run_scout(scout, options)
      end

      statuses = @reports.map { |r| r.status }

      @last_status = Report.summarize(statuses)
    end

    def up?
      @last_status == :up
    end

    def down?
      @last_status == :down
    end

    def messages
      reports.map { |r| r.to_s }
    end

    def run_scout(scout, options)
      scout_instance = scout.new(options[:description], options[:config])

      params = {
        :name        => scout.name,
        :description => options[:description],
        :status      => scout_instance.run
      }
      Report.new(params)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
outpost-0.1.0 lib/outpost/dsl.rb