feat(http): add labels to telegraf GET responses
parent
7562c9a6d2
commit
910d310c20
|
|
@ -76,34 +76,44 @@ func NewTelegrafHandler(
|
|||
return h
|
||||
}
|
||||
|
||||
type link struct {
|
||||
Self string `json:"self"`
|
||||
type telegrafLinks struct {
|
||||
Self string `json:"self"`
|
||||
Labels string `json:"labels"`
|
||||
}
|
||||
|
||||
type telegrafResponse struct {
|
||||
*platform.TelegrafConfig
|
||||
Links link `json:"links"`
|
||||
Labels []platform.Label `json:"labels"`
|
||||
Links telegrafLinks `json:"links"`
|
||||
}
|
||||
|
||||
type telegrafResponses struct {
|
||||
TelegrafConfigs []telegrafResponse `json:"configurations"`
|
||||
}
|
||||
|
||||
func newTelegrafResponse(tc *platform.TelegrafConfig) telegrafResponse {
|
||||
return telegrafResponse{
|
||||
func newTelegrafResponse(tc *platform.TelegrafConfig, labels []*platform.Label) telegrafResponse {
|
||||
res := telegrafResponse{
|
||||
TelegrafConfig: tc,
|
||||
Links: link{
|
||||
Self: fmt.Sprintf("/api/v2/telegrafs/%s", tc.ID.String()),
|
||||
Links: telegrafLinks{
|
||||
Self: fmt.Sprintf("/api/v2/telegrafs/%s", tc.ID),
|
||||
Labels: fmt.Sprintf("/api/v2/telegrafs/%s/labels", tc.ID),
|
||||
},
|
||||
}
|
||||
|
||||
for _, l := range labels {
|
||||
res.Labels = append(res.Labels, *l)
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func newTelegrafResponses(tcs []*platform.TelegrafConfig) telegrafResponses {
|
||||
func newTelegrafResponses(ctx context.Context, tcs []*platform.TelegrafConfig, labelService platform.LabelService) telegrafResponses {
|
||||
resp := telegrafResponses{
|
||||
TelegrafConfigs: make([]telegrafResponse, len(tcs)),
|
||||
}
|
||||
for i, c := range tcs {
|
||||
resp.TelegrafConfigs[i] = newTelegrafResponse(c)
|
||||
labels, _ := labelService.FindLabels(ctx, platform.LabelFilter{ResourceID: c.ID})
|
||||
resp.TelegrafConfigs[i] = newTelegrafResponse(c, labels)
|
||||
}
|
||||
return resp
|
||||
}
|
||||
|
|
@ -134,7 +144,7 @@ func (h *TelegrafHandler) handleGetTelegrafs(w http.ResponseWriter, r *http.Requ
|
|||
EncodeError(ctx, err, w)
|
||||
return
|
||||
}
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponses(tcs)); err != nil {
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponses(ctx, tcs, h.LabelService)); err != nil {
|
||||
logEncodingError(h.Logger, r, err)
|
||||
return
|
||||
}
|
||||
|
|
@ -163,7 +173,13 @@ func (h *TelegrafHandler) handleGetTelegraf(w http.ResponseWriter, r *http.Reque
|
|||
w.WriteHeader(http.StatusOK)
|
||||
w.Write([]byte(tc.TOML()))
|
||||
case "application/json":
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponse(tc)); err != nil {
|
||||
labels, err := h.LabelService.FindLabels(ctx, platform.LabelFilter{ResourceID: tc.ID})
|
||||
if err != nil {
|
||||
EncodeError(ctx, err, w)
|
||||
return
|
||||
}
|
||||
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponse(tc, labels)); err != nil {
|
||||
logEncodingError(h.Logger, r, err)
|
||||
return
|
||||
}
|
||||
|
|
@ -241,7 +257,7 @@ func (h *TelegrafHandler) handlePostTelegraf(w http.ResponseWriter, r *http.Requ
|
|||
return
|
||||
}
|
||||
|
||||
if err := encodeResponse(ctx, w, http.StatusCreated, newTelegrafResponse(tc)); err != nil {
|
||||
if err := encodeResponse(ctx, w, http.StatusCreated, newTelegrafResponse(tc, []*platform.Label{})); err != nil {
|
||||
logEncodingError(h.Logger, r, err)
|
||||
return
|
||||
}
|
||||
|
|
@ -268,7 +284,13 @@ func (h *TelegrafHandler) handlePutTelegraf(w http.ResponseWriter, r *http.Reque
|
|||
return
|
||||
}
|
||||
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponse(tc)); err != nil {
|
||||
labels, err := h.LabelService.FindLabels(ctx, platform.LabelFilter{ResourceID: tc.ID})
|
||||
if err != nil {
|
||||
EncodeError(ctx, err, w)
|
||||
return
|
||||
}
|
||||
|
||||
if err := encodeResponse(ctx, w, http.StatusOK, newTelegrafResponse(tc, labels)); err != nil {
|
||||
logEncodingError(h.Logger, r, err)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -724,7 +724,8 @@ func Test_newTelegrafResponses(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
res := newTelegrafResponses(tt.args.tcs)
|
||||
ctx := context.Background()
|
||||
res := newTelegrafResponses(ctx, tt.args.tcs, mock.NewLabelService())
|
||||
got, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
t.Fatalf("newTelegrafResponses() JSON marshal %v", err)
|
||||
|
|
@ -802,7 +803,7 @@ func Test_newTelegrafResponse(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
res := newTelegrafResponse(tt.args.tc)
|
||||
res := newTelegrafResponse(tt.args.tc, []*platform.Label{})
|
||||
got, err := json.Marshal(res)
|
||||
if err != nil {
|
||||
t.Fatalf("newTelegrafResponse() JSON marshal %v", err)
|
||||
|
|
|
|||
Loading…
Reference in New Issue