mirror of
https://github.com/harness/drone.git
synced 2025-05-20 10:59:56 +08:00
add find logs handler
This commit is contained in:
parent
6ae5145be4
commit
9ea22140aa
45
internal/api/controller/execution/find_logs.go
Normal file
45
internal/api/controller/execution/find_logs.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package execution
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
|
||||||
|
apiauth "github.com/harness/gitness/internal/api/auth"
|
||||||
|
"github.com/harness/gitness/internal/auth"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (c *Controller) FindLogs(
|
||||||
|
ctx context.Context,
|
||||||
|
session *auth.Session,
|
||||||
|
spaceRef string,
|
||||||
|
pipelineUID string,
|
||||||
|
executionNum int64,
|
||||||
|
stageNum int64,
|
||||||
|
stepNum int64,
|
||||||
|
) (io.ReadCloser, error) {
|
||||||
|
space, err := c.spaceStore.FindByRef(ctx, spaceRef)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find parent space: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline, err := c.pipelineStore.FindByUID(ctx, space.ID, pipelineUID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not find pipeline: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = apiauth.CheckPipeline(ctx, c.authorizer, session, space.Path, pipeline.UID, enum.PermissionPipelineView)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("could not authorize: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Figure out step ID by querying stages and steps tables
|
||||||
|
var id int64
|
||||||
|
|
||||||
|
return c.logStore.Find(ctx, id)
|
||||||
|
}
|
59
internal/api/handler/execution/find_logs.go
Normal file
59
internal/api/handler/execution/find_logs.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright 2022 Harness Inc. All rights reserved.
|
||||||
|
// Use of this source code is governed by the Polyform Free Trial License
|
||||||
|
// that can be found in the LICENSE.md file for this repository.
|
||||||
|
|
||||||
|
package execution
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/internal/api/controller/execution"
|
||||||
|
"github.com/harness/gitness/internal/api/render"
|
||||||
|
"github.com/harness/gitness/internal/api/request"
|
||||||
|
"github.com/harness/gitness/internal/paths"
|
||||||
|
)
|
||||||
|
|
||||||
|
func HandleFindLogs(executionCtrl *execution.Controller) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
session, _ := request.AuthSessionFrom(ctx)
|
||||||
|
pipelineRef, err := request.GetPipelineRefFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
executionNum, err := request.GetExecutionNumberFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
stageNum, err := request.GetStageNumberFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
stepNum, err := request.GetStepNumberFromPath(r)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
spaceRef, pipelineUID, err := paths.DisectLeaf(pipelineRef)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rc, err := executionCtrl.FindLogs(
|
||||||
|
ctx, session, spaceRef, pipelineUID,
|
||||||
|
executionNum, stageNum, stepNum)
|
||||||
|
if err != nil {
|
||||||
|
render.TranslatedUserError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
io.Copy(w, rc)
|
||||||
|
rc.Close()
|
||||||
|
}
|
||||||
|
}
|
@ -12,6 +12,8 @@ import (
|
|||||||
const (
|
const (
|
||||||
PathParamPipelineRef = "pipeline_ref"
|
PathParamPipelineRef = "pipeline_ref"
|
||||||
PathParamExecutionNumber = "execution_number"
|
PathParamExecutionNumber = "execution_number"
|
||||||
|
PathParamStageNumber = "stage_number"
|
||||||
|
PathParamStepNumber = "step_number"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetPipelineRefFromPath(r *http.Request) (string, error) {
|
func GetPipelineRefFromPath(r *http.Request) (string, error) {
|
||||||
@ -27,3 +29,11 @@ func GetPipelineRefFromPath(r *http.Request) (string, error) {
|
|||||||
func GetExecutionNumberFromPath(r *http.Request) (int64, error) {
|
func GetExecutionNumberFromPath(r *http.Request) (int64, error) {
|
||||||
return PathParamAsPositiveInt64(r, PathParamExecutionNumber)
|
return PathParamAsPositiveInt64(r, PathParamExecutionNumber)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetStageNumberFromPath(r *http.Request) (int64, error) {
|
||||||
|
return PathParamAsPositiveInt64(r, PathParamStageNumber)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetStepNumberFromPath(r *http.Request) (int64, error) {
|
||||||
|
return PathParamAsPositiveInt64(r, PathParamStepNumber)
|
||||||
|
}
|
||||||
|
@ -323,6 +323,11 @@ func setupExecutions(r chi.Router, pipelineCtrl *pipeline.Controller, executionC
|
|||||||
r.Get("/", handlerexecution.HandleFind(executionCtrl))
|
r.Get("/", handlerexecution.HandleFind(executionCtrl))
|
||||||
r.Patch("/", handlerexecution.HandleUpdate(executionCtrl))
|
r.Patch("/", handlerexecution.HandleUpdate(executionCtrl))
|
||||||
r.Delete("/", handlerexecution.HandleDelete(executionCtrl))
|
r.Delete("/", handlerexecution.HandleDelete(executionCtrl))
|
||||||
|
r.Get(
|
||||||
|
fmt.Sprintf("/logs/{%s}/{%s}",
|
||||||
|
request.PathParamStageNumber,
|
||||||
|
request.PathParamStepNumber,
|
||||||
|
), handlerexecution.HandleFindLogs(executionCtrl))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user