Skip to content

Added request trigger in plugins#396

Draft
venkata-avinash-a wants to merge 2 commits into
sapcc:masterfrom
venkata-avinash-a:feature/alertmanager-silence-request
Draft

Added request trigger in plugins#396
venkata-avinash-a wants to merge 2 commits into
sapcc:masterfrom
venkata-avinash-a:feature/alertmanager-silence-request

Conversation

@venkata-avinash-a

@venkata-avinash-a venkata-avinash-a commented Jun 30, 2026

Copy link
Copy Markdown

Add request trigger plugin

Adds a new request trigger plugin that sends HTTP requests during node state transitions. Primary use case: managing Alertmanager silences automatically when nodes enter/exit maintenance.

Changes

File Change
plugin/impl/request.go New request trigger plugin
controllers/config.go Register plugin in trigger registry

Features

  • Body placeholder substitution: {{nodeName}}, {{state}}, {{startsAt}}, {{endsAt}}, {{silenceId}}
  • Extracts Alertmanager silence ID from POST response and stores it as node label cloud.sap/alertmanager-silence-id

Example config

    # Create AlertManager silence when entering maintenance
    - type: request
      name: create_alertmanager_silence
      config:
        url: "https://alertmanager-internal.scaleout.qa-de-1.cloud.sap/api/v2/silences"
        method: "POST"
        body: '{"matchers": [{"name": "node", "value": "{{ "{{" }}nodeName{{ "}}" }}", "isRegex": false}, {"name": "region", "value": "{{ "{{" }}.Values.global.region{{ "}}" }}", "isRegex": false}, {"name": "service", "value": "ceph", "isRegex": false}, {"name": "severity", "value": "warning|info", "isRegex": true}, {"name": "support_group", "value": "storage", "isRegex": false}], "startsAt": "{{ "{{" }}startsAt{{ "}}" }}", "endsAt": "{{ "{{" }}endsAt{{ "}}" }}", "createdBy": "maintenance-controller", "comment": "Node {{ "{{" }}nodeName{{ "}}" }} entering maintenance"}'
    # Delete AlertManager silence when exiting maintenance
    - type: request
      name: delete_alertmanager_silence
      config:
        url: "https://alertmanager-internal.scaleout.qa-de-1.cloud.sap/api/v2/silence/{{ "{{" }}silenceId{{ "}}" }}"
        method: "DELETE"

QA validation (st1-qa-de-1)

  • Node enters in-maintenance → silence created (HTTP 200), ID stored as label
  • Node exits to operational → silence expired via DELETE (HTTP 200)
  • qa_test.log

TODO

  • Unit tests
  • Documentation update in docs/plugins.md
  • Customize request body via Helm values for per-cluster configuration
  • Support group-level matchers for silencing alerts

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.

1 participant