opentelemetry-api 0.5.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -2
  3. data/CHANGELOG.md +38 -0
  4. data/{OVERVIEW.md → README.md} +0 -0
  5. data/lib/opentelemetry.rb +10 -10
  6. data/lib/opentelemetry/baggage.rb +16 -0
  7. data/lib/opentelemetry/{correlation_context → baggage}/builder.rb +2 -2
  8. data/lib/opentelemetry/{correlation_context → baggage}/manager.rb +8 -3
  9. data/lib/opentelemetry/baggage/propagation.rb +57 -0
  10. data/lib/opentelemetry/baggage/propagation/context_keys.rb +27 -0
  11. data/lib/opentelemetry/{correlation_context/propagation/text_extractor.rb → baggage/propagation/text_map_extractor.rb} +14 -14
  12. data/lib/opentelemetry/baggage/propagation/text_map_injector.rb +55 -0
  13. data/lib/opentelemetry/trace.rb +38 -4
  14. data/lib/opentelemetry/trace/link.rb +3 -3
  15. data/lib/opentelemetry/trace/propagation.rb +0 -1
  16. data/lib/opentelemetry/trace/propagation/trace_context.rb +11 -11
  17. data/lib/opentelemetry/trace/propagation/trace_context/{text_extractor.rb → text_map_extractor.rb} +5 -4
  18. data/lib/opentelemetry/trace/propagation/trace_context/{text_injector.rb → text_map_injector.rb} +5 -6
  19. data/lib/opentelemetry/trace/propagation/trace_context/trace_parent.rb +4 -4
  20. data/lib/opentelemetry/trace/span.rb +10 -18
  21. data/lib/opentelemetry/trace/span_context.rb +25 -1
  22. data/lib/opentelemetry/trace/status.rb +13 -71
  23. data/lib/opentelemetry/trace/tracer.rb +13 -54
  24. data/lib/opentelemetry/trace/util/http_to_status.rb +4 -23
  25. data/lib/opentelemetry/version.rb +1 -1
  26. metadata +18 -17
  27. data/lib/opentelemetry/correlation_context.rb +0 -16
  28. data/lib/opentelemetry/correlation_context/propagation.rb +0 -57
  29. data/lib/opentelemetry/correlation_context/propagation/context_keys.rb +0 -27
  30. data/lib/opentelemetry/correlation_context/propagation/text_injector.rb +0 -55
  31. data/lib/opentelemetry/internal.rb +0 -22
  32. data/lib/opentelemetry/trace/event.rb +0 -46
  33. data/lib/opentelemetry/trace/propagation/context_keys.rb +0 -35
@@ -9,36 +9,17 @@ module OpenTelemetry
9
9
  module Util
10
10
  # Convenience methods, not necessarily required by the API specification.
11
11
  module HttpToStatus
12
- # Implemented according to
13
- # https://github.com/open-telemetry/opentelemetry-specification/issues/306
14
- # https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status
12
+ # Maps numeric HTTP status codes to Trace::Status. This module is a mixin for Trace::Status
13
+ # and is not intended for standalone use.
15
14
  #
16
15
  # @param code Numeric HTTP status
17
16
  # @return Status
18
- def http_to_status(code) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
17
+ def http_to_status(code)
19
18
  case code.to_i
20
19
  when 100..399
21
20
  new(const_get(:OK))
22
- when 401
23
- new(const_get(:UNAUTHENTICATED))
24
- when 403
25
- new(const_get(:PERMISSION_DENIED))
26
- when 404
27
- new(const_get(:NOT_FOUND))
28
- when 429
29
- new(const_get(:RESOURCE_EXHAUSTED))
30
- when 400..499
31
- new(const_get(:INVALID_ARGUMENT))
32
- when 501
33
- new(const_get(:UNIMPLEMENTED))
34
- when 503
35
- new(const_get(:UNAVAILABLE))
36
- when 504
37
- new(const_get(:DEADLINE_EXCEEDED))
38
- when 500..599
39
- new(const_get(:INTERNAL_ERROR))
40
21
  else
41
- new(const_get(:UNKNOWN_ERROR))
22
+ new(const_get(:ERROR))
42
23
  end
43
24
  end
44
25
  end
@@ -6,5 +6,5 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  ## Current OpenTelemetry version
9
- VERSION = '0.5.1'
9
+ VERSION = '0.10.0'
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-21 00:00:00.000000000 Z
11
+ date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ipsa
@@ -146,9 +146,16 @@ files:
146
146
  - ".yardopts"
147
147
  - CHANGELOG.md
148
148
  - LICENSE
149
- - OVERVIEW.md
149
+ - README.md
150
150
  - lib/opentelemetry-api.rb
151
151
  - lib/opentelemetry.rb
152
+ - lib/opentelemetry/baggage.rb
153
+ - lib/opentelemetry/baggage/builder.rb
154
+ - lib/opentelemetry/baggage/manager.rb
155
+ - lib/opentelemetry/baggage/propagation.rb
156
+ - lib/opentelemetry/baggage/propagation/context_keys.rb
157
+ - lib/opentelemetry/baggage/propagation/text_map_extractor.rb
158
+ - lib/opentelemetry/baggage/propagation/text_map_injector.rb
152
159
  - lib/opentelemetry/context.rb
153
160
  - lib/opentelemetry/context/key.rb
154
161
  - lib/opentelemetry/context/propagation.rb
@@ -159,31 +166,21 @@ files:
159
166
  - lib/opentelemetry/context/propagation/noop_injector.rb
160
167
  - lib/opentelemetry/context/propagation/propagation.rb
161
168
  - lib/opentelemetry/context/propagation/propagator.rb
162
- - lib/opentelemetry/correlation_context.rb
163
- - lib/opentelemetry/correlation_context/builder.rb
164
- - lib/opentelemetry/correlation_context/manager.rb
165
- - lib/opentelemetry/correlation_context/propagation.rb
166
- - lib/opentelemetry/correlation_context/propagation/context_keys.rb
167
- - lib/opentelemetry/correlation_context/propagation/text_extractor.rb
168
- - lib/opentelemetry/correlation_context/propagation/text_injector.rb
169
169
  - lib/opentelemetry/error.rb
170
170
  - lib/opentelemetry/instrumentation.rb
171
171
  - lib/opentelemetry/instrumentation/base.rb
172
172
  - lib/opentelemetry/instrumentation/registry.rb
173
- - lib/opentelemetry/internal.rb
174
173
  - lib/opentelemetry/metrics.rb
175
174
  - lib/opentelemetry/metrics/handles.rb
176
175
  - lib/opentelemetry/metrics/instruments.rb
177
176
  - lib/opentelemetry/metrics/meter.rb
178
177
  - lib/opentelemetry/metrics/meter_provider.rb
179
178
  - lib/opentelemetry/trace.rb
180
- - lib/opentelemetry/trace/event.rb
181
179
  - lib/opentelemetry/trace/link.rb
182
180
  - lib/opentelemetry/trace/propagation.rb
183
- - lib/opentelemetry/trace/propagation/context_keys.rb
184
181
  - lib/opentelemetry/trace/propagation/trace_context.rb
185
- - lib/opentelemetry/trace/propagation/trace_context/text_extractor.rb
186
- - lib/opentelemetry/trace/propagation/trace_context/text_injector.rb
182
+ - lib/opentelemetry/trace/propagation/trace_context/text_map_extractor.rb
183
+ - lib/opentelemetry/trace/propagation/trace_context/text_map_injector.rb
187
184
  - lib/opentelemetry/trace/propagation/trace_context/trace_parent.rb
188
185
  - lib/opentelemetry/trace/span.rb
189
186
  - lib/opentelemetry/trace/span_context.rb
@@ -197,7 +194,11 @@ files:
197
194
  homepage: https://github.com/open-telemetry/opentelemetry-ruby
198
195
  licenses:
199
196
  - Apache-2.0
200
- metadata: {}
197
+ metadata:
198
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.10.0/file.CHANGELOG.html
199
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/master/api
200
+ bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
201
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-api/v0.10.0
201
202
  post_install_message:
202
203
  rdoc_options: []
203
204
  require_paths:
@@ -213,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
214
  - !ruby/object:Gem::Version
214
215
  version: '0'
215
216
  requirements: []
216
- rubygems_version: 3.0.3
217
+ rubygems_version: 3.1.4
217
218
  signing_key:
218
219
  specification_version: 4
219
220
  summary: A stats collection and distributed tracing framework
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- require 'opentelemetry/correlation_context/builder'
8
- require 'opentelemetry/correlation_context/manager'
9
- require 'opentelemetry/correlation_context/propagation'
10
-
11
- module OpenTelemetry
12
- # The CorrelationContext module provides functionality to record and propagate
13
- # correlations in a distributed trace
14
- module CorrelationContext
15
- end
16
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- require 'opentelemetry/correlation_context/propagation/context_keys'
8
- require 'opentelemetry/correlation_context/propagation/text_injector'
9
- require 'opentelemetry/correlation_context/propagation/text_extractor'
10
-
11
- module OpenTelemetry
12
- module CorrelationContext
13
- # The Correlation::Propagation module contains injectors and
14
- # extractors for sending and receiving correlation context over the wire
15
- module Propagation
16
- extend self
17
-
18
- TEXT_EXTRACTOR = TextExtractor.new
19
- TEXT_INJECTOR = TextInjector.new
20
- RACK_EXTRACTOR = TextExtractor.new(
21
- correlation_context_key: 'HTTP_OTCORRELATIONS'
22
- )
23
- RACK_INJECTOR = TextInjector.new(
24
- correlation_context_key: 'HTTP_OTCORRELATIONS'
25
- )
26
-
27
- private_constant :TEXT_INJECTOR, :TEXT_EXTRACTOR, :RACK_INJECTOR,
28
- :RACK_EXTRACTOR
29
-
30
- # Returns an extractor that extracts context using the W3C Correlation
31
- # Context format
32
- def text_injector
33
- TEXT_INJECTOR
34
- end
35
-
36
- # Returns an injector that injects context using the W3C Correlation
37
- # Context format
38
- def text_extractor
39
- TEXT_EXTRACTOR
40
- end
41
-
42
- # Returns an extractor that extracts context using the W3C Correlation
43
- # Context format with Rack normalized keys (upcased and prefixed with
44
- # HTTP_)
45
- def rack_injector
46
- RACK_INJECTOR
47
- end
48
-
49
- # Returns an injector that injects context using the W3C Correlation
50
- # Context format with Rack normalized keys (upcased and prefixed with
51
- # HTTP_)
52
- def rack_extractor
53
- RACK_EXTRACTOR
54
- end
55
- end
56
- end
57
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- module OpenTelemetry
8
- module CorrelationContext
9
- module Propagation
10
- # The ContextKeys module contains the keys used to index correlations
11
- # in a {Context} instance
12
- module ContextKeys
13
- extend self
14
-
15
- CORRELATION_CONTEXT_KEY = Context.create_key('correlation-context')
16
- private_constant :CORRELATION_CONTEXT_KEY
17
-
18
- # Returns the context key that correlations are indexed by
19
- #
20
- # @return [Context::Key]
21
- def correlation_context_key
22
- CORRELATION_CONTEXT_KEY
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- require 'cgi'
8
-
9
- module OpenTelemetry
10
- module CorrelationContext
11
- module Propagation
12
- # Injects correlation context using the W3C Correlation Context format
13
- class TextInjector
14
- include Context::Propagation::DefaultSetter
15
-
16
- # Returns a new TextInjector that injects context using the specified
17
- # header key
18
- #
19
- # @param [String] correlation_context_header_key The correlation context header
20
- # key used in the carrier
21
- # @return [TextInjector]
22
- def initialize(correlation_context_key: 'otcorrelations')
23
- @correlation_context_key = correlation_context_key
24
- end
25
-
26
- # Inject in-process correlations into the supplied carrier.
27
- #
28
- # @param [Carrier] carrier The carrier to inject correlations into
29
- # @param [Context] context The context to read correlations from
30
- # @param [optional Callable] getter An optional callable that takes a carrier and a key and
31
- # returns the value associated with the key. If omitted the default getter will be used
32
- # which expects the carrier to respond to [] and []=.
33
- # @yield [Carrier, String] if an optional getter is provided, inject will yield the carrier
34
- # and the header key to the getter.
35
- # @return [Object] carrier with injected correlations
36
- def inject(carrier, context, &setter)
37
- return carrier unless (correlations = context[ContextKeys.correlation_context_key]) && !correlations.empty?
38
-
39
- setter ||= default_setter
40
- setter.call(carrier, @correlation_context_key, encode(correlations))
41
-
42
- carrier
43
- end
44
-
45
- private
46
-
47
- def encode(correlations)
48
- correlations.inject(+'') do |memo, (k, v)|
49
- memo << CGI.escape(k.to_s) << '=' << CGI.escape(v.to_s) << ','
50
- end.chop!
51
- end
52
- end
53
- end
54
- end
55
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- module OpenTelemetry
8
- # @api private
9
- #
10
- # Internal contains helpers used by the no-op API implementation.
11
- module Internal
12
- extend self
13
-
14
- def printable_ascii?(string)
15
- return false unless string.is_a?(String)
16
-
17
- r = 32..126
18
- string.each_codepoint { |c| return false unless r.include?(c) }
19
- true
20
- end
21
- end
22
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- module OpenTelemetry
8
- module Trace
9
- # A text annotation with a set of attributes and a timestamp.
10
- class Event
11
- EMPTY_ATTRIBUTES = {}.freeze
12
-
13
- private_constant :EMPTY_ATTRIBUTES
14
-
15
- # Returns the name of this event
16
- #
17
- # @return [String]
18
- attr_reader :name
19
-
20
- # Returns the frozen attributes for this event
21
- #
22
- # @return [Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
23
- attr_reader :attributes
24
-
25
- # Returns the timestamp for this event
26
- #
27
- # @return [Time]
28
- attr_reader :timestamp
29
-
30
- # Returns a new immutable {Event}.
31
- #
32
- # @param [String] name The name of this event
33
- # @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
34
- # attributes A hash of attributes for this event. Attributes will be
35
- # frozen during Event initialization.
36
- # @param [optional Time] timestamp The timestamp for this event.
37
- # Defaults to Time.now.
38
- # @return [Event]
39
- def initialize(name:, attributes: nil, timestamp: nil)
40
- @name = name
41
- @attributes = attributes.freeze || EMPTY_ATTRIBUTES
42
- @timestamp = timestamp || Time.now
43
- end
44
- end
45
- end
46
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright 2019 OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- module OpenTelemetry
8
- module Trace
9
- module Propagation
10
- # Contains the keys used to index the current span, or extracted span
11
- # context in a {Context} instance
12
- module ContextKeys
13
- extend self
14
-
15
- EXTRACTED_SPAN_CONTEXT_KEY = Context.create_key('extracted-span-context')
16
- CURRENT_SPAN_KEY = Context.create_key('current-span')
17
- private_constant :EXTRACTED_SPAN_CONTEXT_KEY, :CURRENT_SPAN_KEY
18
-
19
- # Returns the context key that an extracted span context is indexed by
20
- #
21
- # @return [Context::Key]
22
- def extracted_span_context_key
23
- EXTRACTED_SPAN_CONTEXT_KEY
24
- end
25
-
26
- # Returns the context key that the current span is indexed by
27
- #
28
- # @return [Context::Key]
29
- def current_span_key
30
- CURRENT_SPAN_KEY
31
- end
32
- end
33
- end
34
- end
35
- end