feat: Add Dash0 alerting and config components#3022
feat: Add Dash0 alerting and config components#3022fadhilijuma wants to merge 1 commit intosuperplanehq:mainfrom
Conversation
Signed-off-by: Fadhili Juma <ffumwa@gmail.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
This is the final PR Bugbot will review for you during this billing cycle
Your free Bugbot reviews will reset on February 12
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| responseBody, err := c.execRequest(operation, http.MethodPost, requestURL, strings.NewReader(data.Encode()), "application/x-www-form-urlencoded") | ||
| if err != nil { | ||
| return nil, err | ||
| return nil, fmt.Errorf("%s: %w", operation, err) |
There was a problem hiding this comment.
Double-prefixed operation string in all client error messages
Medium Severity
Every client method passes the operation string to execRequest, which already prefixes all its errors with that operation. Then callers wrap the returned error with the same operation again via fmt.Errorf("%s: %w", operation, err). This produces confusing double-prefixed error messages like "dash0 client: list check rules: dash0 client: list check rules: execute request: ...". The pattern is consistent across all eight methods that call execRequest.
Additional Locations (2)
| specification["labels"] = labels | ||
| } | ||
|
|
||
| return specification, nil |
There was a problem hiding this comment.
Alias keys not removed during check rule normalization
Medium Severity
validateDash0CheckRuleSpecification reads from alias keys (alert, expr, keep_firing_for) via firstNonEmptyMappedString and writes the canonical keys (name, expression, keepFiringFor), but never deletes the alias keys from the specification map. When a user provides a spec with Prometheus-style keys like {"alert": "MyRule", "expr": "vector(1)"}, the resulting payload sent to the Dash0 API contains both the alias and canonical versions of each field, which may cause unexpected API behavior.
|
@fadhilijuma please, use separate PRs for each component. It's a bit complicated to review this much code in one go |
|
Hey @fadhilijuma - first of all, thanks for submitting this one! |
|
@AleksandarCole okay. Let me work on that. |
|
Superseded by split Dash0 component PRs for issue #2906:\n- #3027 On Alert Event\n- #3030 Send Log Event\n- #3032 Get Check Details\n- #3033 Create Synthetic Check\n- #3034 Update Synthetic Check\n- #3035 Create Check Rule\n- #3036 Update Check Rule\n\nClosing this monolith PR to keep review scope per component. |


Implements #2906
Summary
This PR expands the existing Dash0 integration with seven additional components so users can build richer Dash0 workflows in SuperPlane.
Added components:
dash0.onAlertEventdash0.sendLogEventdash0.getCheckDetailsdash0.createSyntheticCheckdash0.updateSyntheticCheckdash0.createCheckRuledash0.updateCheckRuleImplementation Details
Integration
Trigger
On Alert Eventtrigger with event-type filtering (fired,resolved).Actions
Send Log Event.Get Check Details.Frontend
web_src/src/pages/workflowv2/mappers/dash0/.Documentation
docs/components/Dash0.mdx).Demo Video
https://www.dropbox.com/scl/fi/xtgr2ti3v06rc7j8qix4n/Screen-Recording-2026-02-11-at-00.43.42.mov?rlkey=cca70xz52rkvzr9hkkckk1m2s&st=vg61cq0j&dl=0
Manual Functional Validation