mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-12 15:59:01 +08:00
QS: logs pipelines preview http handler (#3701)
* feat: add logsparsingpipeline controller api for pipeline previews * feat: add http handler and route for generating pipeline previews * feat: use a response model for pipeline previews response
This commit is contained in:
parent
dcea79cef3
commit
a84a70df14
@ -2320,6 +2320,7 @@ func (aH *APIHandler) RegisterLogsRoutes(router *mux.Router, am *AuthMiddleware)
|
||||
subRouter.HandleFunc("/aggregate", am.ViewAccess(aH.logAggregate)).Methods(http.MethodGet)
|
||||
|
||||
// log pipelines
|
||||
subRouter.HandleFunc("/pipelines/preview", am.ViewAccess(aH.PreviewLogsPipelinesHandler)).Methods(http.MethodPost)
|
||||
subRouter.HandleFunc("/pipelines/{version}", am.ViewAccess(aH.ListLogsPipelinesHandler)).Methods(http.MethodGet)
|
||||
subRouter.HandleFunc("/pipelines", am.EditAccess(aH.CreateLogsPipeline)).Methods(http.MethodPost)
|
||||
}
|
||||
@ -2455,6 +2456,26 @@ func parseAgentConfigVersion(r *http.Request) (int, *model.ApiError) {
|
||||
return int(version64), nil
|
||||
}
|
||||
|
||||
func (ah *APIHandler) PreviewLogsPipelinesHandler(w http.ResponseWriter, r *http.Request) {
|
||||
req := logparsingpipeline.PipelinesPreviewRequest{}
|
||||
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
RespondError(w, model.BadRequest(err), nil)
|
||||
return
|
||||
}
|
||||
|
||||
resultLogs, apiErr := ah.LogsParsingPipelineController.PreviewLogsPipelines(
|
||||
r.Context(), &req,
|
||||
)
|
||||
|
||||
if apiErr != nil {
|
||||
RespondError(w, apiErr, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ah.Respond(w, resultLogs)
|
||||
}
|
||||
|
||||
func (ah *APIHandler) ListLogsPipelinesHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
version, err := parseAgentConfigVersion(r)
|
||||
|
@ -140,3 +140,29 @@ func (ic *LogParsingPipelineController) GetPipelinesByVersion(
|
||||
Pipelines: pipelines,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type PipelinesPreviewRequest struct {
|
||||
Pipelines []Pipeline `json:"pipelines"`
|
||||
Logs []model.SignozLog `json:"logs"`
|
||||
}
|
||||
|
||||
type PipelinesPreviewResponse struct {
|
||||
OutputLogs []model.SignozLog `json:"logs"`
|
||||
}
|
||||
|
||||
func (ic *LogParsingPipelineController) PreviewLogsPipelines(
|
||||
ctx context.Context,
|
||||
request *PipelinesPreviewRequest,
|
||||
) (*PipelinesPreviewResponse, *model.ApiError) {
|
||||
result, err := SimulatePipelinesProcessing(
|
||||
ctx, request.Pipelines, request.Logs,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &PipelinesPreviewResponse{
|
||||
OutputLogs: result,
|
||||
}, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user