Skip to content

Rename Grafana config fields for consistency and add backward compatibility - #1498

Merged
naomi-robusta merged 8 commits into
masterfrom
claude/update-toolset-mappings-bJ4w6
Feb 8, 2026
Merged

naomi-robusta merged 8 commits into
masterfrom
claude/update-toolset-mappings-bJ4w6

Conversation

@naomi-robusta

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

Copy link
Copy Markdown
Collaborator

Summary

This PR renames configuration fields in Grafana-related toolsets for improved clarity and consistency, while maintaining backward compatibility with existing configurations.

Key Changes

  • Field Renames:

    • url → api_url across all Grafana toolsets (Dashboards, Loki, Tempo)
    • headers → additional_headers for clarity about their purpose
  • Backward Compatibility:

    • Added _deprecated_mappings to GrafanaConfig class to automatically map old field names to new ones
    • Existing configurations using old field names will continue to work without modification
    • New field names take precedence when both old and new names are provided
  • Documentation Updates:

    • Updated all documentation files to reflect new field names
    • Updated example configurations in CLAUDE.md and all toolset-specific docs
    • Updated test fixtures to use new field names
  • Code Updates:

    • Modified GrafanaConfig class in holmes/plugins/toolsets/grafana/common.py to support field mapping
    • Updated all references to config.url → config.api_url
    • Updated all references to config.headers → config.additional_headers
    • Updated test cases to use new field names

Implementation Details

The backward compatibility is implemented using Pydantic's field validation mechanism. The _deprecated_mappings class variable defines the mapping between old and new field names, allowing the configuration parser to automatically translate old configurations to the new format while maintaining full compatibility.

All test cases have been updated to verify both the new field names work correctly and that the deprecated field names are properly mapped to their new equivalents.

https://claude.ai/code/session_01EwZdqLZkUq4NKduWDmBFDa

Summary by CodeRabbit

  • Documentation

    • Major expansion of the evaluation/test workflow guide with detailed setup, prompts, CI secret handling, examples, and best practices; Grafana toolset docs updated for new config keys.
  • Refactor

    • Config keys renamed for clarity: url → api_url and headers → additional_headers, with backward-compatibility support.
  • Tests

    • Fixtures and unit tests updated to use the new config keys to preserve test compatibility.

…_headers

- Add deprecated field mappings for backward compatibility
- Update all documentation, tests, and eval fixtures to use new field names
- Add backward compatibility tests to verify old field names still work
- Keep only backward compatibility tests using old field names

https://claude.ai/code/session_01EwZdqLZkUq4NKduWDmBFDa
Signed-off-by: Claude <noreply@anthropic.com>
@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 @ 750fad9 (#21799816296)

✅ Results of HolmesGPT evals

Automatically triggered by commit 750fad9 on branch claude/update-toolset-mappings-bJ4w6

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 35.4s 6 11 $0.2371
✅ 101_loki_historical_logs_pod_deleted 52.4s 7 13 $0.2917
✅ 111_pod_names_contain_service 30.2s 4 10 $0.2081
✅ 112_find_pvcs_by_uuid 37.1s 7 9 $0.2734
✅ 12_job_crashing 31.2s 4 7 $0.1980
✅ 176_network_policy_blocking_traffic_no_runbooks 48.0s 7 17 $0.4282
✅ 24_misconfigured_pvc 31.2s 5 14 $0.2287
✅ 43_current_datetime_from_prompt 4.8s 1 — $0.0111
✅ 61_exact_match_counting 17.0s 4 4 $0.1603
Total 31.9s avg 5.0 avg 10.6 avg $2.0366
📜 Run @ 5d1018e (#21799705425)

✅ Results of HolmesGPT evals

Automatically triggered by commit 5d1018e on branch claude/update-toolset-mappings-bJ4w6

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 36.2s 6 11 $0.2477
✅ 101_loki_historical_logs_pod_deleted 49.8s 6 13 $0.3049
✅ 111_pod_names_contain_service 39.9s 6 14 $0.2621
✅ 112_find_pvcs_by_uuid 30.2s 5 7 $0.2196
✅ 12_job_crashing 39.6s 6 14 $0.2636
✅ 176_network_policy_blocking_traffic_no_runbooks 43.7s 7 17 $0.2939
✅ 24_misconfigured_pvc 37.8s 6 15 $0.2427
✅ 43_current_datetime_from_prompt 4.4s 1 — $0.1048
✅ 61_exact_match_counting 12.1s 3 2 $0.1420
Total 32.6s avg 5.1 avg 11.6 avg $2.0813
📜 Run @ 8c7d7e1 (#21797864362)

✅ Results of HolmesGPT evals

Automatically triggered by commit 8c7d7e1 on branch claude/update-toolset-mappings-bJ4w6

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 30.0s 5 11 $0.2275
✅ 101_loki_historical_logs_pod_deleted 46.7s 7 11 $0.3674
✅ 111_pod_names_contain_service 31.8s 5 11 $0.2213
✅ 112_find_pvcs_by_uuid 28.1s 5 7 $0.2140
✅ 12_job_crashing 25.2s 4 7 $0.1985
✅ 176_network_policy_blocking_traffic_no_runbooks 45.4s 6 17 $0.2887
✅ 24_misconfigured_pvc 31.4s 5 13 $0.3170
✅ 43_current_datetime_from_prompt 4.9s 1 — $0.1058
✅ 61_exact_match_counting 15.5s 4 4 $0.1592
Total 28.8s avg 4.7 avg 10.1 avg $2.0995
📜 Run @ f08bc0f (#21717841385)

✅ Results of HolmesGPT evals

Automatically triggered by commit f08bc0f on branch claude/update-toolset-mappings-bJ4w6

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 31.8s 5 10 $0.2194
✅ 101_loki_historical_logs_pod_deleted 59.3s 8 12 $0.3078
✅ 111_pod_names_contain_service 33.3s 5 11 $0.2228
✅ 112_find_pvcs_by_uuid 36.9s 7 9 $0.2476
✅ 12_job_crashing 30.6s 5 11 $0.2270
✅ 176_network_policy_blocking_traffic_no_runbooks 49.6s 7 18 $0.2972
✅ 24_misconfigured_pvc 33.7s 5 13 $0.2255
✅ 43_current_datetime_from_prompt 5.2s 1 — $0.1047
✅ 61_exact_match_counting 16.8s 4 4 $0.1596
Total 33.0s avg 5.2 avg 11.0 avg $2.0116
📜 Run @ dd655b6 (#21715994932)

✅ Results of HolmesGPT evals

Automatically triggered by commit dd655b6 on branch claude/update-toolset-mappings-bJ4w6

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.2s 5 11 $0.2290
✅ 101_loki_historical_logs_pod_deleted 52.0s 7 12 $0.2895
✅ 111_pod_names_contain_service 36.5s 6 10 $0.2255
✅ 112_find_pvcs_by_uuid 33.1s 6 7 $0.2310
✅ 12_job_crashing 25.6s 4 8 $0.2054
✅ 176_network_policy_blocking_traffic_no_runbooks 47.3s 6 17 $0.2864
✅ 24_misconfigured_pvc 38.7s 7 14 $0.2487
✅ 43_current_datetime_from_prompt 5.6s 1 — $0.0120
✅ 61_exact_match_counting 17.6s 4 4 $0.1594
Total 32.1s avg 5.1 avg 10.4 avg $1.8869

✅ Results of HolmesGPT evals

Automatically triggered by commit 0bc8f26 on branch claude/update-toolset-mappings-bJ4w6

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.8s 5 11 $0.2324
✅ 101_loki_historical_logs_pod_deleted 48.8s 7 12 $0.2931
✅ 111_pod_names_contain_service 31.8s 5 11 $0.2192
✅ 112_find_pvcs_by_uuid 37.2s 7 9 $0.2615
✅ 12_job_crashing 26.2s 4 7 $0.2006
✅ 176_network_policy_blocking_traffic_no_runbooks 44.2s 5 16 $0.2704
✅ 24_misconfigured_pvc 38.5s 7 14 $0.2521
✅ 43_current_datetime_from_prompt 5.3s 1 — $0.0111
✅ 61_exact_match_counting 16.9s 4 4 $0.2677
Total 31.3s avg 5.0 avg 10.5 avg $2.0079
📖 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-mappings-bJ4w6 -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-mappings-bJ4w6 -f markers=regression -f filter=

@github-actions

github-actions Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

✅ Docker image ready for f1871b5 (built in 40s)

⚠️ 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:f1871b5
docker tag us-central1-docker.pkg.dev/robusta-development/temporary-builds/holmes:f1871b5 me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:f1871b5
docker push me-west1-docker.pkg.dev/robusta-development/development/holmes-dev:f1871b5

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:f1871b5

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:f1871b5

@coderabbitai

coderabbitai Bot commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

Walkthrough

Expanded CLAUDE.md with comprehensive eval/testing guidance and renamed Grafana toolset config keys (url → api_url, headers → additional_headers) with backward-compatibility mappings; code, docs, tests, and fixtures updated accordingly. No public API signature changes.

Changes

Cohort / File(s) Summary
Documentation
CLAUDE.md, docs/data-sources/builtin-toolsets/grafanadashboards.md, docs/data-sources/builtin-toolsets/grafanaloki.md, docs/data-sources/builtin-toolsets/grafanatempo.md, docs/development/evaluations/adding-evals.md
Large expansion of CLAUDE.md content; update examples and config snippets to use api_url and additional_headers.
Config class
holmes/plugins/toolsets/grafana/common.py
Rename url→api_url, headers→additional_headers; add _deprecated_mappings for backward compatibility and update getters/docs.
Grafana toolsets & APIs
holmes/plugins/toolsets/grafana/toolset_grafana.py, holmes/plugins/toolsets/grafana/toolset_grafana_tempo.py, holmes/plugins/toolsets/grafana/grafana_tempo_api.py, holmes/plugins/toolsets/grafana/loki/toolset_grafana_loki.py
Switch accesses from config.url→config.api_url and config.headers→config.additional_headers where building URLs and request headers.
Tests
tests/plugins/toolsets/grafana/test_grafana.py, tests/plugins/toolsets/grafana/test_grafana_common.py, tests/plugins/toolsets/grafana/test_grafana_tempo.py, tests/plugins/toolsets/test_load_config.py, tests/plugins/toolsets/grafana/test_grafana_tempo_api.py
Update tests to use api_url/additional_headers; add backward-compatibility tests for deprecated keys; adjust imports/exports where required.
Test fixtures
tests/llm/fixtures/.../toolsets.yaml (multiple files, e.g., 100a_loki_historical_logs/toolsets.yaml, 101_loki_historical_logs_pod_deleted/toolsets.yaml, 102*, 102a*, 102b*, 114*, 115*, 177*, 178*, 179*, 35_tempo, tests/investigate/14_tempo/toolsets.yaml)
Replace url with api_url in Grafana toolset fixture configurations across many test fixtures.
Manifest/metadata
project manifest and small ancillary files
Net additions reflecting documentation expansion (manifest lines changed noted).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

enhancement

Suggested reviewers

  • arikalon1
  • RoiGlinik
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% 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 directly and accurately summarizes the main changes: renaming Grafana config fields (url→api_url, headers→additional_headers) and adding backward compatibility support.

✏️ 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.

@netlify

netlify Bot commented Feb 5, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for holmes-docs ready!

Name Link
🔨 Latest commit 0bc8f26
🔍 Latest deploy log https://app.netlify.com/projects/holmes-docs/deploys/69889ea165dcbf000870ca13
😎 Deploy Preview https://deploy-preview-1498--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.74s -6.6%
Warm Mean 4.51s 5.08s -11.1%
Warm Min 4.48s 5.00s
Warm Max 4.54s 5.17s

🟡 Full CLI with LLM

Measures holmes ask execution time (OpenRouter + Haiku 4.5)

Metric PR Master Change
Cold Start 27.26s 30.66s -11.1%
Warm Mean 8.97s 8.17s +9.8%
Warm Min 7.69s 7.73s
Warm Max 12.26s 8.47s

PR: f1871b59 | Master: e9fa6cef | Iterations: 5

@naomi-robusta
naomi-robusta requested review from RoiGlinik, arikalon1 and moshemorad and removed request for moshemorad February 5, 2026 10:28
@naomi-robusta

Copy link
Copy Markdown
Collaborator Author

/eval
marker: grafana
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-mappings-bJ4w6
Model opus-4.5
Markers grafana
Iterations 2
Duration 39s
Workflow View logs | Rerun

⚠️ No eval report was generated.

📖 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-mappings-bJ4w6 -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-mappings-bJ4w6 -f markers=regression -f filter=

@naomi-robusta

Copy link
Copy Markdown
Collaborator Author

/eval
marker: grafana-dashboard
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-mappings-bJ4w6
Model opus-4.5
Markers grafana-dashboard
Iterations 2
Duration 2m 27s
Workflow View logs | Rerun

Results of HolmesGPT evals

  • ask_holmes: 6/6 test cases were successful, 0 regressions
Status Test case Time Turns Tools Cost
✅ 177_grafana_home_dashboard 15.6s 3 3 $0.1512
✅ 177_grafana_home_dashboard 15.7s 3 3 $0.1521
✅ 178_grafana_search_dashboard_query 22.3s 4 5 $0.1798
✅ 178_grafana_search_dashboard_query 21.4s 4 5 $0.1808
✅ 179_grafana_big_dashboard_query 26.1s 5 6 $0.2091
✅ 179_grafana_big_dashboard_query 26.3s 4 5 $0.1731
Total 21.2s avg 3.8 avg 4.5 avg $1.0462
📖 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-mappings-bJ4w6 -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-mappings-bJ4w6 -f markers=regression -f filter=

@naomi-robusta
naomi-robusta marked this pull request as ready for review February 5, 2026 13:20
…nces

- Move TempoAPIError import to top of test_grafana_tempo_api.py
- Update remaining GrafanaTempoConfig fixtures to use api_url instead of url

https://claude.ai/code/session_01EwZdqLZkUq4NKduWDmBFDa
Signed-off-by: Claude <noreply@anthropic.com>
moshemorad
moshemorad previously approved these changes Feb 8, 2026

@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 `@CLAUDE.md`:
- Around line 272-277: The doc example still uses the old key `url` which
conflicts with the renamed config key `api_url`; update the example in the
toolset snippet to use `api_url: "{{ env.ELASTICSEARCH_URL }}"` (replace `url`
with `api_url`) and ensure the surrounding CI/CD guidance mentions the same
environment variable names (e.g., `ELASTICSEARCH_URL`, `ELASTICSEARCH_API_KEY`)
so the config key (`api_url`) and secret names are consistent across the
documentation and examples.

Comment thread CLAUDE.md
Change toolset config example from url to api_url to align with
the renamed Grafana config field pattern.

https://claude.ai/code/session_01EwZdqLZkUq4NKduWDmBFDa
Signed-off-by: Claude <noreply@anthropic.com>
@naomi-robusta
naomi-robusta merged commit be57867 into master Feb 8, 2026
18 of 20 checks passed
@naomi-robusta
naomi-robusta deleted the claude/update-toolset-mappings-bJ4w6 branch February 8, 2026 17:55
moshemorad pushed a commit that referenced this pull request Feb 22, 2026
…bility (#1498)

## Summary
This PR renames configuration fields in Grafana-related toolsets for
improved clarity and consistency, while maintaining backward
compatibility with existing configurations.

## Key Changes
- **Field Renames:**
- `url` → `api_url` across all Grafana toolsets (Dashboards, Loki,
Tempo)
  - `headers` → `additional_headers` for clarity about their purpose

- **Backward Compatibility:**
- Added `_deprecated_mappings` to `GrafanaConfig` class to automatically
map old field names to new ones
- Existing configurations using old field names will continue to work
without modification
- New field names take precedence when both old and new names are
provided

- **Documentation Updates:**
  - Updated all documentation files to reflect new field names
- Updated example configurations in CLAUDE.md and all toolset-specific
docs
  - Updated test fixtures to use new field names

- **Code Updates:**
- Modified `GrafanaConfig` class in
`holmes/plugins/toolsets/grafana/common.py` to support field mapping
  - Updated all references to `config.url` → `config.api_url`
- Updated all references to `config.headers` →
`config.additional_headers`
  - Updated test cases to use new field names

## Implementation Details
The backward compatibility is implemented using Pydantic's field
validation mechanism. The `_deprecated_mappings` class variable defines
the mapping between old and new field names, allowing the configuration
parser to automatically translate old configurations to the new format
while maintaining full compatibility.

All test cases have been updated to verify both the new field names work
correctly and that the deprecated field names are properly mapped to
their new equivalents.

https://claude.ai/code/session_01EwZdqLZkUq4NKduWDmBFDa

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

* **Documentation**
* Major expansion of the evaluation/test workflow guide with detailed
setup, prompts, CI secret handling, examples, and best practices;
Grafana toolset docs updated for new config keys.

* **Refactor**
* Config keys renamed for clarity: url → api_url and headers →
additional_headers, with backward-compatibility support.

* **Tests**
* Fixtures and unit tests updated to use the new config keys to preserve
test 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