Skip to content

Conversation

@swang392
Copy link
Contributor

@swang392 swang392 commented Jan 13, 2026

What does this PR do?

  • Modifies the helm metadata forwarder to use kubernetes informers instead of listing and caching.
  • Uses workqueue as the event handler for informer events
  • Adds a ticker (set to 1 min) that regularly sends metadata for all relevant releases at the time
  • Update tests
  • More details / rationale on implementation here

Motivation

What inspired you to submit this pull request?

Additional Notes

Anything else we should know when reviewing?

Minimum Agent Versions

Are there minimum versions of the Datadog Agent and/or Cluster Agent required?

  • Agent: vX.Y.Z
  • Cluster Agent: vX.Y.Z

Describe your test plan

  • install operator via helm, with debug logging enabled
❯ helm install datadog-operator datadog/datadog-operator --set image.doNotCheckTag=true --set image.repository=operator --set logLevel="debug"  --set installCRDs=true --set clusterName=sarah-dev --set image.tag=metadata-58
  • install the datadog chart with operator disabled:
datadog:
  operator:
    enabled: false
  • Check for startup log messages from the helm metadata forwarder. If you have multiple revisions (secrets/configmaps) for a helm chart on your cluster, you will see log messages of skipped older revisions. For example:
{"level":"DEBUG","ts":"2026-01-13T19:04:46.259Z","logger":"metadata.helm","msg":"Starting worker","workerID":0}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.360Z","logger":"metadata.helm","msg":"Updated release snapshot","key":"default/datadog-operator","revision":11,"chart":"datadog-operator"}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.366Z","logger":"metadata.helm","msg":"Updating to newer revision","key":"default/datadog-operator","old":11,"new":12}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.367Z","logger":"metadata.helm","msg":"Sending metadata to URL","url":"https://app.datadoghq.com/api/v1/metadata"}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.382Z","logger":"metadata.helm","msg":"Received HTTP response for metadata","release":"datadog-operator","status_code":202}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.382Z","logger":"metadata.helm","msg":"Updated release snapshot","key":"default/datadog-operator","revision":12,"chart":"datadog-operator"}
{"level":"DEBUG","ts":"2026-01-13T19:04:46.389Z","logger":"metadata.helm","msg":"Updating to newer revision","key":"default/datadog-operator","old":12,"new":17}
  • Update the datadog chart. You should immediately see logs documenting the update:
{"level":"DEBUG","ts":"2026-01-13T20:38:51.436Z","logger":"metadata.helm","msg":"Updating to newer revision","key":"default/dd","old":1,"new":2}
{"level":"DEBUG","ts":"2026-01-13T20:38:51.437Z","logger":"metadata.helm","msg":"Sending metadata to URL","url":"https://app.datadoghq.com/api/v1/metadata"}
{"level":"DEBUG","ts":"2026-01-13T20:38:51.453Z","logger":"metadata.helm","msg":"Updated release snapshot","key":"default/dd","revision":2,"chart":"datadog"}
  • In the next log from the ticker, verify that two charts (datadog, datadog operator) get sent:
{"level":"DEBUG","ts":"2026-01-13T20:38:13.216Z","logger":"metadata.helm","msg":"Ticker: sending all Helm release snapshots"}
{"level":"DEBUG","ts":"2026-01-13T20:38:13.216Z","logger":"metadata.helm","msg":"Sending metadata to URL","url":"https://app.datadoghq.com/api/v1/metadata"}
{"level":"DEBUG","ts":"2026-01-13T20:38:13.233Z","logger":"metadata.helm","msg":"Sending metadata to URL","url":"https://app.datadoghq.com/api/v1/metadata"}
{"level":"DEBUG","ts":"2026-01-13T20:38:13.251Z","logger":"metadata.helm","msg":"Ticker: sent Helm release snapshots","sent":2,"errors":0}
  • Uninstall the datadog chart. Check that the deletion event was registered by the informer, and that the next ticker send does not include the datadog chart.
{"level":"INFO","ts":"2026-01-13T20:38:57.004Z","logger":"metadata.helm","msg":"Deleted release snapshot for release","releaseKey":"default/dd"}
{"level":"DEBUG","ts":"2026-01-13T19:10:46.259Z","logger":"metadata.helm","msg":"Ticker: sending all Helm release snapshots"}
{"level":"DEBUG","ts":"2026-01-13T19:10:46.259Z","logger":"metadata.helm","msg":"Sending metadata to URL","url":"https://app.datadoghq.com/api/v1/metadata"}
{"level":"DEBUG","ts":"2026-01-13T19:10:46.278Z","logger":"metadata.helm","msg":"Received HTTP response for metadata","release":"datadog-operator","status_code":202}
{"level":"DEBUG","ts":"2026-01-13T19:10:46.278Z","logger":"metadata.helm","msg":"Ticker: sent Helm release snapshots","sent":1,"errors":0}

Checklist

  • PR has at least one valid label: bug, enhancement, refactoring, documentation, tooling, and/or dependencies
  • PR has a milestone or the qa/skip-qa label
  • All commits are signed (see: signing commits)

@swang392 swang392 added this to the v1.23.0 milestone Jan 13, 2026
@swang392 swang392 added the enhancement New feature or request label Jan 13, 2026
@codecov-commenter
Copy link

codecov-commenter commented Jan 13, 2026

Codecov Report

❌ Patch coverage is 17.64706% with 154 lines in your changes missing coverage. Please review.
✅ Project coverage is 38.08%. Comparing base (b4b6e01) to head (79a443f).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
pkg/controller/utils/metadata/helm_metadata.go 17.93% 150 Missing and 1 partial ⚠️
cmd/main.go 0.00% 3 Missing ⚠️

❌ Your patch status has failed because the patch coverage (17.64%) is below the target coverage (80.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #2488      +/-   ##
==========================================
- Coverage   38.09%   38.08%   -0.02%     
==========================================
  Files         299      299              
  Lines       25182    25226      +44     
==========================================
+ Hits         9594     9608      +14     
- Misses      14853    14878      +25     
- Partials      735      740       +5     
Flag Coverage Δ
unittests 38.08% <17.64%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
cmd/main.go 6.62% <0.00%> (ø)
pkg/controller/utils/metadata/helm_metadata.go 31.88% <17.93%> (-0.02%) ⬇️

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b4b6e01...79a443f. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@swang392 swang392 marked this pull request as ready for review January 14, 2026 19:45
@swang392 swang392 requested a review from a team as a code owner January 14, 2026 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants