@@ -61,6 +61,8 @@ func (a *API) RegisterRoutes(r *mux.Router) {
6161 {"get_alertmanager_config" , "GET" , "/api/prom/configs/alertmanager" , a .getConfig },
6262 {"set_alertmanager_config" , "POST" , "/api/prom/configs/alertmanager" , a .setConfig },
6363 {"validate_alertmanager_config" , "POST" , "/api/prom/configs/alertmanager/validate" , a .validateAlertmanagerConfig },
64+ {"deactivate_config" , "DELETE" , "/api/prom/configs/deactivate" , a .deactivateConfig },
65+ {"restore_config" , "POST" , "/api/prom/configs/restore" , a .restoreConfig },
6466 // Internal APIs.
6567 {"private_get_rules" , "GET" , "/private/api/prom/configs/rules" , a .getConfigs },
6668 {"private_get_alertmanager_config" , "GET" , "/private/api/prom/configs/alertmanager" , a .getConfigs },
@@ -217,3 +219,58 @@ func (a *API) getConfigs(w http.ResponseWriter, r *http.Request) {
217219 return
218220 }
219221}
222+
223+ func (a * API ) deactivateConfig (w http.ResponseWriter , r * http.Request ) {
224+ userID , _ , err := user .ExtractOrgIDFromHTTPRequest (r )
225+ if err != nil {
226+ http .Error (w , err .Error (), http .StatusUnauthorized )
227+ return
228+ }
229+ logger := util .WithContext (r .Context (), util .Logger )
230+
231+ fmt .Printf ("deactivateConfigs org ID %s\n " , userID )
232+
233+ if _ , err := a .db .GetConfig (userID ); err != nil {
234+ if err == sql .ErrNoRows {
235+ http .Error (w , "No configuration" , http .StatusNotFound )
236+ return
237+ }
238+ level .Error (logger ).Log ("msg" , "error getting config" , "err" , err )
239+ http .Error (w , err .Error (), http .StatusInternalServerError )
240+ return
241+ }
242+
243+ if err := a .db .DeactivateConfig (userID ); err != nil {
244+ level .Error (logger ).Log ("msg" , "error deactivating configs" , "err" , err )
245+ http .Error (w , err .Error (), http .StatusInternalServerError )
246+ return
247+ }
248+ w .WriteHeader (http .StatusAccepted )
249+ }
250+
251+ func (a * API ) restoreConfig (w http.ResponseWriter , r * http.Request ) {
252+ userID , _ , err := user .ExtractOrgIDFromHTTPRequest (r )
253+ if err != nil {
254+ http .Error (w , err .Error (), http .StatusUnauthorized )
255+ return
256+ }
257+ logger := util .WithContext (r .Context (), util .Logger )
258+ fmt .Printf ("restore org ID %s\n " , userID )
259+
260+ if _ , err := a .db .GetConfig (userID ); err != nil {
261+ if err == sql .ErrNoRows {
262+ http .Error (w , "No configuration" , http .StatusNotFound )
263+ return
264+ }
265+ level .Error (logger ).Log ("msg" , "error getting config" , "err" , err )
266+ http .Error (w , err .Error (), http .StatusInternalServerError )
267+ return
268+ }
269+
270+ if err := a .db .RestoreConfig (userID ); err != nil {
271+ level .Error (logger ).Log ("msg" , "error restoring config" , "err" , err )
272+ http .Error (w , err .Error (), http .StatusInternalServerError )
273+ return
274+ }
275+ w .WriteHeader (http .StatusCreated )
276+ }
0 commit comments