opentelemetry-common 0.19.2 → 0.19.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ccd5d53613769dd8795434123d1c3b5d0c487831226174799c37cd160c5d594a
4
- data.tar.gz: 487b2d429364fe80cc4bfcbb90b8e2ca242978ec12a95460fed9d83ceb6e0ce3
3
+ metadata.gz: 286a98f703c4c88fa99e50dc57c30aa2d49ca4eef437a7ea3151ff904ea16dfc
4
+ data.tar.gz: b6cbfd1808ff51e47600dc27e6093d903b42c7c04ca5333114ad8447a269563c
5
5
  SHA512:
6
- metadata.gz: 3895f4fef1bdf2505ccee89a38c1769450733233f2e2e59ac5fa8a2b38205efd638809f65fb7335890ed5086cd0026b00361f62ccaad89240024680fb357ce53
7
- data.tar.gz: be977cd4cf43b117b5004ed17946cd7c72412aac568e859738ab460db16be3fad2e9053ba6ae2c046483de3d609e23290060a3958c59f419a5732de4cb873bcf
6
+ metadata.gz: 694e7ed9f4a0c0ea9463c9bce044d16ea2ebdb6805d6d6cdb4c66dac1f5e1c2066951b4b30afd5455afd1bc49c2f7bd9804a50ac90ba873a133fedea5627a282
7
+ data.tar.gz: a3c5598137f319384f48196f529b2c627b4ed302d646dab2849c29db8171ed9f0c1f866b82751508da9a259b0fe73f85a8baf6c02bcfa171292a9152afe80920
data/CHANGELOG.md CHANGED
@@ -1,4 +1,21 @@
1
+ # Release History: opentelemetry-common
1
2
 
3
+ ### v0.19.6 / 2022-05-18
4
+
5
+ * (No significant changes)
6
+
7
+ ### v0.19.5 / 2022-05-10
8
+
9
+ * FIXED: Common changelog
10
+
11
+ ### v0.19.4 / 2022-05-08
12
+
13
+ * FIXED: Check that a variable is a string before truncating
14
+ * FIXED: Attribute length limit. only truncate strings and strings in arrays
15
+
16
+ ### v0.19.3 / 2021-12-01
17
+
18
+ * FIXED: Change net attribute names to match the semantic conventions spec for http
2
19
 
3
20
  ### v0.19.2 / 2021-09-29
4
21
 
data/README.md CHANGED
@@ -40,8 +40,8 @@ tracer.in_span(
40
40
  'http.method' => req.method,
41
41
  'http.scheme' => USE_SSL_TO_SCHEME[use_ssl?],
42
42
  'http.target' => req.path,
43
- 'peer.hostname' => @address,
44
- 'peer.port' => @port
43
+ 'net.peer.name' => @address,
44
+ 'net.peer.port' => @port
45
45
  ),
46
46
  kind: :client
47
47
  ) do |span|
@@ -11,7 +11,7 @@ module OpenTelemetry
11
11
  module ClientContext
12
12
  extend self
13
13
 
14
- CURRENT_ATTRIBUTES_HASH = Context.create_key('current-attributes-hash')
14
+ CURRENT_ATTRIBUTES_HASH = Context.create_key('http-client-context-attributes-hash')
15
15
 
16
16
  private_constant :CURRENT_ATTRIBUTES_HASH
17
17
 
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright The OpenTelemetry Authors
4
+ #
5
+ # SPDX-License-Identifier: Apache-2.0
6
+
7
+ module OpenTelemetry
8
+ module Common
9
+ module Propagation
10
+ # The RackEnvGetter class provides a common methods for reading
11
+ # keys from a rack environment. It abstracts away the rack-normalization
12
+ # process so that keys can be looked up without having to transform them
13
+ # first. With this class you can get +traceparent+ instead of
14
+ # +HTTP_TRACEPARENT+
15
+ class RackEnvGetter
16
+ # Converts key into a rack-normalized key and reads it from the carrier.
17
+ # Useful for extract operations.
18
+ def get(carrier, key)
19
+ carrier[to_rack_key(key)] || carrier[key]
20
+ end
21
+
22
+ # Reads all keys from a carrier and converts them from the rack-normalized
23
+ # form to the original. The resulting keys will be lowercase and
24
+ # underscores will be replaced with dashes.
25
+ def keys(carrier)
26
+ carrier.keys.map(&method(:from_rack_key))
27
+ end
28
+
29
+ private
30
+
31
+ def to_rack_key(key)
32
+ ret = 'HTTP_' + key
33
+ ret.tr!('-', '_')
34
+ ret.upcase!
35
+ ret
36
+ end
37
+
38
+ def from_rack_key(key)
39
+ start = key.start_with?('HTTP_') ? 5 : 0
40
+ ret = key[start..-1]
41
+ ret.tr!('_', '-')
42
+ ret.downcase!
43
+ ret
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright The OpenTelemetry Authors
4
+ #
5
+ # SPDX-License-Identifier: Apache-2.0
6
+
7
+ module OpenTelemetry
8
+ module Common
9
+ module Propagation
10
+ # The SymbolKeyGetter class provides a common method for reading
11
+ # symbol keys from a hash.
12
+ class SymbolKeyGetter
13
+ # Converts key into a symbol and reads it from the carrier.
14
+ # Useful for extract operations.
15
+ def get(carrier, key)
16
+ carrier[key.to_sym]
17
+ end
18
+
19
+ # Reads all keys from a carrier
20
+ def keys(carrier)
21
+ carrier.keys.map(&:to_s)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright The OpenTelemetry Authors
4
+ #
5
+ # SPDX-License-Identifier: Apache-2.0
6
+
7
+ require_relative './propagation/rack_env_getter'
8
+ require_relative './propagation/symbol_key_getter'
9
+
10
+ module OpenTelemetry
11
+ module Common
12
+ # Propagation contains common helpers for context propagation.
13
+ module Propagation
14
+ extend self
15
+
16
+ RACK_ENV_GETTER = RackEnvGetter.new
17
+ SYMBOL_KEY_GETTER = SymbolKeyGetter.new
18
+ private_constant :RACK_ENV_GETTER, :SYMBOL_KEY_GETTER
19
+
20
+ # Returns a {RackEnvGetter} instance suitable for reading values from a
21
+ # Rack environment.
22
+ def rack_env_getter
23
+ RACK_ENV_GETTER
24
+ end
25
+
26
+ # Returns a {SymbolKeyGetter} instance for reading values from a
27
+ # symbol keyed hash.
28
+ def symbol_key_getter
29
+ SYMBOL_KEY_GETTER
30
+ end
31
+ end
32
+ end
33
+ end
@@ -72,6 +72,17 @@ module OpenTelemetry
72
72
  string.size > size ? "#{string[0...size - 3]}..." : string
73
73
  end
74
74
 
75
+ def truncate_attribute_value(value, limit)
76
+ case value
77
+ when Array
78
+ value.map { |x| truncate_attribute_value(x, limit) }
79
+ when String
80
+ truncate(value, limit)
81
+ else
82
+ value
83
+ end
84
+ end
85
+
75
86
  def untraced
76
87
  OpenTelemetry::Trace.with_span(OpenTelemetry::Trace.non_recording_span(OpenTelemetry::Trace::SpanContext.new)) { yield }
77
88
  end
@@ -90,6 +101,32 @@ module OpenTelemetry
90
101
  url
91
102
  end
92
103
 
104
+ # Returns the first non nil environment variable requested,
105
+ # or the default value if provided.
106
+ #
107
+ # @param [String] env_vars The environment variable(s) to retrieve
108
+ # @param default The fallback value to return if the requested
109
+ # env var(s) are not present
110
+ #
111
+ # @returns [String]
112
+ def config_opt(*env_vars, default: nil)
113
+ ENV.values_at(*env_vars).compact.fetch(0, default)
114
+ end
115
+
116
+ # Returns a true if the provided url is valid
117
+ #
118
+ # @param [String] url the URL string to test validity
119
+ #
120
+ # @return [boolean]
121
+ def valid_url?(url)
122
+ return false if url.nil? || url.strip.empty?
123
+
124
+ URI(url)
125
+ true
126
+ rescue URI::InvalidURIError
127
+ false
128
+ end
129
+
93
130
  # Returns true if exporter is a valid exporter.
94
131
  def valid_exporter?(exporter)
95
132
  exporter && %i[export shutdown force_flush].all? { |m| exporter.respond_to?(m) }
@@ -6,6 +6,6 @@
6
6
 
7
7
  module OpenTelemetry
8
8
  module Common
9
- VERSION = '0.19.2'
9
+ VERSION = '0.19.6'
10
10
  end
11
11
  end
@@ -6,6 +6,7 @@
6
6
 
7
7
  require 'opentelemetry'
8
8
  require 'opentelemetry/common/http'
9
+ require 'opentelemetry/common/propagation'
9
10
  require 'opentelemetry/common/utilities'
10
11
  require 'opentelemetry/common/version'
11
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.2
4
+ version: 0.19.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-30 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: opentelemetry-test-helpers
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -137,17 +151,19 @@ files:
137
151
  - lib/opentelemetry/common.rb
138
152
  - lib/opentelemetry/common/http.rb
139
153
  - lib/opentelemetry/common/http/client_context.rb
140
- - lib/opentelemetry/common/test_helpers.rb
154
+ - lib/opentelemetry/common/propagation.rb
155
+ - lib/opentelemetry/common/propagation/rack_env_getter.rb
156
+ - lib/opentelemetry/common/propagation/symbol_key_getter.rb
141
157
  - lib/opentelemetry/common/utilities.rb
142
158
  - lib/opentelemetry/common/version.rb
143
159
  homepage: https://github.com/open-telemetry/opentelemetry-ruby
144
160
  licenses:
145
161
  - Apache-2.0
146
162
  metadata:
147
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-common/v0.19.2/file.CHANGELOG.html
163
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-common/v0.19.6/file.CHANGELOG.html
148
164
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/common
149
165
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
150
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-common/v0.19.2
166
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-common/v0.19.6
151
167
  post_install_message:
152
168
  rdoc_options: []
153
169
  require_paths:
@@ -156,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
172
  requirements:
157
173
  - - ">="
158
174
  - !ruby/object:Gem::Version
159
- version: 2.5.0
175
+ version: 2.6.0
160
176
  required_rubygems_version: !ruby/object:Gem::Requirement
161
177
  requirements:
162
178
  - - ">="
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright The OpenTelemetry Authors
4
- #
5
- # SPDX-License-Identifier: Apache-2.0
6
-
7
- def with_env(new_env)
8
- env_to_reset = ENV.select { |k, _| new_env.key?(k) }
9
- keys_to_delete = new_env.keys - ENV.keys
10
- new_env.each_pair { |k, v| ENV[k] = v }
11
- yield
12
- ensure
13
- env_to_reset.each_pair { |k, v| ENV[k] = v }
14
- keys_to_delete.each { |k| ENV.delete(k) }
15
- end
16
-
17
- def exportable_timestamp(time = Time.now)
18
- (time.to_r * 1_000_000_000).to_i
19
- end