opentelemetry-resource_detectors 0.21.0 → 0.22.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db98369930c24852e9231f16db04359dcd8f71348b6da67d897b4a66cbad641c
4
- data.tar.gz: c11ea7988ee128ea4a8b6d947415b4fdea68a8ef9e6012f82ca8a42794079bb8
3
+ metadata.gz: 61753b597d6d347b493d0af32b021a3963f6358628f477ce2773313625860892
4
+ data.tar.gz: b570fbb4a604ca863dc4362401d3d58bb85a977e2cffb0f0a941df8216b9a46e
5
5
  SHA512:
6
- metadata.gz: 7020f663835bf164493582f16eb0e955836a86bf0ff741f9933edd7adb5db4d96cd2c2549e954418faf9fcb605aaabd7a94e9828cf8ac9160b648746acd036f3
7
- data.tar.gz: cdc869c6031a6b6512b374bf8286c927a54bdd214ae5760c2edb0dfe77a8c8a0d62732964e9c4533edbe3666032e1fefdb2f3f8f2f1c22913afcc3a86a02f91b
6
+ metadata.gz: 6e986c7783a1f813b10198db183ca299f09afa919f79562998336434cd36291a1c696fb31eea1fd63736c4f19ec056a44c909abdd3f8e772033e1e01df7e13e4
7
+ data.tar.gz: fc35ab07cf7df63aacd3ea981e9cf9fcc0cf38bf04f86c17105de8365c181b70a99d355242ae8bc59c57d98695773625c057230d6891e8989bb10f9691377793
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Release History: opentelemetry-resource_detectors
2
2
 
3
+ ### v0.22.0 / 2023-01-14
4
+
5
+ * ADDED: Add azure resource detector.
6
+ * DOCS: Fix gem homepage
7
+ * DOCS: More gem documentation fixes
8
+
3
9
  ### v0.21.0 / 2022-06-09
4
10
 
5
11
  * BREAKING CHANGE: This requires upgrading both the SDK and Instrumentation gem in tandem
@@ -12,6 +12,7 @@ module OpenTelemetry
12
12
  extend self
13
13
 
14
14
  DETECTORS = [
15
+ OpenTelemetry::Resource::Detectors::Azure,
15
16
  OpenTelemetry::Resource::Detectors::GoogleCloudPlatform
16
17
  ].freeze
17
18
 
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright The OpenTelemetry Authors
4
+ #
5
+ # SPDX-License-Identifier: Apache-2.0
6
+
7
+ require 'net/http'
8
+
9
+ module OpenTelemetry
10
+ module Resource
11
+ module Detectors
12
+ # Azure contains detect class method for determining Azure environment resource attributes
13
+ module Azure
14
+ extend self
15
+
16
+ AZURE_METADATA_URI = 'http://169.254.169.254/metadata/instance/compute?api-version=2019-08-15'
17
+
18
+ def detect
19
+ metadata = azure_metadata
20
+ resource_attributes = {}
21
+
22
+ unless metadata.nil?
23
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PROVIDER] = 'azure'
24
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_ACCOUNT_ID] = metadata['subscriptionId']
25
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PLATFORM] = cloud_platform(metadata['provider'])
26
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_REGION] = metadata['location']
27
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_AVAILABILITY_ZONE] = metadata['zone']
28
+
29
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_ID] = metadata['vmId']
30
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_IMAGE_ID] = metadata.dig('storageProfile', 'imageReference', 'id')
31
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_TYPE] = metadata['vmSize']
32
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_NAME] = metadata['name']
33
+ end
34
+
35
+ resource_attributes.delete_if { |_key, value| value.nil? || value.empty? }
36
+ OpenTelemetry::SDK::Resources::Resource.create(resource_attributes)
37
+ end
38
+
39
+ private
40
+
41
+ def azure_metadata
42
+ uri = URI(AZURE_METADATA_URI)
43
+
44
+ req = Net::HTTP::Get.new(uri)
45
+ req['Metadata'] = 'true'
46
+
47
+ response = Net::HTTP.start(uri.hostname, uri.port, open_timeout: 2) do |http|
48
+ http.request(req)
49
+ end
50
+
51
+ return unless response.code == '200'
52
+
53
+ JSON.parse(response.body)
54
+ rescue Errno::EHOSTDOWN, Net::OpenTimeout, SocketError
55
+ nil
56
+ end
57
+
58
+ def cloud_platform(metadata)
59
+ case metadata
60
+ when 'Microsoft.Compute'
61
+ 'azure_vm'
62
+ else
63
+ ''
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -13,7 +13,7 @@ module OpenTelemetry
13
13
  module GoogleCloudPlatform
14
14
  extend self
15
15
 
16
- def detect # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
16
+ def detect # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
17
17
  gcp_env = Google::Cloud::Env.new
18
18
  resource_attributes = {}
19
19
 
@@ -35,7 +35,7 @@ module OpenTelemetry
35
35
  resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_POD_NAME] = ENV['HOSTNAME'] || safe_gethostname
36
36
  resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_NODE_NAME] = gcp_env.lookup_metadata('instance', 'hostname')
37
37
 
38
- resource_attributes[OpenTelemetry::SemanticConventions::Resource::CONTAINER_NAME] = ENV['CONTAINER_NAME']
38
+ resource_attributes[OpenTelemetry::SemanticConventions::Resource::CONTAINER_NAME] = ENV.fetch('CONTAINER_NAME', nil)
39
39
  end
40
40
 
41
41
  if gcp_env.knative?
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Resource
9
9
  module Detectors
10
- VERSION = '0.21.0'
10
+ VERSION = '0.22.0'
11
11
  end
12
12
  end
13
13
  end
@@ -7,6 +7,7 @@
7
7
  require 'opentelemetry/sdk'
8
8
  require 'opentelemetry/resource/detectors/version'
9
9
  require 'opentelemetry/resource/detectors/google_cloud_platform'
10
+ require 'opentelemetry/resource/detectors/azure'
10
11
  require 'opentelemetry/resource/detectors/auto_detector'
11
12
 
12
13
  # OpenTelemetry is an open source observability framework, providing a
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-resource_detectors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.22.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: 2022-06-09 00:00:00.000000000 Z
11
+ date: 2023-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-cloud-env
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.17'
47
+ version: '2.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.17'
54
+ version: '2.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '12.0'
75
+ version: '13.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '12.0'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.73.0
89
+ version: 1.41.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.73.0
96
+ version: 1.41.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.17'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 3.7.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 3.7.6
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: yard
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -150,16 +164,17 @@ files:
150
164
  - lib/opentelemetry-resource_detectors.rb
151
165
  - lib/opentelemetry/resource/detectors.rb
152
166
  - lib/opentelemetry/resource/detectors/auto_detector.rb
167
+ - lib/opentelemetry/resource/detectors/azure.rb
153
168
  - lib/opentelemetry/resource/detectors/google_cloud_platform.rb
154
169
  - lib/opentelemetry/resource/detectors/version.rb
155
- homepage: https://github.com/open-telemetry/opentelemetry-ruby
170
+ homepage: https://github.com/open-telemetry/opentelemetry-ruby-contrib
156
171
  licenses:
157
172
  - Apache-2.0
158
173
  metadata:
159
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-resource_detectors/v0.21.0/file.CHANGELOG.html
160
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/resource_detectors
161
- bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
162
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-resource_detectors/v0.21.0
174
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-resource_detectors/0.22.0/file/CHANGELOG.md
175
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/resource_detectors
176
+ bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby-contrib/issues
177
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-resource_detectors/0.22.0
163
178
  post_install_message:
164
179
  rdoc_options: []
165
180
  require_paths: