From 7d21dd2862d474e1aafca765f3742444debe176c Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 12 Dec 2023 18:10:35 +0530 Subject: [PATCH 01/22] letting build abort even after starting stage of ci_workflow --- pkg/pipeline/CiHandler.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 19fdde0b2e..9525d9e835 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -163,6 +163,7 @@ const Running = "Running" const Starting = "Starting" const POD_DELETED_MESSAGE = "pod deleted" const TERMINATE_MESSAGE = "workflow shutdown with strategy: Terminate" +const ABORT_MESSAGE_AFTER_STARTING_STAGE = "workflow shutdown with strategy: Abort" func (impl *CiHandlerImpl) CheckAndReTriggerCI(workflowStatus v1alpha1.WorkflowStatus) error { @@ -587,8 +588,7 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int) (int, error) { return 0, err } if !(string(v1alpha1.NodePending) == workflow.Status || string(v1alpha1.NodeRunning) == workflow.Status) { - impl.Logger.Warn("cannot cancel build, build not in progress") - return 0, errors.New("cannot cancel build, build not in progress") + return impl.cancelBuildAfterStartWorkflowStage(workflow) } isExt := workflow.Namespace != DefaultCiWorkflowNamespace var env *repository3.Environment @@ -634,6 +634,18 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int) (int, error) { return workflow.Id, nil } +func (impl *CiHandlerImpl) cancelBuildAfterStartWorkflowStage(workflow *pipelineConfig.CiWorkflow) (int, error) { + workflow.Status = executors.WorkflowCancel + workflow.PodStatus = string(bean.Failed) + workflow.Message = ABORT_MESSAGE_AFTER_STARTING_STAGE + err := impl.ciWorkflowRepository.UpdateWorkFlow(workflow) + if err != nil { + impl.Logger.Errorw("error in updating workflow status", "err", err) + return 0, err + } + return workflow.Id, nil +} + func (impl *CiHandlerImpl) getRestConfig(workflow *pipelineConfig.CiWorkflow) (*rest.Config, error) { env, err := impl.envRepository.FindById(workflow.EnvironmentId) if err != nil { From 416d458e72e2d6051cf92c83d6bff80b88126405 Mon Sep 17 00:00:00 2001 From: adi6859 Date: Thu, 14 Dec 2023 16:36:10 +0530 Subject: [PATCH 02/22] error 500 removed --- go.mod | 2 +- go.sum | 4 ++-- .../github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go | 1 + vendor/modules.txt | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 4e858f9a37..ce5a9de38b 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/devtron-labs/authenticator v0.4.32 - github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 + github.com/devtron-labs/common-lib v0.0.7-beta9 github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 github.com/evanphx/json-patch v5.6.0+incompatible github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 diff --git a/go.sum b/go.sum index ef1866677b..19f8e2412e 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devtron-labs/authenticator v0.4.32 h1:JAIJ0WqTXWj2nW7b8so9wunNICQn7O1Qpkk8INpatcs= github.com/devtron-labs/authenticator v0.4.32/go.mod h1:ozNfT8WcruiSgnUbyp48WVfc41++W6xYXhKFp67lNTU= -github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 h1:zIYeYpnj2vB6P17xtpbgEsagmgJpSN4kzJMd8UJ/WR0= -github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9/go.mod h1:x6OdUIo2z9kxXtBfz7fJEfD4s8kiAtEmlApozOf7ECM= +github.com/devtron-labs/common-lib v0.0.7-beta9 h1:8gMsYZQFUGBRonSnR28ISqdwTNd8Dp93nB0NgvhTkM0= +github.com/devtron-labs/common-lib v0.0.7-beta9/go.mod h1:x6OdUIo2z9kxXtBfz7fJEfD4s8kiAtEmlApozOf7ECM= github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 h1:/IEIsJTxDZ3hv8uOoCaqdWCXqcv7nCAgX9AP/v84dUY= github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2/go.mod h1:l85jxWHlcSo910hdUfRycL40yGzC6glE93V1sVxVPto= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go index b074fd8781..2b36db80ed 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go @@ -1408,6 +1408,7 @@ func (impl *K8sUtil) UpdateResource(ctx context.Context, restConfig *rest.Config resp, err = resourceIf.Update(ctx, &unstructured.Unstructured{Object: updateObj}, metav1.UpdateOptions{}) } if err != nil { + err = &utils.ApiError{HttpStatusCode: 422, UserMessage: err.Error()} impl.logger.Errorw("error in updating resource", "err", err, "namespace", namespace) return nil, err } diff --git a/vendor/modules.txt b/vendor/modules.txt index e55fffa2c0..e7ea8df38c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -349,7 +349,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 +# github.com/devtron-labs/common-lib v0.0.7-beta9 ## explicit; go 1.20 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/pubsub-lib From 1727ca456cf2600317ba1d3974cf86f8b4ece072 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Thu, 14 Dec 2023 16:53:10 +0530 Subject: [PATCH 03/22] forceAbort query param in cancle stage --- api/restHandler/app/BuildPipelineRestHandler.go | 9 ++++++++- pkg/pipeline/CiHandler.go | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/api/restHandler/app/BuildPipelineRestHandler.go b/api/restHandler/app/BuildPipelineRestHandler.go index 63b0ba1b90..a5a04f6254 100644 --- a/api/restHandler/app/BuildPipelineRestHandler.go +++ b/api/restHandler/app/BuildPipelineRestHandler.go @@ -1377,6 +1377,7 @@ func (handler PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrite common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized) return } + queryVars := r.URL.Query() vars := mux.Vars(r) workflowId, err := strconv.Atoi(vars["workflowId"]) if err != nil { @@ -1390,6 +1391,12 @@ func (handler PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrite common.WriteJsonResp(w, err, nil, http.StatusBadRequest) return } + forceAbort, err := strconv.ParseBool(queryVars.Get("forceAbort")) + if err != nil { + handler.Logger.Errorw("request err, CancelWorkflow", "err", err) + common.WriteJsonResp(w, err, nil, http.StatusBadRequest) + return + } handler.Logger.Infow("request payload, CancelWorkflow", "workflowId", workflowId, "pipelineId", pipelineId) ciPipeline, err := handler.ciPipelineRepository.FindById(pipelineId) @@ -1429,7 +1436,7 @@ func (handler PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrite //RBAC - resp, err := handler.ciHandler.CancelBuild(workflowId) + resp, err := handler.ciHandler.CancelBuild(workflowId, forceAbort) if err != nil { handler.Logger.Errorw("service err, CancelWorkflow", "err", err, "workflowId", workflowId, "pipelineId", pipelineId) if util.IsErrNoRows(err) { diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 9525d9e835..506744bcbc 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -69,7 +69,7 @@ type CiHandler interface { FetchWorkflowDetails(appId int, pipelineId int, buildId int) (types.WorkflowResponse, error) FetchArtifactsForCiJob(buildId int) (*types.ArtifactsForCiJob, error) //FetchBuildById(appId int, pipelineId int) (WorkflowResponse, error) - CancelBuild(workflowId int) (int, error) + CancelBuild(workflowId int, forceAbort bool) (int, error) GetRunningWorkflowLogs(pipelineId int, workflowId int) (*bufio.Reader, func() error, error) GetHistoricBuildLogs(pipelineId int, workflowId int, ciWorkflow *pipelineConfig.CiWorkflow) (map[string]string, error) @@ -163,7 +163,7 @@ const Running = "Running" const Starting = "Starting" const POD_DELETED_MESSAGE = "pod deleted" const TERMINATE_MESSAGE = "workflow shutdown with strategy: Terminate" -const ABORT_MESSAGE_AFTER_STARTING_STAGE = "workflow shutdown with strategy: Abort" +const ABORT_MESSAGE_AFTER_STARTING_STAGE = "workflow shutdown with strategy: Force Abort" func (impl *CiHandlerImpl) CheckAndReTriggerCI(workflowStatus v1alpha1.WorkflowStatus) error { @@ -581,13 +581,13 @@ func (impl *CiHandlerImpl) GetBuildHistory(pipelineId int, appId int, offset int return ciWorkLowResponses, nil } -func (impl *CiHandlerImpl) CancelBuild(workflowId int) (int, error) { +func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, error) { workflow, err := impl.ciWorkflowRepository.FindById(workflowId) if err != nil { impl.Logger.Errorw("err", "err", err) return 0, err } - if !(string(v1alpha1.NodePending) == workflow.Status || string(v1alpha1.NodeRunning) == workflow.Status) { + if !(string(v1alpha1.NodePending) == workflow.Status || string(v1alpha1.NodeRunning) == workflow.Status) && forceAbort { return impl.cancelBuildAfterStartWorkflowStage(workflow) } isExt := workflow.Namespace != DefaultCiWorkflowNamespace From b3855e265964e107b4926a60b6b559078b972b24 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Thu, 14 Dec 2023 17:13:11 +0530 Subject: [PATCH 04/22] minor fix --- pkg/pipeline/CiHandler.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 506744bcbc..30abeddc0f 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -587,8 +587,12 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, er impl.Logger.Errorw("err", "err", err) return 0, err } - if !(string(v1alpha1.NodePending) == workflow.Status || string(v1alpha1.NodeRunning) == workflow.Status) && forceAbort { - return impl.cancelBuildAfterStartWorkflowStage(workflow) + if !(string(v1alpha1.NodePending) == workflow.Status || string(v1alpha1.NodeRunning) == workflow.Status) { + if forceAbort { + return impl.cancelBuildAfterStartWorkflowStage(workflow) + } else { + return 0, &util.ApiError{Code: "200", HttpStatusCode: 200, UserMessage: "cannot cancel build, build not in progress"} + } } isExt := workflow.Namespace != DefaultCiWorkflowNamespace var env *repository3.Environment From 1b637289065a0fe40d275c1dab58b4cac1571675 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Thu, 14 Dec 2023 18:19:14 +0530 Subject: [PATCH 05/22] minor fix --- pkg/pipeline/CiHandler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 30abeddc0f..f9573c4adc 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -591,7 +591,7 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, er if forceAbort { return impl.cancelBuildAfterStartWorkflowStage(workflow) } else { - return 0, &util.ApiError{Code: "200", HttpStatusCode: 200, UserMessage: "cannot cancel build, build not in progress"} + return 0, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: "cannot cancel build, build not in progress"} } } isExt := workflow.Namespace != DefaultCiWorkflowNamespace From e7d91ed8df4bb2e3e9776cf093dde7566d17135a Mon Sep 17 00:00:00 2001 From: adi6859 Date: Thu, 14 Dec 2023 18:34:18 +0530 Subject: [PATCH 06/22] error 500 removed --- api/restHandler/common/apiError.go | 8 ++++---- go.mod | 2 +- go.sum | 4 ++-- pkg/k8s/K8sCommonService.go | 4 ++++ .../devtron-labs/common-lib/utils/k8s/K8sUtil.go | 1 - vendor/modules.txt | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/api/restHandler/common/apiError.go b/api/restHandler/common/apiError.go index 8d4c29689d..5fc729314e 100644 --- a/api/restHandler/common/apiError.go +++ b/api/restHandler/common/apiError.go @@ -22,7 +22,7 @@ import ( "fmt" "github.com/devtron-labs/devtron/internal/util" "github.com/hashicorp/go-multierror" - "github.com/juju/errors" + . "github.com/juju/errors" "gopkg.in/go-playground/validator.v9" errors2 "k8s.io/apimachinery/pkg/api/errors" "net/http" @@ -55,7 +55,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu status = http.StatusNotFound apiErr := &util.ApiError{} apiErr.Code = "000" // 000=unknown - apiErr.InternalMessage = errors.Details(err) + apiErr.InternalMessage = Details(err) if respBody != nil { apiErr.UserMessage = respBody } else { @@ -86,7 +86,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu } else { apiErr := &util.ApiError{} apiErr.Code = "000" // 000=unknown - apiErr.InternalMessage = errors.Details(err) + apiErr.InternalMessage = Details(err) if respBody != nil { apiErr.UserMessage = respBody } else { @@ -105,7 +105,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu response := Response{} apiErr := &util.ApiError{} apiErr.Code = "0000" // 000=unknown - apiErr.InternalMessage = errors.Details(err) + apiErr.InternalMessage = Details(err) apiErr.UserMessage = "response marshaling error" response.Errors = []*util.ApiError{apiErr} b, err = json.Marshal(response) diff --git a/go.mod b/go.mod index ce5a9de38b..4e858f9a37 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/devtron-labs/authenticator v0.4.32 - github.com/devtron-labs/common-lib v0.0.7-beta9 + github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 github.com/evanphx/json-patch v5.6.0+incompatible github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 diff --git a/go.sum b/go.sum index 19f8e2412e..ef1866677b 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devtron-labs/authenticator v0.4.32 h1:JAIJ0WqTXWj2nW7b8so9wunNICQn7O1Qpkk8INpatcs= github.com/devtron-labs/authenticator v0.4.32/go.mod h1:ozNfT8WcruiSgnUbyp48WVfc41++W6xYXhKFp67lNTU= -github.com/devtron-labs/common-lib v0.0.7-beta9 h1:8gMsYZQFUGBRonSnR28ISqdwTNd8Dp93nB0NgvhTkM0= -github.com/devtron-labs/common-lib v0.0.7-beta9/go.mod h1:x6OdUIo2z9kxXtBfz7fJEfD4s8kiAtEmlApozOf7ECM= +github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 h1:zIYeYpnj2vB6P17xtpbgEsagmgJpSN4kzJMd8UJ/WR0= +github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9/go.mod h1:x6OdUIo2z9kxXtBfz7fJEfD4s8kiAtEmlApozOf7ECM= github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2 h1:/IEIsJTxDZ3hv8uOoCaqdWCXqcv7nCAgX9AP/v84dUY= github.com/devtron-labs/protos v0.0.0-20230503113602-282404f70fd2/go.mod h1:l85jxWHlcSo910hdUfRycL40yGzC6glE93V1sVxVPto= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= diff --git a/pkg/k8s/K8sCommonService.go b/pkg/k8s/K8sCommonService.go index 26cc1cdc92..80adae329b 100644 --- a/pkg/k8s/K8sCommonService.go +++ b/pkg/k8s/K8sCommonService.go @@ -8,11 +8,13 @@ import ( k8sCommonBean "github.com/devtron-labs/common-lib/utils/k8s/commonBean" "github.com/devtron-labs/devtron/api/bean" "github.com/devtron-labs/devtron/api/helm-app" + util2 "github.com/devtron-labs/devtron/internal/util" "github.com/devtron-labs/devtron/pkg/cluster" bean3 "github.com/devtron-labs/devtron/pkg/k8s/application/bean" "github.com/devtron-labs/devtron/util" "go.opentelemetry.io/otel" "go.uber.org/zap" + "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/version" @@ -91,6 +93,8 @@ func (impl *K8sCommonServiceImpl) UpdateResource(ctx context.Context, request *R resourceIdentifier := request.K8sRequest.ResourceIdentifier resp, err := impl.K8sUtil.UpdateResource(ctx, restConfig, resourceIdentifier.GroupVersionKind, resourceIdentifier.Namespace, request.K8sRequest.Patch) if err != nil { + statusError, _ := err.(*errors.StatusError) + err = &util2.ApiError{Code: "400", HttpStatusCode: int(statusError.ErrStatus.Code), UserMessage: statusError.Error()} impl.logger.Errorw("error in updating resource", "err", err, "clusterId", clusterId) return nil, err } diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go index 2b36db80ed..b074fd8781 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go @@ -1408,7 +1408,6 @@ func (impl *K8sUtil) UpdateResource(ctx context.Context, restConfig *rest.Config resp, err = resourceIf.Update(ctx, &unstructured.Unstructured{Object: updateObj}, metav1.UpdateOptions{}) } if err != nil { - err = &utils.ApiError{HttpStatusCode: 422, UserMessage: err.Error()} impl.logger.Errorw("error in updating resource", "err", err, "namespace", namespace) return nil, err } diff --git a/vendor/modules.txt b/vendor/modules.txt index e7ea8df38c..e55fffa2c0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -349,7 +349,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.0.7-beta9 +# github.com/devtron-labs/common-lib v0.0.8-0.20231204083642-08f7f57000d9 ## explicit; go 1.20 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/pubsub-lib From de2b7a12400c57eaf08b07e90f168431b05a3651 Mon Sep 17 00:00:00 2001 From: adi6859 Date: Thu, 14 Dec 2023 18:59:21 +0530 Subject: [PATCH 07/22] some random change --- api/restHandler/common/apiError.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/restHandler/common/apiError.go b/api/restHandler/common/apiError.go index 5fc729314e..8d4c29689d 100644 --- a/api/restHandler/common/apiError.go +++ b/api/restHandler/common/apiError.go @@ -22,7 +22,7 @@ import ( "fmt" "github.com/devtron-labs/devtron/internal/util" "github.com/hashicorp/go-multierror" - . "github.com/juju/errors" + "github.com/juju/errors" "gopkg.in/go-playground/validator.v9" errors2 "k8s.io/apimachinery/pkg/api/errors" "net/http" @@ -55,7 +55,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu status = http.StatusNotFound apiErr := &util.ApiError{} apiErr.Code = "000" // 000=unknown - apiErr.InternalMessage = Details(err) + apiErr.InternalMessage = errors.Details(err) if respBody != nil { apiErr.UserMessage = respBody } else { @@ -86,7 +86,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu } else { apiErr := &util.ApiError{} apiErr.Code = "000" // 000=unknown - apiErr.InternalMessage = Details(err) + apiErr.InternalMessage = errors.Details(err) if respBody != nil { apiErr.UserMessage = respBody } else { @@ -105,7 +105,7 @@ func WriteJsonResp(w http.ResponseWriter, err error, respBody interface{}, statu response := Response{} apiErr := &util.ApiError{} apiErr.Code = "0000" // 000=unknown - apiErr.InternalMessage = Details(err) + apiErr.InternalMessage = errors.Details(err) apiErr.UserMessage = "response marshaling error" response.Errors = []*util.ApiError{apiErr} b, err = json.Marshal(response) From 74a054dd58dfa198bebbf1f994799fbce56aed9a Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Fri, 15 Dec 2023 12:52:40 +0530 Subject: [PATCH 08/22] fix --- api/restHandler/app/BuildPipelineRestHandler.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/restHandler/app/BuildPipelineRestHandler.go b/api/restHandler/app/BuildPipelineRestHandler.go index a505060e46..9099bfd3f4 100644 --- a/api/restHandler/app/BuildPipelineRestHandler.go +++ b/api/restHandler/app/BuildPipelineRestHandler.go @@ -1391,7 +1391,8 @@ func (handler PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrite common.WriteJsonResp(w, err, nil, http.StatusBadRequest) return } - forceAbort, err := strconv.ParseBool(queryVars.Get("forceAbort")) + var forceAbort bool + forceAbort, err = strconv.ParseBool(queryVars.Get("forceAbort")) if err != nil { handler.Logger.Errorw("request err, CancelWorkflow", "err", err) common.WriteJsonResp(w, err, nil, http.StatusBadRequest) From f60981a719bf23d3f5b3b668365f6fd5924862e5 Mon Sep 17 00:00:00 2001 From: adi6859 Date: Fri, 15 Dec 2023 15:38:52 +0530 Subject: [PATCH 09/22] some error messaging changed --- pkg/k8s/K8sCommonService.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/k8s/K8sCommonService.go b/pkg/k8s/K8sCommonService.go index 80adae329b..9968de8664 100644 --- a/pkg/k8s/K8sCommonService.go +++ b/pkg/k8s/K8sCommonService.go @@ -93,9 +93,15 @@ func (impl *K8sCommonServiceImpl) UpdateResource(ctx context.Context, request *R resourceIdentifier := request.K8sRequest.ResourceIdentifier resp, err := impl.K8sUtil.UpdateResource(ctx, restConfig, resourceIdentifier.GroupVersionKind, resourceIdentifier.Namespace, request.K8sRequest.Patch) if err != nil { - statusError, _ := err.(*errors.StatusError) - err = &util2.ApiError{Code: "400", HttpStatusCode: int(statusError.ErrStatus.Code), UserMessage: statusError.Error()} impl.logger.Errorw("error in updating resource", "err", err, "clusterId", clusterId) + statusError, ok := err.(*errors.StatusError) + if ok { + if statusError.ErrStatus.Code == 409 { + err = &util2.ApiError{Code: "409", HttpStatusCode: 200, UserMessage: statusError.Error()} + } else { + err = &util2.ApiError{Code: "400", HttpStatusCode: int(statusError.ErrStatus.Code), UserMessage: statusError.Error()} + } + } return nil, err } return resp, nil From e657a930b3d0c4764193b22b135a70a18ce5de9d Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Mon, 18 Dec 2023 11:34:35 +0530 Subject: [PATCH 10/22] if workflow already cancelled then return from ci success event --- pkg/pipeline/WebhookService.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/pipeline/WebhookService.go b/pkg/pipeline/WebhookService.go index 6168d00e96..23cee294d2 100644 --- a/pkg/pipeline/WebhookService.go +++ b/pkg/pipeline/WebhookService.go @@ -30,6 +30,7 @@ import ( util2 "github.com/devtron-labs/devtron/internal/util" "github.com/devtron-labs/devtron/pkg/app" "github.com/devtron-labs/devtron/pkg/pipeline/bean" + "github.com/devtron-labs/devtron/pkg/pipeline/executors" repository2 "github.com/devtron-labs/devtron/pkg/pipeline/repository" types2 "github.com/devtron-labs/devtron/pkg/pipeline/types" repository3 "github.com/devtron-labs/devtron/pkg/plugin/repository" @@ -177,6 +178,10 @@ func (impl WebhookServiceImpl) HandleCiSuccessEvent(ciPipelineId int, request *C impl.logger.Errorw("cannot get saved wf", "err", err) return 0, err } + // if workflow already cancelled then return, this state arises when user force aborts a ci + if savedWorkflow.Status == executors.WorkflowCancel { + return 0, err + } savedWorkflow.Status = string(v1alpha1.NodeSucceeded) impl.logger.Debugw("updating workflow ", "savedWorkflow", savedWorkflow) err = impl.ciWorkflowRepository.UpdateWorkFlow(savedWorkflow) From 84b8c7db5d1a4a32aeee9b2e5e5e9af90b98f7bd Mon Sep 17 00:00:00 2001 From: adi6859 Date: Mon, 18 Dec 2023 20:33:49 +0530 Subject: [PATCH 11/22] helm uninstall issue fixed --- api/helm-app/HelmAppService.go | 9 +++++++++ internal/util/ErrorUtil.go | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/api/helm-app/HelmAppService.go b/api/helm-app/HelmAppService.go index b8b1348577..8485431c26 100644 --- a/api/helm-app/HelmAppService.go +++ b/api/helm-app/HelmAppService.go @@ -8,6 +8,7 @@ import ( "github.com/devtron-labs/devtron/api/helm-app/models" repository2 "github.com/devtron-labs/devtron/internal/sql/repository/dockerRegistry" "github.com/go-pg/pg" + "google.golang.org/grpc/codes" "net/http" "reflect" "strconv" @@ -520,6 +521,14 @@ func (impl *HelmAppServiceImpl) DeleteApplication(ctx context.Context, app *AppI deleteApplicationResponse, err := impl.helmAppClient.DeleteApplication(ctx, req) if err != nil { + code, message := util.GetGRPCDetailedError(err) + if code == codes.NotFound { + return nil, &util.ApiError{ + Code: "404", + HttpStatusCode: 200, + UserMessage: message, + } + } impl.logger.Errorw("error in deleting helm application", "err", err) return nil, errors.New(util.GetGRPCErrorDetailedMessage(err)) } diff --git a/internal/util/ErrorUtil.go b/internal/util/ErrorUtil.go index 4ca26b6df6..52df683fc6 100644 --- a/internal/util/ErrorUtil.go +++ b/internal/util/ErrorUtil.go @@ -20,6 +20,7 @@ package util import ( "fmt" "github.com/go-pg/pg" + "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -55,3 +56,10 @@ func GetGRPCErrorDetailedMessage(err error) string { } return err.Error() } + +func GetGRPCDetailedError(err error) (codes.Code, string) { + if errStatus, ok := status.FromError(err); ok { + return errStatus.Code(), errStatus.Message() + } + return codes.Unknown, err.Error() +} From e8d50730fc0946550d10e8a64b99c04718a74661 Mon Sep 17 00:00:00 2001 From: ShashwatDadhich Date: Tue, 19 Dec 2023 11:33:31 +0530 Subject: [PATCH 12/22] status code changes --- api/restHandler/AppWorkflowRestHandler.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/restHandler/AppWorkflowRestHandler.go b/api/restHandler/AppWorkflowRestHandler.go index e243cfba78..ef7e33a262 100644 --- a/api/restHandler/AppWorkflowRestHandler.go +++ b/api/restHandler/AppWorkflowRestHandler.go @@ -163,6 +163,8 @@ func (handler AppWorkflowRestHandlerImpl) DeleteAppWorkflow(w http.ResponseWrite if err != nil { if _, ok := err.(*util.ApiError); ok { handler.Logger.Warnw("error on deleting", "err", err) + common.WriteJsonResp(w, err, []byte("Creation Failed"), http.StatusOK) + return } else { handler.Logger.Errorw("error on deleting", "err", err) } From 8abc912ce12511f5d0e995e5e164250bcdcd14de Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 19 Dec 2023 11:40:09 +0530 Subject: [PATCH 13/22] changed err code and msg in getWorkflowLogs in cihandler --- pkg/pipeline/CiHandler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index f9573c4adc..cb67b2bc3c 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -805,7 +805,7 @@ func (impl *CiHandlerImpl) getWorkflowLogs(pipelineId int, ciWorkflow *pipelineC return impl.getLogsFromRepository(pipelineId, ciWorkflow, clusterConfig, isExt) } impl.Logger.Errorw("err", "err", err) - return nil, nil, err + return nil, nil, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: err.Error()} } logReader := bufio.NewReader(logStream) return logReader, cleanUp, err From 16bc217b6be88b98a08c1b7663c1d20cbc57a1d0 Mon Sep 17 00:00:00 2001 From: adi6859 Date: Tue, 19 Dec 2023 12:03:43 +0530 Subject: [PATCH 14/22] k8s issue fixed for 409 --- pkg/k8s/K8sCommonService.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pkg/k8s/K8sCommonService.go b/pkg/k8s/K8sCommonService.go index 9968de8664..6ff2385e6a 100644 --- a/pkg/k8s/K8sCommonService.go +++ b/pkg/k8s/K8sCommonService.go @@ -96,11 +96,7 @@ func (impl *K8sCommonServiceImpl) UpdateResource(ctx context.Context, request *R impl.logger.Errorw("error in updating resource", "err", err, "clusterId", clusterId) statusError, ok := err.(*errors.StatusError) if ok { - if statusError.ErrStatus.Code == 409 { - err = &util2.ApiError{Code: "409", HttpStatusCode: 200, UserMessage: statusError.Error()} - } else { - err = &util2.ApiError{Code: "400", HttpStatusCode: int(statusError.ErrStatus.Code), UserMessage: statusError.Error()} - } + err = &util2.ApiError{Code: "400", HttpStatusCode: int(statusError.ErrStatus.Code), UserMessage: statusError.Error()} } return nil, err } From 481ad10c4e695a08c2362ef21db5581154e67522 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 19 Dec 2023 12:29:16 +0530 Subject: [PATCH 15/22] when workflow not found to terminate then throw bad req instead of 5xx --- pkg/pipeline/CiHandler.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index cb67b2bc3c..694c99da3b 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -606,9 +606,11 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, er // Terminate workflow err = impl.workflowService.TerminateWorkflow(workflow.ExecutorType, workflow.Name, workflow.Namespace, restConfig, isExt, env) - if err != nil { + if err != nil && !strings.Contains(err.Error(), "cannot find workflow") { impl.Logger.Errorw("cannot terminate wf", "err", err) return 0, err + } else { + return 0, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: err.Error()} } workflow.Status = executors.WorkflowCancel From 56bf5e732de5727fc5822ed5ba89837b8519dd9c Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 19 Dec 2023 12:43:07 +0530 Subject: [PATCH 16/22] fix --- pkg/pipeline/CiHandler.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 694c99da3b..2e399ec62e 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -594,6 +594,10 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, er return 0, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: "cannot cancel build, build not in progress"} } } + //this arises when someone deletes the workflow in resource browser and wants to force abort a ci + if workflow.Status == string(v1alpha1.NodeRunning) && forceAbort { + return impl.cancelBuildAfterStartWorkflowStage(workflow) + } isExt := workflow.Namespace != DefaultCiWorkflowNamespace var env *repository3.Environment var restConfig *rest.Config From 59601263c28eabd327d7018e8d4589afef39ef1c Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 26 Dec 2023 16:44:33 +0530 Subject: [PATCH 17/22] fix --- pkg/pipeline/CiHandler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index 2e399ec62e..afef509c49 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -805,7 +805,7 @@ func (impl *CiHandlerImpl) getWorkflowLogs(pipelineId int, ciWorkflow *pipelineC logStream, cleanUp, err := impl.ciLogService.FetchRunningWorkflowLogs(ciLogRequest, clusterConfig, isExt) if logStream == nil || err != nil { if !ciWorkflow.BlobStorageEnabled { - return nil, nil, errors.New("logs-not-stored-in-repository") + return nil, nil, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: "logs-not-stored-in-repository"} } else if string(v1alpha1.NodeSucceeded) == ciWorkflow.Status || string(v1alpha1.NodeError) == ciWorkflow.Status || string(v1alpha1.NodeFailed) == ciWorkflow.Status || ciWorkflow.Status == executors.WorkflowCancel { impl.Logger.Errorw("err", "err", err) return impl.getLogsFromRepository(pipelineId, ciWorkflow, clusterConfig, isExt) From e7c155c286b1e2d31215dac0cff88e5b3f4df08e Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 26 Dec 2023 18:01:55 +0530 Subject: [PATCH 18/22] incorporated grpc code check in cd-pipeline/trigger api in createHelmAppForCdPipeline func --- pkg/pipeline/WorkflowDagExecutor.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index 3efe378825..773f5f9cf0 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3542,8 +3542,16 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest updateApplicationResponse, err := impl.helmAppClient.UpdateApplication(ctx, req) if err != nil { impl.logger.Errorw("error in updating helm application for cd pipeline", "err", err) - if util.GetGRPCErrorDetailedMessage(err) == context.Canceled.Error() { + code, grpcErr := util.GetGRPCDetailedError(err) + if grpcErr == context.Canceled.Error() { err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) + } else if code == codes.Unknown { + err = &util.ApiError{ + HttpStatusCode: 400, + Code: "200", + InternalMessage: err.Error(), + UserMessage: err.Error(), + } } return false, err } else { From 68a6387e4f49eea8a71137e11a8c1190649fd5b8 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 26 Dec 2023 18:12:54 +0530 Subject: [PATCH 19/22] small fix --- pkg/pipeline/WorkflowDagExecutor.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index 773f5f9cf0..98e413822d 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3549,8 +3549,8 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest err = &util.ApiError{ HttpStatusCode: 400, Code: "200", - InternalMessage: err.Error(), - UserMessage: err.Error(), + InternalMessage: grpcErr, + UserMessage: grpcErr, } } return false, err From 403ba2974a2f271ed930f54a45f334966cdcf1f6 Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Tue, 26 Dec 2023 18:49:13 +0530 Subject: [PATCH 20/22] minor refactoring --- pkg/pipeline/WorkflowDagExecutor.go | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index 98e413822d..e05caf7b4e 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3542,17 +3542,7 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest updateApplicationResponse, err := impl.helmAppClient.UpdateApplication(ctx, req) if err != nil { impl.logger.Errorw("error in updating helm application for cd pipeline", "err", err) - code, grpcErr := util.GetGRPCDetailedError(err) - if grpcErr == context.Canceled.Error() { - err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) - } else if code == codes.Unknown { - err = &util.ApiError{ - HttpStatusCode: 400, - Code: "200", - InternalMessage: grpcErr, - UserMessage: grpcErr, - } - } + err = getGRPCErrorIfAny(err) return false, err } else { impl.logger.Debugw("updated helm application", "response", updateApplicationResponse, "isSuccess", updateApplicationResponse.Success) @@ -3567,10 +3557,8 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest impl.logger.Errorw("error in helm install custom chart", "err", err) return false, err } + err = getGRPCErrorIfAny(err) - if util.GetGRPCErrorDetailedMessage(err) == context.Canceled.Error() { - err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) - } // IMP: update cd pipeline to mark deployment app created, even if helm install fails // If the helm install fails, it still creates the app in failed state, so trying to // re-create the app results in error from helm that cannot re-use name which is still in use @@ -3603,6 +3591,20 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest return true, nil } +func getGRPCErrorIfAny(err error) error { + code, grpcErr := util.GetGRPCDetailedError(err) + if grpcErr == context.Canceled.Error() { + err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) + } else if code == codes.Unknown { + err = &util.ApiError{ + HttpStatusCode: 400, + Code: "200", + InternalMessage: grpcErr, + UserMessage: grpcErr, + } + } + return err +} func (impl *WorkflowDagExecutorImpl) GetDeploymentStrategyByTriggerType(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (*chartConfig.PipelineStrategy, error) { strategy := &chartConfig.PipelineStrategy{} From 5343258ca94c41f585b01d1fe6e646f141d9e01c Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Wed, 27 Dec 2023 13:36:05 +0530 Subject: [PATCH 21/22] revert cd-pipeline/trigger 5xx fix --- pkg/pipeline/WorkflowDagExecutor.go | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index e05caf7b4e..5e14eb045f 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3542,7 +3542,9 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest updateApplicationResponse, err := impl.helmAppClient.UpdateApplication(ctx, req) if err != nil { impl.logger.Errorw("error in updating helm application for cd pipeline", "err", err) - err = getGRPCErrorIfAny(err) + if util.GetGRPCErrorDetailedMessage(err) == context.Canceled.Error() { + err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) + } return false, err } else { impl.logger.Debugw("updated helm application", "response", updateApplicationResponse, "isSuccess", updateApplicationResponse.Success) @@ -3557,7 +3559,9 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest impl.logger.Errorw("error in helm install custom chart", "err", err) return false, err } - err = getGRPCErrorIfAny(err) + if util.GetGRPCErrorDetailedMessage(err) == context.Canceled.Error() { + err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) + } // IMP: update cd pipeline to mark deployment app created, even if helm install fails // If the helm install fails, it still creates the app in failed state, so trying to @@ -3591,20 +3595,6 @@ func (impl *WorkflowDagExecutorImpl) createHelmAppForCdPipeline(overrideRequest return true, nil } -func getGRPCErrorIfAny(err error) error { - code, grpcErr := util.GetGRPCDetailedError(err) - if grpcErr == context.Canceled.Error() { - err = errors.New(pipelineConfig.NEW_DEPLOYMENT_INITIATED) - } else if code == codes.Unknown { - err = &util.ApiError{ - HttpStatusCode: 400, - Code: "200", - InternalMessage: grpcErr, - UserMessage: grpcErr, - } - } - return err -} func (impl *WorkflowDagExecutorImpl) GetDeploymentStrategyByTriggerType(overrideRequest *bean.ValuesOverrideRequest, ctx context.Context) (*chartConfig.PipelineStrategy, error) { strategy := &chartConfig.PipelineStrategy{} From a5e2736aad1afc61eb0a55380f54c010f921b52b Mon Sep 17 00:00:00 2001 From: Prakash Kumar Date: Thu, 28 Dec 2023 09:50:50 +0530 Subject: [PATCH 22/22] bug fix --- pkg/pipeline/CiHandler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/pipeline/CiHandler.go b/pkg/pipeline/CiHandler.go index afef509c49..e2a2396cf6 100644 --- a/pkg/pipeline/CiHandler.go +++ b/pkg/pipeline/CiHandler.go @@ -613,7 +613,7 @@ func (impl *CiHandlerImpl) CancelBuild(workflowId int, forceAbort bool) (int, er if err != nil && !strings.Contains(err.Error(), "cannot find workflow") { impl.Logger.Errorw("cannot terminate wf", "err", err) return 0, err - } else { + } else if err != nil { return 0, &util.ApiError{Code: "200", HttpStatusCode: 400, UserMessage: err.Error()} }