Sha256: a7158818ad7e973533d105cc321e95bda63f11af4e494340c9e5e86811ddb8e9

Contents?: true

Size: 1.56 KB

Versions: 24

Compression:

Stored size: 1.56 KB

Contents

require_relative 'ext'
require_relative '../environment/ext'
require_relative '../environment/identity'

module Datadog
  module Core
    module Metrics
      # For defining and adding default options to metrics
      module Options
        DEFAULT = {
          tags: DEFAULT_TAGS = [
            "#{Ext::TAG_LANG}:#{Environment::Identity.lang}".freeze,
            "#{Ext::TAG_LANG_INTERPRETER}:#{Environment::Identity.lang_interpreter}".freeze,
            "#{Ext::TAG_LANG_VERSION}:#{Environment::Identity.lang_version}".freeze,
            "#{Ext::TAG_TRACER_VERSION}:#{Environment::Identity.tracer_version}".freeze
          ].freeze
        }.freeze

        def metric_options(options = nil)
          return default_metric_options if options.nil?

          default_metric_options.merge(options) do |key, old_value, new_value|
            case key
            when :tags
              old_value.dup.concat(new_value).uniq
            else
              new_value
            end
          end
        end

        def default_metric_options
          # Return dupes, so that the constant isn't modified,
          # and defaults are unfrozen for mutation in Statsd.
          DEFAULT.dup.tap do |options|
            options[:tags] = options[:tags].dup

            env = Datadog.configuration.env
            options[:tags] << "#{Environment::Ext::TAG_ENV}:#{env}" unless env.nil?

            version = Datadog.configuration.version
            options[:tags] << "#{Environment::Ext::TAG_VERSION}:#{version}" unless version.nil?
          end
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
ddtrace-1.23.3 lib/datadog/core/metrics/options.rb
ddtrace-1.23.2 lib/datadog/core/metrics/options.rb
ddtrace-1.23.1 lib/datadog/core/metrics/options.rb
ddtrace-1.22.0 lib/datadog/core/metrics/options.rb
ddtrace-1.21.1 lib/datadog/core/metrics/options.rb
ddtrace-1.21.0 lib/datadog/core/metrics/options.rb
ddtrace-1.20.0 lib/datadog/core/metrics/options.rb
ddtrace-1.19.0 lib/datadog/core/metrics/options.rb
ddtrace-1.18.0 lib/datadog/core/metrics/options.rb
ddtrace-1.17.0 lib/datadog/core/metrics/options.rb
ddtrace-1.16.2 lib/datadog/core/metrics/options.rb
ddtrace-1.16.1 lib/datadog/core/metrics/options.rb
ddtrace-1.16.0 lib/datadog/core/metrics/options.rb
ddtrace-1.15.0 lib/datadog/core/metrics/options.rb
ddtrace-1.14.0 lib/datadog/core/metrics/options.rb
ddtrace-1.13.1 lib/datadog/core/metrics/options.rb
ddtrace-1.13.0 lib/datadog/core/metrics/options.rb
ddtrace-1.12.1 lib/datadog/core/metrics/options.rb
ddtrace-1.12.0 lib/datadog/core/metrics/options.rb
ddtrace-1.11.1 lib/datadog/core/metrics/options.rb