Sha256: ca71106ee73538587cdaf0eac0b16290185b936048f37460fe416bb1f99d5545

Contents?: true

Size: 1.58 KB

Versions: 23

Compression:

Stored size: 1.58 KB

Contents

require 'roo_on_rails/checks/env_specific'
require 'roo_on_rails/checks/git/origin'
require 'roo_on_rails/checks/heroku/app_exists'
require 'roo_on_rails/checks/heroku/metrics_bridge_configured'
require 'uri'

module RooOnRails
  module Checks
    module Heroku
      # Checks that the app is configured to send its logs to the Heroku-Datadog
      # metrics bridge.
      #
      # Input context
      # - heroku.api_client: a connected PlatformAPI client
      # - heroku.app.{env}: an existing app name.
      # - heroku.metric_bridge_token.{env}: the password for the metrics bridge
      class DrainsMetrics < EnvSpecific
        requires Heroku::AppExists, MetricsBridgeConfigured

        def intro
          'Checking for metrics drain...'
        end

        def call
          url = client.log_drain.list(app_name).
                map { |h| h['url'] }.
                find { |u| u.include? MetricsBridgeConfigured::BRIDGE_APP }

          fail! 'No matching drain found' if url.nil?
          final_fail! 'Misconfigured drain found' if url != drain_uri
          pass "Drain is connected to #{bold app_name}"
        end

        private

        def fix
          client.log_drain.create(app_name, url: drain_uri)
        end

        def drain_uri
          'https://%s:%s@%s.herokuapp.com' % [
            app_name,
            context.heroku.metric_bridge_token![env],
            MetricsBridgeConfigured::BRIDGE_APP
          ]
        end

        def app_name
          context.heroku.app[env]
        end

        def client
          context.heroku.api_client
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
roo_on_rails-2.2.2 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.2.1 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.2.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.1.2 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.1.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.0.0.pre.pre.2 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-2.0.0.pre.pre.1 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.22.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.21.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.20.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.19.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.18.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.17.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.16.2 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.16.1 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.16.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.15.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.14.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.13.1 lib/roo_on_rails/checks/heroku/drains_metrics.rb
roo_on_rails-1.13.0 lib/roo_on_rails/checks/heroku/drains_metrics.rb