Skip to content

Commit 674dffd

Browse files
committed
Fix cherry picking issues
1 parent b01ac4b commit 674dffd

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

newrelic/api/opentelemetry.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
record_dimensional_metric,
3232
Sentinel,
3333
)
34+
from newrelic.core.otlp_utils import create_resource
35+
3436

3537
# Attributes that help distinguish span types are
3638
# sometimes added after span creation and sometimes
@@ -394,7 +396,7 @@ def start_span(
394396
destination_name=name,
395397
application=self.nr_application,
396398
transport_type=self.instrumentation_library,
397-
headers=_headers,
399+
headers=headers,
398400
)
399401
else:
400402
transaction = BackgroundTask(
@@ -470,7 +472,7 @@ def start_span(
470472
destination_name=name,
471473
application=self.nr_application,
472474
transport_type=self.instrumentation_library,
473-
headers=_headers,
475+
headers=headers,
474476
)
475477
else:
476478
transaction = BackgroundTask(

newrelic/config.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,7 @@ def _process_configuration(section):
683683
_process_setting(section, "instrumentation.middleware.django.enabled", "getboolean", None)
684684
_process_setting(section, "instrumentation.middleware.django.exclude", "get", _map_inc_excl_middleware)
685685
_process_setting(section, "instrumentation.middleware.django.include", "get", _map_inc_excl_middleware)
686+
_process_setting(section, "otel_bridge.enabled", "getboolean", None)
686687

687688

688689
# Loading of configuration from specified file and for specified
@@ -4359,6 +4360,19 @@ def _process_module_builtin_defaults():
43594360
"pyzeebe.worker.job_executor", "newrelic.hooks.external_pyzeebe", "instrument_pyzeebe_worker_job_executor"
43604361
)
43614362

4363+
# Hybrid Agent Hooks
4364+
_process_module_definition(
4365+
"opentelemetry.trace",
4366+
"newrelic.hooks.hybridagent_opentelemetry",
4367+
"instrument_trace_api",
4368+
)
4369+
4370+
_process_module_definition(
4371+
"opentelemetry.instrumentation.utils",
4372+
"newrelic.hooks.hybridagent_opentelemetry",
4373+
"instrument_utils",
4374+
)
4375+
43624376

43634377
def _process_module_entry_points():
43644378
try:

newrelic/core/config.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,9 @@ class EventHarvestConfigHarvestLimitSettings(Settings):
516516
nested = True
517517

518518

519+
class OtelBridgeSettings(Settings):
520+
pass
521+
519522
_settings = TopLevelSettings()
520523
_settings.agent_limits = AgentLimitsSettings()
521524
_settings.application_logging = ApplicationLoggingSettings()
@@ -592,6 +595,7 @@ class EventHarvestConfigHarvestLimitSettings(Settings):
592595
_settings.instrumentation.middleware = InstrumentationMiddlewareSettings()
593596
_settings.instrumentation.middleware.django = InstrumentationDjangoMiddlewareSettings()
594597
_settings.message_tracer = MessageTracerSettings()
598+
_settings.otel_bridge = OtelBridgeSettings()
595599
_settings.process_host = ProcessHostSettings()
596600
_settings.rum = RumSettings()
597601
_settings.serverless_mode = ServerlessModeSettings()
@@ -1223,6 +1227,9 @@ def default_otlp_host(host):
12231227
_settings.azure_operator.enabled = _environ_as_bool("NEW_RELIC_AZURE_OPERATOR_ENABLED", default=False)
12241228
_settings.package_reporting.enabled = _environ_as_bool("NEW_RELIC_PACKAGE_REPORTING_ENABLED", default=True)
12251229
_settings.ml_insights_events.enabled = _environ_as_bool("NEW_RELIC_ML_INSIGHTS_EVENTS_ENABLED", default=False)
1230+
_settings.otel_bridge.enabled = _environ_as_bool(
1231+
"NEW_RELIC_OTEL_BRIDGE_ENABLED", default=False
1232+
)
12261233

12271234

12281235
def global_settings():

newrelic/core/otlp_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ def create_key_values_from_iterable(iterable):
116116
return list(filter(lambda i: i is not None, (create_key_value(key, value) for key, value in iterable)))
117117

118118

119-
def create_resource(attributes=None, attach_apm_entity=True):
120-
attributes = attributes or {"instrumentation.provider": "newrelic-opentelemetry-python-ml"}
119+
def create_resource(attributes=None, attach_apm_entity=True, hybrid_bridge=False):
120+
instrumentation_provider = "newrelic-opentelemetry-bridge" if hybrid_bridge else "newrelic-opentelemetry-python-ml"
121+
attributes = attributes or {"instrumentation.provider": instrumentation_provider}
121122
if attach_apm_entity:
122123
metadata = get_service_linking_metadata()
123124
attributes.update(metadata)

0 commit comments

Comments
 (0)