Skip to content

Rename Datadog config fields for consistency and clarity - #1493

Merged
moshemorad merged 12 commits into
masterfrom
claude/update-toolset-config-mappings-kbJ46
Feb 9, 2026
Merged

moshemorad merged 12 commits into
masterfrom
claude/update-toolset-config-mappings-kbJ46

Conversation

@naomi-robusta

@naomi-robusta naomi-robusta commented Feb 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Standardizes Datadog toolset configuration field names to be more concise and consistent with naming conventions. All dd_* prefixed fields and verbose names are renamed to shorter, clearer alternatives while maintaining full backward compatibility.

Key Changes

  • Configuration field renames:

    • dd_api_key → api_key
    • dd_app_key → app_key
    • site_api_url → api_url
    • request_timeout → timeout_seconds
  • Backward compatibility: Implemented automatic field migration using _deprecated_mappings in DatadogBaseConfig that:

    • Accepts both old and new field names
    • Logs deprecation warnings when old names are used
    • Gives precedence to new field names if both are provided
    • Ensures existing configurations continue to work without changes
  • Documentation updates: Updated all examples in the Datadog data source documentation to use the new field names across all deployment methods (Holmes CLI, Holmes Helm Chart, Robusta Helm Chart)

  • Test updates: Updated all test fixtures and test code to use the new field names while adding comprehensive backward compatibility tests

Implementation Details

  • Added ClassVar[Dict[str, Optional[str]]] type hint for the deprecated mappings dictionary
  • Leveraged Pydantic's field validation to handle the migration transparently
  • All internal code references updated to use new field names
  • Deprecation warnings help users identify and update their configurations

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb

Summary by CodeRabbit

  • Documentation

    • Updated Datadog docs and examples to use standardized key names.
  • Configuration Changes

    • Renamed Datadog config keys: dd_api_key → api_key, dd_app_key → app_key, site_api_url → api_url, request_timeout → timeout_seconds.
    • Backward compatibility: old keys are automatically supported during migration.
  • Tests

    • Updated and added tests to cover new keys and backward-compatibility.

@linux-foundation-easycla

linux-foundation-easycla Bot commented Feb 5, 2026 •

Copy link
Copy Markdown

CLA Not Signed

@github-actions

github-actions Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

📂 Previous Runs

📜 Run @ 8e35762 (#21820520806)

✅ Results of HolmesGPT evals

Automatically triggered by commit 8e35762 on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 38.9s 5 11 $0.2264
✅ 101_loki_historical_logs_pod_deleted 37.5s 4 7 $0.1992
✅ 111_pod_names_contain_service 42.0s 5 11 $0.2221
✅ 112_find_pvcs_by_uuid 52.9s 7 12 $0.3067
✅ 12_job_crashing 38.5s 5 10 $0.2219
✅ 176_network_policy_blocking_traffic_no_runbooks 68.8s 9 17 $0.3072
✅ 24_misconfigured_pvc 45.8s 6 13 $0.2334
✅ 43_current_datetime_from_prompt 7.4s 1 — $0.0110
✅ 61_exact_match_counting 18.9s 3 2 $0.1446
Total 39.0s avg 5.0 avg 10.4 avg $1.8725
📜 Run @ 1fd6e29 (#21802733119)

✅ Results of HolmesGPT evals

Automatically triggered by commit 1fd6e29 on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 34.5s 5 11 $0.2380
✅ 101_loki_historical_logs_pod_deleted 56.1s 7 13 $0.2951
✅ 111_pod_names_contain_service 34.1s 5 11 $0.2242
✅ 112_find_pvcs_by_uuid 36.7s 7 8 $0.2433
✅ 12_job_crashing 33.0s 5 11 $0.2346
✅ 176_network_policy_blocking_traffic_no_runbooks 48.9s 7 18 $0.2990
✅ 24_misconfigured_pvc 34.9s 5 14 $0.2272
✅ 43_current_datetime_from_prompt 5.2s 1 — $0.0113
✅ 61_exact_match_counting 17.7s 4 4 $0.1585
Total 33.5s avg 5.1 avg 11.2 avg $1.9313
📜 Run @ 5fc54df (#21799860839)

✅ Results of HolmesGPT evals

Automatically triggered by commit 5fc54df on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 32.4s 5 11 $0.2348
✅ 101_loki_historical_logs_pod_deleted 53.6s 7 13 $0.3106
✅ 111_pod_names_contain_service 33.0s 5 11 $0.2257
✅ 112_find_pvcs_by_uuid 47.4s 10 10 $0.2909
✅ 12_job_crashing 35.4s 5 13 $0.2505
✅ 176_network_policy_blocking_traffic_no_runbooks 40.2s 6 14 $0.2720
✅ 24_misconfigured_pvc 40.9s 8 15 $0.2660
✅ 43_current_datetime_from_prompt 5.1s 1 — $0.0114
✅ 61_exact_match_counting 13.0s 3 2 $0.1413
Total 33.4s avg 5.6 avg 11.1 avg $2.0032
📜 Run @ c6769e9 (#21799683279)

✅ Results of HolmesGPT evals

Automatically triggered by commit c6769e9 on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 33.0s 5 11 $0.2319
✅ 101_loki_historical_logs_pod_deleted 40.0s 6 8 $0.2282
✅ 111_pod_names_contain_service 36.6s 5 12 $0.2403
✅ 112_find_pvcs_by_uuid 33.7s 6 7 $0.2349
✅ 12_job_crashing 35.6s 5 12 $0.2466
✅ 176_network_policy_blocking_traffic_no_runbooks 44.6s 6 17 $0.2846
✅ 24_misconfigured_pvc 34.2s 5 14 $0.2273
✅ 43_current_datetime_from_prompt 6.0s 1 — $0.0123
✅ 61_exact_match_counting 17.1s 4 4 $0.2656
Total 31.2s avg 4.8 avg 10.6 avg $1.9717
📜 Run @ abb3f89 (#21797906504)

✅ Results of HolmesGPT evals

Automatically triggered by commit abb3f89 on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 32.7s 5 11 $0.2316
✅ 101_loki_historical_logs_pod_deleted 57.7s 7 15 $0.4010
✅ 111_pod_names_contain_service 32.3s 5 11 $0.2206
✅ 112_find_pvcs_by_uuid 35.3s 6 8 $0.2716
✅ 12_job_crashing 34.9s 5 13 $0.2457
✅ 176_network_policy_blocking_traffic_no_runbooks 45.2s 7 17 $0.2896
✅ 24_misconfigured_pvc 36.0s 6 14 $0.2474
✅ 43_current_datetime_from_prompt 4.9s 1 — $0.0110
✅ 61_exact_match_counting 16.6s 4 4 $0.1597
Total 32.9s avg 5.1 avg 11.6 avg $2.0781

✅ Results of HolmesGPT evals

Automatically triggered by commit e7e196a on branch claude/update-toolset-config-mappings-kbJ46

View workflow logs

Results of HolmesGPT evals

  • ask_holmes: 9/9 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 09_crashpod 34.6s 6 10 $0.2271
✅ 101_loki_historical_logs_pod_deleted 34.8s 4 8 $0.2041
✅ 111_pod_names_contain_service 36.7s 5 11 $0.2392
✅ 112_find_pvcs_by_uuid 29.5s 5 6 $0.2198
✅ 12_job_crashing 37.8s 5 13 $0.2486
✅ 176_network_policy_blocking_traffic_no_runbooks 46.3s 6 15 $0.2723
✅ 24_misconfigured_pvc 37.9s 6 16 $0.2448
✅ 43_current_datetime_from_prompt 5.5s 1 — $0.0116
✅ 61_exact_match_counting 17.6s 4 4 $0.1599
Total 31.2s avg 4.7 avg 10.4 avg $1.8275
📖 Legend
Icon Meaning
✅ The test was successful
➖ The test was skipped
⚠️ The test failed but is known to be flaky or known to fail
🚧 The test had a setup failure (not a code regression)
🔧 The test failed due to mock data issues (not a code regression)
🚫 The test was throttled by API rate limits/overload
❌ The test failed and should be fixed before merging the PR
🔄 Re-run evals manually

⚠️ Warning: /eval comments always run using the workflow from master, not from this PR branch. If you modified the GitHub Action (e.g., added secrets or env vars), those changes won't take effect.

To test workflow changes, use the GitHub CLI or Actions UI instead:

gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/update-toolset-config-mappings-kbJ46 -f markers=regression -f filter=

Option 1: Comment on this PR with /eval:

/eval
markers: regression

Or with more options (one per line):

/eval
model: gpt-4o
markers: regression
filter: 09_crashpod
iterations: 5

Run evals on a different branch (e.g., master) for comparison:

/eval
branch: master
markers: regression
Option Description
model Model(s) to test (default: same as automatic runs)
markers Pytest markers (no default - runs all tests!)
filter Pytest -k filter (use /list to see valid eval names)
iterations Number of runs, max 10
branch Run evals on a different branch (for cross-branch comparison)

Quick re-run: Use /rerun to re-run the most recent /eval on this PR with the same parameters.

Option 2: Trigger via GitHub Actions UI → "Run workflow"

🏷️ Valid markers

benchmark, chain-of-causation, compaction, confluence, context_window, coralogix, counting, database, datadog, datetime, easy, elasticsearch, embeds, fast, frontend, grafana-dashboard, hard, integration, kafka, kubernetes, leaked-information, logs, loki, medium, metrics, network, newrelic, no-cicd, numerical, one-test, port-forward, prometheus, question-answer, regression, runbooks, slackbot, storage, toolset-limitation, traces, transparency


Commands: /eval · /rerun · /list

CLI: gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/update-toolset-config-mappings-kbJ46 -f markers=regression -f filter=

@coderabbitai

coderabbitai Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The PR renames Datadog configuration fields from dd_api_key, dd_app_key, site_api_url, and request_timeout to api_key, app_key, api_url, and timeout_seconds across code, docs, and tests, and adds deprecated-field mappings in the core Datadog API config for backward compatibility.

Changes

Cohort / File(s) Summary
Core Datadog API & Configuration
holmes/plugins/toolsets/datadog/datadog_api.py
Added _deprecated_mappings ClassVar; introduced api_key, app_key, api_url, timeout_seconds; removed dd_api_key, dd_app_key, site_api_url, request_timeout; updated header logic to use new names.
Datadog URL Utilities
holmes/plugins/toolsets/datadog/datadog_url_utils.py
Switched base URL derivation to use api_url instead of site_api_url in all URL builders.
Datadog Toolset Implementations
holmes/plugins/toolsets/datadog/toolset_datadog_general.py, .../toolset_datadog_logs.py, .../toolset_datadog_metrics.py, .../toolset_datadog_traces.py
Replaced config references with api_key, app_key, api_url, and timeout_seconds; updated prerequisites messages, healthcheck URLs, request timeouts, and error messages.
Documentation
docs/data-sources/builtin-toolsets/datadog.md
Updated YAML/config examples and docs to reflect new key names and timeout_seconds.
Test Fixtures
tests/llm/fixtures/test_ask_holmes/*/toolsets.yaml
Updated multiple fixture YAMLs to rename dd_api_key→api_key, dd_app_key→app_key, site_api_url→api_url.
Datadog Integration & Unit Tests
tests/plugins/toolsets/datadog/.../test_*.py, tests/plugins/toolsets/datadog/logs/test_check_prerequisites.py, tests/plugins/toolsets/datadog/logs/test_fetch_logs.py, tests/plugins/toolsets/datadog/metrics/test_datadog_metrics*.py, tests/plugins/toolsets/datadog/traces/test_datadog_traces*.py, tests/plugins/toolsets/test_verify_tool_urls.py
Updated test setups, assertions, and fixtures to use new field names and timeout_seconds; adjusted expected messages/URLs accordingly.
Backward Compatibility Tests
tests/utils/test_toolset_config.py
Added TestDatadogConfigBackwardCompatibility with tests verifying deprecated-field warnings, precedence rules, and equivalence between old/new fields.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • arikalon1
  • RoiGlinik
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 57.41% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: renaming Datadog configuration fields for consistency and clarity, which is the primary focus of this PR across all modified files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


No actionable comments were generated in the recent review. 🎉


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

✅ Docker image ready for 607d961 (built in 1m 16s)

⚠️ Warning: does not support ARM (ARM images are built on release only - not on every PR)

Use this tag to pull the image for testing.

📋 Copy commands

⚠️ Temporary images are deleted after 30 days. Copy to a permanent registry before using them:

gcloud auth configure-docker us-central1-docker.pkg.dev
docker pull us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:607d961
docker tag us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:607d961 me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:607d961
docker push me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:607d961

Patch Helm values in one line (choose the chart you use):

HolmesGPT chart:

helm upgrade --install holmesgpt ./helm/holmes \
  --set registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set image=holmes-dev:607d961

Robusta wrapper chart:

helm upgrade --install robusta robusta/robusta \
  --reuse-values \
  --set holmes.registry=me-west1-docker.pkg.dev/robusta-development/development \
  --set holmes.image=holmes-dev:607d961

@netlify

netlify Bot commented Feb 5, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit e7e196a
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/6989b81d743daa00084a4251
😎 Deploy Preview https://deploy-preview-1493--holmes-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions

github-actions Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

🔬 CLI Performance Benchmark

🟡 Startup Time (no LLM)

Measures holmes version execution time (imports + initialization)

Metric PR Master Change
Cold Start 10.02s 10.07s -0.6%
Warm Mean 4.75s 4.64s +2.3%
Warm Min 4.72s 4.59s
Warm Max 4.78s 4.78s

🟡 Full CLI with LLM

Measures holmes ask execution time (OpenRouter + Haiku 4.5)

Metric PR Master Change
Cold Start 28.38s 24.32s +16.7%
Warm Mean 7.56s 7.41s +1.9%
Warm Min 6.77s 6.70s
Warm Max 8.50s 9.46s

PR: 607d9612 | Master: abca5983 | Iterations: 5

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
holmes/plugins/toolsets/datadog/toolset_datadog_logs.py (1)

245-251: ⚠️ Potential issue | 🔴 Critical

Bug: Still using deprecated field name request_timeout instead of timeout_seconds.

Line 249 references self.toolset.dd_config.request_timeout but the field was renamed to timeout_seconds. This will cause an AttributeError at runtime when fetching logs.

🐛 Fix: Use the new field name
             response = execute_datadog_http_request(
                 url=url,
                 headers=headers,
                 payload_or_params=payload,
-                timeout=self.toolset.dd_config.request_timeout,
+                timeout=self.toolset.dd_config.timeout_seconds,
                 method="POST",
             )
🧹 Nitpick comments (3)
docs/data-sources/builtin-toolsets/datadog.md (1)

36-59: Documentation correctly updated with new field names.

All configuration examples consistently use the new field names (api_key, app_key, api_url, timeout_seconds).

Consider adding a brief migration note for users with existing configurations using the old field names (dd_api_key, dd_app_key, site_api_url, request_timeout). While backward compatibility is maintained in code, documenting this helps users understand:

  1. Old field names still work but are deprecated
  2. They should update to new names when convenient

This could be a small note in the Quick Start section or a dedicated "Migration" subsection.

tests/utils/test_toolset_config.py (1)

122-183: Add type hints to new pytest tests; rephrase the precedence comment.

These new tests should carry type hints to satisfy mypy, and the Line 179 comment can explain why the precedence is expected.

Proposed update
-    def test_deprecated_datadog_fields(self, caplog):
+    def test_deprecated_datadog_fields(self, caplog: pytest.LogCaptureFixture) -> None:
         """Test that deprecated Datadog config fields are migrated."""
         from holmes.plugins.toolsets.datadog.datadog_api import DatadogBaseConfig
@@
-    def test_new_datadog_fields_no_warning(self, caplog):
+    def test_new_datadog_fields_no_warning(self, caplog: pytest.LogCaptureFixture) -> None:
         """Test that new Datadog field names don't trigger warnings."""
         from holmes.plugins.toolsets.datadog.datadog_api import DatadogBaseConfig
@@
-    def test_old_and_new_datadog_fields_new_takes_precedence(self, caplog):
+    def test_old_and_new_datadog_fields_new_takes_precedence(
+        self, caplog: pytest.LogCaptureFixture
+    ) -> None:
         """Test that new Datadog field names take precedence over deprecated ones."""
         from holmes.plugins.toolsets.datadog.datadog_api import DatadogBaseConfig
@@
-        # New fields should take precedence
+        # New fields override deprecated ones to avoid ambiguity
         assert config.api_key == "new-api-key"

As per coding guidelines, use mypy for type checking with type hints required in all code, and write clear, concise comments that explain 'why' rather than 'what'.

tests/plugins/toolsets/datadog/logs/test_check_prerequisites.py (1)

43-45: Reword the comment to explain the intent (why).

The Line 44 comment can explain that the omission is deliberate to exercise validation.

Proposed update
-            # Missing app_key and api_url
+            # Intentionally omit app_key/api_url to exercise validation

As per coding guidelines, write clear, concise comments that explain 'why' rather than 'what'.

@naomi-robusta
naomi-robusta force-pushed the claude/update-toolset-config-mappings-kbJ46 branch 2 times, most recently from 66fbef3 to d3ee1a7 Compare February 5, 2026 09:27

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@docs/data-sources/builtin-toolsets/datadog.md`:
- Around line 36-38: Replace the incorrect Datadog web UI URL with the Datadog
API base URL across all configuration examples: change any occurrence of
"https://app.datadoghq.com" (found as values for api_url in the config blocks)
to "https://api.datadoghq.com" so the api_url setting points to the API base for
US accounts (requests will still use /api/v1/... or /api/v2/... as needed);
update every api_url instance in the document (including all quick-start/config
blocks that reference api_key/app_key and api_url) so examples use the API
endpoint instead of the web UI URL.

Comment thread docs/data-sources/builtin-toolsets/datadog.md
@naomi-robusta
naomi-robusta force-pushed the claude/update-toolset-config-mappings-kbJ46 branch from d3ee1a7 to 60e3f88 Compare February 5, 2026 09:33
Renamed Datadog toolset config fields to more intuitive names:
- dd_api_key → api_key
- dd_app_key → app_key
- site_api_url → api_url
- request_timeout → timeout_seconds

The old field names continue to work with a deprecation warning via
the _deprecated_mappings pattern (matching Prometheus approach).

Changes:
- Update DatadogBaseConfig with new field names and deprecated mappings
- Update all toolset implementations to use new field names
- Update documentation to use new field names
- Update all tests and eval fixtures to use new field names
- Add backward compatibility tests for deprecated field names

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb
Signed-off-by: Claude <noreply@anthropic.com>
@naomi-robusta
naomi-robusta force-pushed the claude/update-toolset-config-mappings-kbJ46 branch from 60e3f88 to d1d2268 Compare February 5, 2026 09:37
Revert api_url back to https://api.datadoghq.com for the four toolset
detail configuration sections (logs, metrics, traces, general) while
keeping https://app.datadoghq.com in the Quick Start sections.

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb
Signed-off-by: Claude <noreply@anthropic.com>
@naomi-robusta
naomi-robusta marked this pull request as ready for review February 5, 2026 09:48
@naomi-robusta

Copy link
Copy Markdown
Collaborator Author

/eval
marker: datadog
iterations: 2

@github-actions

github-actions Bot commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

@naomi-robusta Your eval run has finished. ✅ Completed successfully


🧪 Manual Eval Results

Parameter Value
Triggered via /eval comment
Branch claude/update-toolset-config-mappings-kbJ46
Model opus-4.5
Markers datadog
Iterations 2
Duration 2m 28s
Workflow View logs | Rerun

Results of HolmesGPT evals

  • ask_holmes: 0/122 test cases were successful, 0 regressions, 2 skipped, 114 setup failures, 6 mock failures
Status Test case Time Turns Tools Cost
🚧 164_datadog_traces_coupon_code[0] — — — —
🚧 164_datadog_traces_coupon_code[0] — — — —
🚧 91a_datadog_metrics_missing_namespace[0] — — — —
🚧 91a_datadog_metrics_missing_namespace[0] — — — —
🚧 91a_datadog_metrics_missing_namespace[1] — — — —
🚧 91a_datadog_metrics_missing_namespace[1] — — — —
🚧 91a_datadog_metrics_missing_namespace[2] — — — —
🚧 91a_datadog_metrics_missing_namespace[2] — — — —
🚧 91a_datadog_metrics_missing_namespace[3] — — — —
🚧 91a_datadog_metrics_missing_namespace[3] — — — —
🚧 91a_datadog_metrics_missing_namespace[4] — — — —
🚧 91a_datadog_metrics_missing_namespace[4] — — — —
🚧 91a_datadog_metrics_missing_namespace[5] — — — —
🚧 91a_datadog_metrics_missing_namespace[5] — — — —
🚧 91a_datadog_metrics_missing_namespace[6] — — — —
🚧 91a_datadog_metrics_missing_namespace[6] — — — —
🚧 91a_datadog_metrics_missing_namespace[7] — — — —
🚧 91a_datadog_metrics_missing_namespace[7] — — — —
🚧 91a_datadog_metrics_missing_namespace[8] — — — —
🚧 91a_datadog_metrics_missing_namespace[8] — — — —
🚧 91a_datadog_metrics_missing_namespace[9] — — — —
🚧 91a_datadog_metrics_missing_namespace[9] — — — —
🚧 91b_datadog_metrics_pod_exists[0] — — — —
🚧 91b_datadog_metrics_pod_exists[0] — — — —
🚧 91b_datadog_metrics_pod_exists[1] — — — —
🚧 91b_datadog_metrics_pod_exists[1] — — — —
🚧 91b_datadog_metrics_pod_exists[2] — — — —
🚧 91b_datadog_metrics_pod_exists[2] — — — —
🚧 91b_datadog_metrics_pod_exists[3] — — — —
🚧 91b_datadog_metrics_pod_exists[3] — — — —
🚧 91b_datadog_metrics_pod_exists[4] — — — —
🚧 91b_datadog_metrics_pod_exists[4] — — — —
🚧 91b_datadog_metrics_pod_exists[5] — — — —
🚧 91b_datadog_metrics_pod_exists[5] — — — —
🚧 91b_datadog_metrics_pod_exists[6] — — — —
🚧 91b_datadog_metrics_pod_exists[6] — — — —
🚧 91b_datadog_metrics_pod_exists[7] — — — —
🚧 91b_datadog_metrics_pod_exists[7] — — — —
🚧 91b_datadog_metrics_pod_exists[8] — — — —
🚧 91b_datadog_metrics_pod_exists[8] — — — —
🚧 91b_datadog_metrics_pod_exists[9] — — — —
🚧 91b_datadog_metrics_pod_exists[9] — — — —
🚧 91c_datadog_metrics_deployment[0] — — — —
🚧 91c_datadog_metrics_deployment[0] — — — —
🚧 91c_datadog_metrics_deployment[1] — — — —
🚧 91c_datadog_metrics_deployment[1] — — — —
🚧 91c_datadog_metrics_deployment[2] — — — —
🚧 91c_datadog_metrics_deployment[2] — — — —
🚧 91c_datadog_metrics_deployment[3] — — — —
🚧 91c_datadog_metrics_deployment[3] — — — —
🚧 91c_datadog_metrics_deployment[4] — — — —
🚧 91c_datadog_metrics_deployment[4] — — — —
🚧 91c_datadog_metrics_deployment[5] — — — —
🚧 91c_datadog_metrics_deployment[5] — — — —
🚧 91c_datadog_metrics_deployment[6] — — — —
🚧 91c_datadog_metrics_deployment[6] — — — —
🚧 91c_datadog_metrics_deployment[7] — — — —
🚧 91c_datadog_metrics_deployment[7] — — — —
🚧 91c_datadog_metrics_deployment[8] — — — —
🚧 91c_datadog_metrics_deployment[8] — — — —
🚧 91c_datadog_metrics_deployment[9] — — — —
🚧 91c_datadog_metrics_deployment[9] — — — —
🚧 91d_datadog_metrics_historical_pod[0] — — — —
🚧 91d_datadog_metrics_historical_pod[0] — — — —
🚧 91d_datadog_metrics_historical_pod[1] — — — —
🚧 91d_datadog_metrics_historical_pod[1] — — — —
🚧 91d_datadog_metrics_historical_pod[2] — — — —
🚧 91d_datadog_metrics_historical_pod[2] — — — —
🚧 91d_datadog_metrics_historical_pod[3] — — — —
🚧 91d_datadog_metrics_historical_pod[3] — — — —
🚧 91d_datadog_metrics_historical_pod[4] — — — —
🚧 91d_datadog_metrics_historical_pod[4] — — — —
🚧 91d_datadog_metrics_historical_pod[5] — — — —
🚧 91d_datadog_metrics_historical_pod[5] — — — —
🚧 91d_datadog_metrics_historical_pod[6] — — — —
🚧 91d_datadog_metrics_historical_pod[6] — — — —
🚧 91d_datadog_metrics_historical_pod[7] — — — —
🚧 91d_datadog_metrics_historical_pod[7] — — — —
🚧 91d_datadog_metrics_historical_pod[8] — — — —
🚧 91d_datadog_metrics_historical_pod[8] — — — —
🚧 91d_datadog_metrics_historical_pod[9] — — — —
🚧 91d_datadog_metrics_historical_pod[9] — — — —
🚧 91e_datadog_custom_metrics[0] — — — —
🚧 91e_datadog_custom_metrics[0] — — — —
🚧 91e_datadog_custom_metrics[1] — — — —
🚧 91e_datadog_custom_metrics[1] — — — —
🚧 91f_datadog_logs_historical_pod — — — —
🚧 91f_datadog_logs_historical_pod — — — —
🚧 91g_datadog_metrics_mismatched_pod[0] — — — —
🚧 91g_datadog_metrics_mismatched_pod[0] — — — —
🚧 91g_datadog_metrics_mismatched_pod[1] — — — —
🚧 91g_datadog_metrics_mismatched_pod[1] — — — —
🚧 91h_datadog_logs_empty_query_with_url — — — —
🚧 91h_datadog_logs_empty_query_with_url — — — —
➖ 91i_datadog_metrics_empty_query_with_url — — — —
➖ 91i_datadog_metrics_empty_query_with_url — — — —
🚧 92_cpu_graph_conversation[0] — — — —
🚧 92_cpu_graph_conversation[0] — — — —
🚧 92_cpu_graph_conversation[1] — — — —
🚧 92_cpu_graph_conversation[1] — — — —
🚧 92_cpu_graph_conversation[2] — — — —
🚧 92_cpu_graph_conversation[2] — — — —
🚧 92_cpu_graph_conversation[3] — — — —
🚧 92_cpu_graph_conversation[3] — — — —
🚧 92_cpu_graph_conversation[4] — — — —
🚧 92_cpu_graph_conversation[4] — — — —
🚧 92_cpu_graph_conversation[5] — — — —
🚧 92_cpu_graph_conversation[5] — — — —
🚧 92_cpu_graph_conversation[6] — — — —
🚧 92_cpu_graph_conversation[6] — — — —
🚧 92_cpu_graph_conversation[7] — — — —
🚧 92_cpu_graph_conversation[7] — — — —
🚧 92_cpu_graph_conversation[8] — — — —
🚧 92_cpu_graph_conversation[8] — — — —
🚧 92_cpu_graph_conversation[9] — — — —
🚧 92_cpu_graph_conversation[9] — — — —
🔧 93_calling_datadog[0] 15.0s 3 2 —
🔧 93_calling_datadog[0] 14.6s 3 2 —
🔧 93_calling_datadog[1] 14.2s 3 2 —
🔧 93_calling_datadog[1] 15.1s 3 2 —
🔧 93_calling_datadog[2] 14.7s 3 2 —
🔧 93_calling_datadog[2] 15.5s 3 2 —
Total 14.8s avg 3.0 avg 2.0 avg —
📖 Legend
Icon Meaning
✅ The test was successful
➖ The test was skipped
⚠️ The test failed but is known to be flaky or known to fail
🚧 The test had a setup failure (not a code regression)
🔧 The test failed due to mock data issues (not a code regression)
🚫 The test was throttled by API rate limits/overload
❌ The test failed and should be fixed before merging the PR
🔄 Re-run evals manually

⚠️ Warning: /eval comments always run using the workflow from master, not from this PR branch. If you modified the GitHub Action (e.g., added secrets or env vars), those changes won't take effect.

To test workflow changes, use the GitHub CLI or Actions UI instead:

gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/update-toolset-config-mappings-kbJ46 -f markers=regression -f filter=

Option 1: Comment on this PR with /eval:

/eval
markers: regression

Or with more options (one per line):

/eval
model: gpt-4o
markers: regression
filter: 09_crashpod
iterations: 5

Run evals on a different branch (e.g., master) for comparison:

/eval
branch: master
markers: regression
Option Description
model Model(s) to test (default: same as automatic runs)
markers Pytest markers (no default - runs all tests!)
filter Pytest -k filter (use /list to see valid eval names)
iterations Number of runs, max 10
branch Run evals on a different branch (for cross-branch comparison)

Quick re-run: Use /rerun to re-run the most recent /eval on this PR with the same parameters.

Option 2: Trigger via GitHub Actions UI → "Run workflow"

🏷️ Valid markers

benchmark, chain-of-causation, compaction, confluence, context_window, coralogix, counting, database, datadog, datetime, easy, elasticsearch, embeds, frontend, grafana-dashboard, hard, integration, kafka, kubernetes, leaked-information, logs, loki, medium, metrics, network, newrelic, no-cicd, numerical, one-test, port-forward, prometheus, question-answer, regression, runbooks, slackbot, storage, toolset-limitation, traces, transparency


Commands: /eval · /rerun · /list

CLI: gh workflow run eval-regression.yaml --repo HolmesGPT/holmesgpt --ref claude/update-toolset-config-mappings-kbJ46 -f markers=regression -f filter=

Move DatadogBaseConfig and ServiceNowTablesConfig imports from inside
test methods to the module level, following Python best practices.

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb
Signed-off-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@tests/utils/test_toolset_config.py`:
- Around line 126-205: The test methods in
TestDatadogConfigBackwardCompatibility are missing type hints; add typing.Any to
the file imports and annotate three methods that accept caplog with caplog: Any
and annotate all four test methods with -> None. Specifically, update the
signatures of test_deprecated_datadog_fields(caplog: Any) -> None,
test_new_datadog_fields_no_warning(caplog: Any) -> None,
test_old_and_new_datadog_fields_new_takes_precedence(caplog: Any) -> None, and
test_old_fields_produce_same_config_as_new_fields() -> None, and add "from
typing import Any" to the module imports.

Comment thread tests/utils/test_toolset_config.py
Add Any to typing imports and annotate the four test methods with
proper type hints for caplog parameter and return types.

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb
Signed-off-by: Claude <noreply@anthropic.com>
moshemorad
moshemorad previously approved these changes Feb 8, 2026
@moshemorad
moshemorad merged commit 256b3da into master Feb 9, 2026
18 of 20 checks passed
@moshemorad
moshemorad deleted the claude/update-toolset-config-mappings-kbJ46 branch February 9, 2026 10:51
moshemorad pushed a commit that referenced this pull request Feb 22, 2026
## Summary
Standardizes Datadog toolset configuration field names to be more
concise and consistent with naming conventions. All `dd_*` prefixed
fields and verbose names are renamed to shorter, clearer alternatives
while maintaining full backward compatibility.

## Key Changes
- **Configuration field renames:**
  - `dd_api_key` → `api_key`
  - `dd_app_key` → `app_key`
  - `site_api_url` → `api_url`
  - `request_timeout` → `timeout_seconds`

- **Backward compatibility:** Implemented automatic field migration
using `_deprecated_mappings` in `DatadogBaseConfig` that:
  - Accepts both old and new field names
  - Logs deprecation warnings when old names are used
  - Gives precedence to new field names if both are provided
  - Ensures existing configurations continue to work without changes

- **Documentation updates:** Updated all examples in the Datadog data
source documentation to use the new field names across all deployment
methods (Holmes CLI, Holmes Helm Chart, Robusta Helm Chart)

- **Test updates:** Updated all test fixtures and test code to use the
new field names while adding comprehensive backward compatibility tests

## Implementation Details
- Added `ClassVar[Dict[str, Optional[str]]]` type hint for the
deprecated mappings dictionary
- Leveraged Pydantic's field validation to handle the migration
transparently
- All internal code references updated to use new field names
- Deprecation warnings help users identify and update their
configurations

https://claude.ai/code/session_01XhFkchzMzZu6v39uT8ofTb

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
  * Updated Datadog docs and examples to use standardized key names.

* **Configuration Changes**
* Renamed Datadog config keys: dd_api_key → api_key, dd_app_key →
app_key, site_api_url → api_url, request_timeout → timeout_seconds.
* Backward compatibility: old keys are automatically supported during
migration.

* **Tests**
* Updated and added tests to cover new keys and backward-compatibility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Mohse Morad <moshemorad12340@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants