Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/dd-trace/src/appsec/remote_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ let rc

/**
* Configures remote config handlers for appsec features
* @param {Object} rcInstance - RemoteConfigManager instance
*
* @param {Object} rcInstance - RemoteConfig instance
* @param {Object} config - Tracer config
* @param {Object} appsec - Appsec module
*/
Expand Down
34 changes: 34 additions & 0 deletions packages/dd-trace/src/config/remote_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict'

const RemoteConfigCapabilities = require('../remote_config/capabilities')

/**
* Configures remote config for core APM tracing functionality
*
* @param {Object} rc - RemoteConfig instance
* @param {Object} config - Tracer config
* @param {Function} enableOrDisableTracing - Function to enable/disable tracing based on config
*/
function enable (rc, config, enableOrDisableTracing) {
// Register core APM tracing capabilities
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_CUSTOM_TAGS, true)
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_HTTP_HEADER_TAGS, true)
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_LOGS_INJECTION, true)
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_SAMPLE_RATE, true)
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_ENABLED, true)
rc.updateCapabilities(RemoteConfigCapabilities.APM_TRACING_SAMPLE_RULES, true)

// APM_TRACING product handler - manages tracer configuration
rc.setProductHandler('APM_TRACING', (action, conf) => {
if (action === 'unapply') {
config.configure({}, true)
} else {
config.configure(conf.lib_config, true)
}
enableOrDisableTracing(config)
})
}

module.exports = {
enable
}
31 changes: 31 additions & 0 deletions packages/dd-trace/src/openfeature/remote_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use strict'

const RemoteConfigCapabilities = require('../remote_config/capabilities')

/**
* Configures remote config handlers for openfeature feature flagging
*
* @param {Object} rc - RemoteConfig instance
* @param {Object} config - Tracer config
* @param {Function} getOpenfeatureProxy - Function that returns the OpenFeature proxy from tracer
*/
function enable (rc, config, getOpenfeatureProxy) {
// Always enable capability for feature flag configuration
// This indicates the library supports this capability via remote config
rc.updateCapabilities(RemoteConfigCapabilities.FFE_FLAG_CONFIGURATION_RULES, true)

// Only register product handler if the experimental feature is enabled
if (!config.experimental.flaggingProvider.enabled) return

// Set product handler for FFE_FLAGS
rc.setProductHandler('FFE_FLAGS', (action, conf) => {
// Feed UFC config directly to OpenFeature provider
if (action === 'apply' || action === 'modify') {
getOpenfeatureProxy()._setConfiguration(conf)
}
})
}

module.exports = {
enable
}
23 changes: 6 additions & 17 deletions packages/dd-trace/src/proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,16 +126,11 @@ class Tracer extends NoopProxy {
}

if (config.remoteConfig.enabled && !config.isCiVisibility) {
const rc = require('./remote_config').enable(config)
const RemoteConfig = require('./remote_config')
const rc = new RemoteConfig(config)

rc.setProductHandler('APM_TRACING', (action, conf) => {
if (action === 'unapply') {
config.configure({}, true)
} else {
config.configure(conf.lib_config, true)
}
this._enableOrDisableTracing(config)
})
const tracingRemoteConfig = require('./config/remote_config')
tracingRemoteConfig.enable(rc, config, this._enableOrDisableTracing.bind(this))

rc.setProductHandler('AGENT_CONFIG', (action, conf) => {
if (!conf?.name?.startsWith('flare-log-level.')) return
Expand Down Expand Up @@ -165,14 +160,8 @@ class Tracer extends NoopProxy {
DynamicInstrumentation.start(config, rc)
}

if (config.experimental.flaggingProvider.enabled) {
rc.setProductHandler('FFE_FLAGS', (action, conf) => {
// Feed UFC config directly to OpenFeature provider
if (action === 'apply' || action === 'modify') {
this.openfeature._setConfiguration(conf)
}
})
}
const openfeatureRemoteConfig = require('./openfeature/remote_config')
openfeatureRemoteConfig.enable(rc, config, () => this.openfeature)
}

if (config.profiling.enabled === 'true') {
Expand Down
Loading
Loading