Skip to content

Commit e639d20

Browse files
ahayworthfbogsany
andauthored
feat!: Use auto-generated resource constants in sdk and resource_detectors (#865)
Co-authored-by: Francis Bogsanyi <[email protected]>
1 parent 708644f commit e639d20

File tree

9 files changed

+35
-233
lines changed

9 files changed

+35
-233
lines changed

resource_detectors/Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ gem 'opentelemetry-api', path: '../api'
1212
gem 'opentelemetry-common', path: '../common'
1313
gem 'opentelemetry-instrumentation-base', path: '../instrumentation/base'
1414
gem 'opentelemetry-sdk', path: '../sdk'
15+
gem 'opentelemetry-semantic_conventions', path: '../semantic_conventions'
1516

1617
group :development, :test do
1718
gem 'byebug' unless RUBY_PLATFORM == 'java'

resource_detectors/lib/opentelemetry/resource/detectors/google_cloud_platform.rb

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,26 @@ module GoogleCloudPlatform
1616
def detect # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
1717
gcp_env = Google::Cloud::Env.new
1818
resource_attributes = {}
19-
resource_constants = OpenTelemetry::SDK::Resources::Constants
2019

2120
if gcp_env.compute_engine?
22-
resource_attributes[resource_constants::CLOUD_RESOURCE[:provider]] = 'gcp'
23-
resource_attributes[resource_constants::CLOUD_RESOURCE[:account_id]] = gcp_env.project_id
24-
resource_attributes[resource_constants::CLOUD_RESOURCE[:region]] = gcp_env.instance_attribute('cluster-location')
25-
resource_attributes[resource_constants::CLOUD_RESOURCE[:availability_zone]] = gcp_env.instance_zone
26-
27-
resource_attributes[resource_constants::HOST_RESOURCE[:id]] = gcp_env.lookup_metadata('instance', 'id')
28-
resource_attributes[resource_constants::HOST_RESOURCE[:name]] = ENV['HOSTNAME'] ||
29-
gcp_env.lookup_metadata('instance', 'hostname') ||
30-
safe_gethostname
21+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_PROVIDER] = 'gcp'
22+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_ACCOUNT_ID] = gcp_env.project_id
23+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_REGION] = gcp_env.instance_attribute('cluster-location')
24+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CLOUD_AVAILABILITY_ZONE] = gcp_env.instance_zone
25+
26+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_ID] = gcp_env.lookup_metadata('instance', 'id')
27+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::HOST_NAME] = ENV['HOSTNAME'] ||
28+
gcp_env.lookup_metadata('instance', 'hostname') ||
29+
safe_gethostname
3130
end
3231

3332
if gcp_env.kubernetes_engine?
34-
resource_attributes[resource_constants::K8S_RESOURCE[:cluster_name]] = gcp_env.instance_attribute('cluster-name')
35-
resource_attributes[resource_constants::K8S_RESOURCE[:namespace_name]] = gcp_env.kubernetes_engine_namespace_id
36-
resource_attributes[resource_constants::K8S_RESOURCE[:pod_name]] = ENV['HOSTNAME'] || safe_gethostname
37-
resource_attributes[resource_constants::K8S_RESOURCE[:node_name]] = gcp_env.lookup_metadata('instance', 'hostname')
33+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_CLUSTER_NAME] = gcp_env.instance_attribute('cluster-name')
34+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_NAMESPACE_NAME] = gcp_env.kubernetes_engine_namespace_id
35+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_POD_NAME] = ENV['HOSTNAME'] || safe_gethostname
36+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::K8S_NODE_NAME] = gcp_env.lookup_metadata('instance', 'hostname')
3837

39-
resource_attributes[resource_constants::CONTAINER_RESOURCE[:name]] = ENV['CONTAINER_NAME']
38+
resource_attributes[OpenTelemetry::SemanticConventions::Resource::CONTAINER_NAME] = ENV['CONTAINER_NAME']
4039
end
4140

4241
resource_attributes.delete_if { |_key, value| value.nil? || value.empty? }

sdk/Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ gem 'opentelemetry-api', path: '../api'
1313
gem 'opentelemetry-common', path: '../common'
1414
gem 'opentelemetry-exporter-jaeger', path: '../exporter/jaeger'
1515
gem 'opentelemetry-instrumentation-base', path: '../instrumentation/base'
16+
gem 'opentelemetry-semantic_conventions', path: '../semantic_conventions'

sdk/lib/opentelemetry/sdk.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
require 'opentelemetry'
88
require 'opentelemetry/common'
99
require 'opentelemetry-instrumentation-base'
10+
require 'opentelemetry-semantic_conventions'
1011

1112
# OpenTelemetry is an open source observability framework, providing a
1213
# general-purpose API, SDK, and related tools required for the instrumentation

sdk/lib/opentelemetry/sdk/configurator.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def resource=(new_resource)
7676
# @param [String] service_name The value to be used as the service name
7777
def service_name=(service_name)
7878
self.resource = OpenTelemetry::SDK::Resources::Resource.create(
79-
OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:name] => service_name
79+
OpenTelemetry::SemanticConventions::Resource::SERVICE_NAME => service_name
8080
)
8181
end
8282

@@ -86,7 +86,7 @@ def service_name=(service_name)
8686
# @param [String] service_version The value to be used as the service version
8787
def service_version=(service_version)
8888
self.resource = OpenTelemetry::SDK::Resources::Resource.create(
89-
OpenTelemetry::SDK::Resources::Constants::SERVICE_RESOURCE[:version] => service_version
89+
OpenTelemetry::SemanticConventions::Resource::SERVICE_VERSION => service_version
9090
)
9191
end
9292

sdk/lib/opentelemetry/sdk/resources.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,3 @@ module Resources
1313
end
1414

1515
require 'opentelemetry/sdk/resources/resource'
16-
require 'opentelemetry/sdk/resources/constants'

sdk/lib/opentelemetry/sdk/resources/constants.rb

Lines changed: 0 additions & 205 deletions
This file was deleted.

sdk/lib/opentelemetry/sdk/resources/resource.rb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ def create(attributes = {})
3131
end
3232

3333
def default
34-
@default ||= create(Constants::SERVICE_RESOURCE[:name] => 'unknown_service').merge(process).merge(telemetry_sdk).merge(service_name_from_env)
34+
@default ||= create(SemanticConventions::Resource::SERVICE_NAME => 'unknown_service').merge(process).merge(telemetry_sdk).merge(service_name_from_env)
3535
end
3636

3737
def telemetry_sdk
3838
resource_attributes = {
39-
Constants::TELEMETRY_SDK_RESOURCE[:name] => 'opentelemetry',
40-
Constants::TELEMETRY_SDK_RESOURCE[:language] => 'ruby',
41-
Constants::TELEMETRY_SDK_RESOURCE[:version] => OpenTelemetry::SDK::VERSION
39+
SemanticConventions::Resource::TELEMETRY_SDK_NAME => 'opentelemetry',
40+
SemanticConventions::Resource::TELEMETRY_SDK_LANGUAGE => 'ruby',
41+
SemanticConventions::Resource::TELEMETRY_SDK_VERSION => OpenTelemetry::SDK::VERSION
4242
}
4343

4444
resource_pairs = ENV['OTEL_RESOURCE_ATTRIBUTES']
@@ -55,11 +55,11 @@ def telemetry_sdk
5555

5656
def process
5757
resource_attributes = {
58-
Constants::PROCESS_RESOURCE[:pid] => Process.pid,
59-
Constants::PROCESS_RESOURCE[:command] => $PROGRAM_NAME,
60-
Constants::PROCESS_RUNTIME_RESOURCE[:name] => RUBY_ENGINE,
61-
Constants::PROCESS_RUNTIME_RESOURCE[:version] => RUBY_VERSION,
62-
Constants::PROCESS_RUNTIME_RESOURCE[:description] => RUBY_DESCRIPTION
58+
SemanticConventions::Resource::PROCESS_PID => Process.pid,
59+
SemanticConventions::Resource::PROCESS_COMMAND => $PROGRAM_NAME,
60+
SemanticConventions::Resource::PROCESS_RUNTIME_NAME => RUBY_ENGINE,
61+
SemanticConventions::Resource::PROCESS_RUNTIME_VERSION => RUBY_VERSION,
62+
SemanticConventions::Resource::PROCESS_RUNTIME_DESCRIPTION => RUBY_DESCRIPTION
6363
}
6464

6565
create(resource_attributes)
@@ -69,7 +69,7 @@ def process
6969

7070
def service_name_from_env
7171
service_name = ENV['OTEL_SERVICE_NAME']
72-
create(Constants::SERVICE_RESOURCE[:name] => service_name) unless service_name.nil?
72+
create(SemanticConventions::Resource::SERVICE_NAME => service_name) unless service_name.nil?
7373
end
7474
end
7575

sdk/opentelemetry-sdk.gemspec

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ Gem::Specification.new do |spec|
2929
spec.add_dependency 'opentelemetry-common', '~> 0.19.0'
3030
spec.add_dependency 'opentelemetry-instrumentation-base', '~> 0.18.1'
3131

32+
# This is an intentionally loose dependency, since we want to be able to
33+
# release new versions of opentelemetry-semantic_conventions without requiring
34+
# a new SDK release. The requirements of the SDK have been satisifed since the
35+
# initial release of opentelemetry-semantic_conventions, so we feel it is safe.
36+
spec.add_dependency 'opentelemetry-semantic_conventions'
37+
3238
spec.add_development_dependency 'bundler', '>= 1.17'
3339
spec.add_development_dependency 'faraday', '~> 0.13'
3440
spec.add_development_dependency 'minitest', '~> 5.0'

0 commit comments

Comments
 (0)