moira

Форк
0
/
maintenance.go 
66 строк · 1.8 Кб
1
package handler
2

3
import (
4
	"net/http"
5

6
	"github.com/go-chi/chi"
7
	"github.com/go-chi/render"
8
	"github.com/pkg/errors"
9

10
	"go.avito.ru/DO/moira"
11
	"go.avito.ru/DO/moira/api"
12
	"go.avito.ru/DO/moira/api/controller"
13
)
14

15
// maintenance wraps debug methods which expose maintenance values for silent pattern / tag and trigger
16
func maintenance(router chi.Router) {
17
	router.Get("/metrics", getMaintenanceMetrics)
18
	router.Get("/tags", getMaintenanceTags)
19
	router.Route("/trigger/{id}", func(router chi.Router) {
20
		router.Get("/", getMaintenanceTrigger)
21
	})
22
}
23

24
func getMaintenanceMetrics(writer http.ResponseWriter, request *http.Request) {
25
	maintenance, err := controller.GetMaintenanceSilent(database, moira.SPTMetric)
26
	if err != nil {
27
		_ = render.Render(writer, request, err)
28
		return
29
	}
30

31
	if err := render.Render(writer, request, maintenance); err != nil {
32
		_ = render.Render(writer, request, api.ErrorRender(err))
33
		return
34
	}
35
}
36

37
func getMaintenanceTags(writer http.ResponseWriter, request *http.Request) {
38
	maintenance, err := controller.GetMaintenanceSilent(database, moira.SPTTag)
39
	if err != nil {
40
		_ = render.Render(writer, request, err)
41
		return
42
	}
43

44
	if err := render.Render(writer, request, maintenance); err != nil {
45
		_ = render.Render(writer, request, api.ErrorRender(err))
46
		return
47
	}
48
}
49

50
func getMaintenanceTrigger(writer http.ResponseWriter, request *http.Request) {
51
	id := chi.URLParam(request, "id")
52
	if id == "" {
53
		_ = render.Render(writer, request, api.ErrorInvalidRequest(errors.New("'id' param must be set")))
54
	}
55

56
	maintenance, err := controller.GetMaintenanceTrigger(database, id)
57
	if err != nil {
58
		_ = render.Render(writer, request, err)
59
		return
60
	}
61

62
	if err := render.Render(writer, request, maintenance); err != nil {
63
		_ = render.Render(writer, request, api.ErrorRender(err))
64
		return
65
	}
66
}
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.