From a1aa8b623cbca2c51c0441848e47aa32552facf2 Mon Sep 17 00:00:00 2001 From: Vladislav Sukhin Date: Tue, 2 Jul 2024 14:15:20 +0300 Subject: [PATCH] fix: user friendly oss error Signed-off-by: Vladislav Sukhin --- .../commands/testworkflows/run.go | 13 +++++++++ .../constants/constants.go | 27 +++++++++++-------- .../testworkflowprocessor/operations.go | 6 ++--- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/cmd/kubectl-testkube/commands/testworkflows/run.go b/cmd/kubectl-testkube/commands/testworkflows/run.go index f112b9517e5..581f7b05c9b 100644 --- a/cmd/kubectl-testkube/commands/testworkflows/run.go +++ b/cmd/kubectl-testkube/commands/testworkflows/run.go @@ -15,6 +15,7 @@ import ( "github.com/kubeshop/testkube/cmd/testworkflow-init/data" apiclientv1 "github.com/kubeshop/testkube/pkg/api/v1/client" "github.com/kubeshop/testkube/pkg/api/v1/testkube" + "github.com/kubeshop/testkube/pkg/testworkflows/testworkflowprocessor/constants" "github.com/kubeshop/testkube/pkg/ui" ) @@ -69,6 +70,18 @@ func NewRunTestWorkflowCmd() *cobra.Command { Config: config, DisableWebhooks: disableWebhooks, }) + if err != nil { + errs := []error{constants.ErrOpenSourceExecuteOperationIsNotAvailable, + constants.ErrOpenSourceParallelOperationIsNotAvailable, + constants.ErrOpenSourceServicesOperationIsNotAvailable} + for _, e := range errs { + if strings.Contains(err.Error(), e.Error()) { + err = e + break + } + } + } + ui.ExitOnError("execute test workflow "+name+" from namespace "+namespace, err) err = renderer.PrintTestWorkflowExecution(cmd, os.Stdout, execution) ui.ExitOnError("render test workflow execution", err) diff --git a/pkg/testworkflows/testworkflowprocessor/constants/constants.go b/pkg/testworkflows/testworkflowprocessor/constants/constants.go index 39c78de40a0..70e6a3b3da8 100644 --- a/pkg/testworkflows/testworkflowprocessor/constants/constants.go +++ b/pkg/testworkflows/testworkflowprocessor/constants/constants.go @@ -1,6 +1,7 @@ package constants import ( + "errors" "fmt" "os" "path/filepath" @@ -14,15 +15,16 @@ import ( ) const ( - DefaultInternalPath = "/.tktw" - DefaultDataPath = "/data" - DefaultTerminationLogPath = "/dev/termination-log" - DefaultFsGroup = int64(1001) - ResourceIdLabelName = "testworkflowid" - RootResourceIdLabelName = "testworkflowid-root" - GroupIdLabelName = "testworkflowid-group" - SignatureAnnotationName = "testworkflows.testkube.io/signature" - RFC3339Millis = "2006-01-02T15:04:05.000Z07:00" + DefaultInternalPath = "/.tktw" + DefaultDataPath = "/data" + DefaultTerminationLogPath = "/dev/termination-log" + DefaultFsGroup = int64(1001) + ResourceIdLabelName = "testworkflowid" + RootResourceIdLabelName = "testworkflowid-root" + GroupIdLabelName = "testworkflowid-group" + SignatureAnnotationName = "testworkflows.testkube.io/signature" + RFC3339Millis = "2006-01-02T15:04:05.000Z07:00" + OpenSourceOperationErrorMessage = "operation is not available when running the Testkube Agent in the standalone mode" ) var ( @@ -66,8 +68,11 @@ echo -n ',0' > && echo 'Done.' && exit 0 {Name: "CI", Value: "1"}, }, } - DefaultInitImage = getInitImage() - DefaultToolkitImage = getToolkitImage() + DefaultInitImage = getInitImage() + DefaultToolkitImage = getToolkitImage() + ErrOpenSourceExecuteOperationIsNotAvailable = errors.New(`"execute" ` + OpenSourceOperationErrorMessage) + ErrOpenSourceParallelOperationIsNotAvailable = errors.New(`"parallel" ` + OpenSourceOperationErrorMessage) + ErrOpenSourceServicesOperationIsNotAvailable = errors.New(`"services" ` + OpenSourceOperationErrorMessage) ) func stripCommonImagePrefix(image, common string) string { diff --git a/pkg/testworkflows/testworkflowprocessor/operations.go b/pkg/testworkflows/testworkflowprocessor/operations.go index 4fed6e143cc..b25927e3cff 100644 --- a/pkg/testworkflows/testworkflowprocessor/operations.go +++ b/pkg/testworkflows/testworkflowprocessor/operations.go @@ -303,21 +303,21 @@ func ProcessArtifacts(_ InternalProcessor, layer Intermediate, container Contain func StubExecute(_ InternalProcessor, _ Intermediate, _ Container, step testworkflowsv1.Step) (Stage, error) { if step.Execute != nil { - return nil, errors.New(`"execute" operation is not available when running the Testkube Agent in the standalone mode`) + return nil, constants.ErrOpenSourceExecuteOperationIsNotAvailable } return nil, nil } func StubParallel(_ InternalProcessor, _ Intermediate, _ Container, step testworkflowsv1.Step) (Stage, error) { if step.Parallel != nil { - return nil, errors.New(`"parallel" operation is not available when running the Testkube Agent in the standalone mode`) + return nil, constants.ErrOpenSourceParallelOperationIsNotAvailable } return nil, nil } func StubServices(_ InternalProcessor, _ Intermediate, _ Container, step testworkflowsv1.Step) (Stage, error) { if len(step.Services) != 0 { - return nil, errors.New(`"services" are not available when running the Testkube Agent in the standalone mode`) + return nil, constants.ErrOpenSourceServicesOperationIsNotAvailable } return nil, nil }