zdravko/internal/activities/monitor.go

78 lines
1.7 KiB
Go
Raw Normal View History

package activities
import (
"bytes"
"context"
"encoding/json"
"fmt"
2024-02-21 13:09:22 +00:00
"log/slog"
"net/http"
2024-02-29 22:42:56 +00:00
"code.tjo.space/mentos1386/zdravko/database/models"
"code.tjo.space/mentos1386/zdravko/internal/script"
"code.tjo.space/mentos1386/zdravko/pkg/api"
"code.tjo.space/mentos1386/zdravko/pkg/k6"
)
type HealtcheckParam struct {
Script string
}
type MonitorResult struct {
Success bool
Note string
}
func (a *Activities) Monitor(ctx context.Context, param HealtcheckParam) (*MonitorResult, error) {
execution := k6.NewExecution(slog.Default(), script.UnescapeString(param.Script))
result, err := execution.Run(ctx)
if err != nil {
return nil, err
}
return &MonitorResult{Success: result.Success, Note: result.Note}, nil
2024-02-17 19:19:18 +00:00
}
type HealtcheckAddToHistoryParam struct {
2024-02-29 22:42:56 +00:00
MonitorId string
Status models.MonitorStatus
Note string
WorkerGroupId string
2024-02-17 19:19:18 +00:00
}
type MonitorAddToHistoryResult struct {
2024-02-17 19:19:18 +00:00
}
func (a *Activities) MonitorAddToHistory(ctx context.Context, param HealtcheckAddToHistoryParam) (*MonitorAddToHistoryResult, error) {
2024-02-29 22:42:56 +00:00
url := fmt.Sprintf("%s/api/v1/monitors/%s/history", a.config.ApiUrl, param.MonitorId)
body := api.ApiV1MonitorsHistoryPOSTBody{
2024-02-29 22:42:56 +00:00
Status: param.Status,
Note: param.Note,
WorkerGroupId: param.WorkerGroupId,
}
jsonBody, err := json.Marshal(body)
if err != nil {
return nil, err
}
req, err := api.NewRequest(http.MethodPost, url, a.config.Token, bytes.NewReader(jsonBody))
if err != nil {
return nil, err
}
response, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer response.Body.Close()
if response.StatusCode != http.StatusCreated {
return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode)
}
2024-02-17 19:19:18 +00:00
return &MonitorAddToHistoryResult{}, nil
}