CreateSilence creates a new silence and returns the unique identifier of the silence.
(ctx context.Context, silence types.Silence)
| 1129 | |
| 1130 | // CreateSilence creates a new silence and returns the unique identifier of the silence. |
| 1131 | func (c *Client) CreateSilence(ctx context.Context, silence types.Silence) (string, error) { |
| 1132 | u := c.alertmanagerClient.URL("api/prom/api/v2/silences", nil) |
| 1133 | |
| 1134 | data, err := json.Marshal(silence) |
| 1135 | if err != nil { |
| 1136 | return "", fmt.Errorf("error marshaling the silence: %s", err) |
| 1137 | } |
| 1138 | |
| 1139 | req, err := http.NewRequest(http.MethodPost, u.String(), bytes.NewReader(data)) |
| 1140 | if err != nil { |
| 1141 | return "", fmt.Errorf("error creating request: %v", err) |
| 1142 | } |
| 1143 | |
| 1144 | req.Header.Set("Content-Type", "application/json") |
| 1145 | |
| 1146 | resp, body, err := c.alertmanagerClient.Do(ctx, req) |
| 1147 | if err != nil { |
| 1148 | return "", err |
| 1149 | } |
| 1150 | |
| 1151 | if resp.StatusCode != http.StatusOK { |
| 1152 | return "", fmt.Errorf("creating the silence failed with status %d and error %v", resp.StatusCode, string(body)) |
| 1153 | } |
| 1154 | |
| 1155 | type response struct { |
| 1156 | SilenceID string `json:"silenceID"` |
| 1157 | } |
| 1158 | |
| 1159 | decoded := &response{} |
| 1160 | if err := json.Unmarshal(body, decoded); err != nil { |
| 1161 | return "", err |
| 1162 | } |
| 1163 | return decoded.SilenceID, nil |
| 1164 | } |
| 1165 | |
| 1166 | func (c *Client) GetSilencesV2(ctx context.Context) ([]types.Silence, error) { |
| 1167 | u := c.alertmanagerClient.URL("api/prom/api/v2/silences", nil) |