Skip to content
Open
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
4 changes: 1 addition & 3 deletions ddtrace/tracer/civisibility_transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,7 @@ func newCiVisibilityTransport(config *config) *ciVisibilityTransport {
defaultHeaders["Datadog-Entity-ID"] = eid
}

// Determine if agentless mode is enabled through an environment variable.
agentlessEnabled := internal.BoolEnv(constants.CIVisibilityAgentlessEnabledEnvironmentVariable, false)

agentlessEnabled := config.internalConfig.CiVisibilityAgentless()
testCycleURL := ""
if agentlessEnabled {
// Agentless mode is enabled.
Expand Down
6 changes: 1 addition & 5 deletions ddtrace/tracer/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,9 +316,6 @@ type config struct {
// globalSampleRate holds sample rate read from environment variables.
globalSampleRate float64

// ciVisibilityAgentless controls if the tracer is loaded with CI Visibility agentless mode. default false
ciVisibilityAgentless bool

// ciVisibilityNoopTracer controls if CI Visibility must set a wrapper to behave like a noop tracer. default false
ciVisibilityNoopTracer bool

Expand Down Expand Up @@ -618,12 +615,11 @@ func newConfig(opts ...StartOption) (*config, error) {
c.logStartup = false // If we are in CI Visibility mode we don't want to log the startup to stdout to avoid polluting the output
ciTransport := newCiVisibilityTransport(c) // Create a default CI Visibility Transport
c.transport = ciTransport // Replace the default transport with the CI Visibility transport
c.ciVisibilityAgentless = ciTransport.agentless
c.ciVisibilityNoopTracer = internal.BoolEnv(constants.CIVisibilityUseNoopTracer, false)
}

// if using stdout or traces are disabled or we are in ci visibility agentless mode, agent is disabled
agentDisabled := c.logToStdout || !c.enabled.current || c.ciVisibilityAgentless
agentDisabled := c.logToStdout || !c.enabled.current || c.internalConfig.CiVisibilityAgentless()
c.agent = loadAgentFeatures(agentDisabled, c.agentURL, c.httpClient)
if c.agent.v1ProtocolAvailable {
c.traceProtocol = traceProtocolV1
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/tracer/telemetry.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func startTelemetry(c *config) telemetry.Client {
HTTPClient: c.httpClient,
AgentURL: c.agentURL.String(),
}
if c.logToStdout || c.ciVisibilityAgentless {
if c.logToStdout || c.internalConfig.CiVisibilityAgentless() {
cfg.APIKey = env.Get("DD_API_KEY")
}
client, err := telemetry.NewClient(c.serviceName, c.env, c.version, cfg)
Expand Down
2 changes: 1 addition & 1 deletion ddtrace/tracer/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func Start(opts ...StartOption) error {
if t.dataStreams != nil {
t.dataStreams.Start()
}
if t.config.ciVisibilityAgentless {
if t.config.internalConfig.CiVisibilityAgentless() {
// CI Visibility agentless mode doesn't require remote configuration.

// start instrumentation telemetry unless it is disabled through the
Expand Down
18 changes: 16 additions & 2 deletions internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,9 @@ type Config struct {
dataStreamsMonitoringEnabled bool
dynamicInstrumentationEnabled bool
globalSampleRate float64
// ciVisibilityEnabled controls if the tracer is loaded with CI Visibility mode. default false
ciVisibilityEnabled bool
// ciVisibilityEnabled controls if the tracer is loaded with CI Visibility mode
ciVisibilityEnabled bool
// ciVisibilityAgentless controls if the tracer is loaded with CI Visibility agentless mode
ciVisibilityAgentless bool
logDirectory string
traceRateLimitPerSecond float64
Expand Down Expand Up @@ -149,3 +150,16 @@ func (c *Config) SetCiVisibilityEnabled(enabled bool, origin telemetry.Origin) {
c.ciVisibilityEnabled = enabled
telemetry.RegisterAppConfig(constants.CIVisibilityEnabledEnvironmentVariable, enabled, origin)
}

func (c *Config) CiVisibilityAgentless() bool {
c.mu.RLock()
defer c.mu.RUnlock()
return c.ciVisibilityAgentless
}

func (c *Config) SetCiVisibilityAgentless(enabled bool, origin telemetry.Origin) {
c.mu.Lock()
defer c.mu.Unlock()
c.ciVisibilityAgentless = enabled
telemetry.RegisterAppConfig(constants.CIVisibilityAgentlessEnabledEnvironmentVariable, enabled, origin)
}
Loading