Skip to content

Commit fb1cbf5

Browse files
Merge pull request #6027 from devtron-labs/release-candidate-v0.21.0
release: Release candidate v0.21.0
2 parents 78709a3 + 6d7f925 commit fb1cbf5

File tree

203 files changed

+22638
-346
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

203 files changed

+22638
-346
lines changed

api/restHandler/DeploymentConfigurationRestHandler.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package restHandler
22

33
import (
4+
"context"
45
"fmt"
56
"github.com/devtron-labs/devtron/api/restHandler/common"
67
"github.com/devtron-labs/devtron/pkg/auth/authorisation/casbin"
78
"github.com/devtron-labs/devtron/pkg/auth/user"
89
"github.com/devtron-labs/devtron/pkg/configDiff"
910
"github.com/devtron-labs/devtron/pkg/configDiff/bean"
11+
util2 "github.com/devtron-labs/devtron/util"
1012
"github.com/devtron-labs/devtron/util/rbac"
1113
"github.com/gorilla/schema"
1214
"go.uber.org/zap"
1315
"gopkg.in/go-playground/validator.v9"
1416
"net/http"
17+
"time"
1518
)
1619

1720
type DeploymentConfigurationRestHandler interface {
@@ -88,6 +91,7 @@ func (handler *DeploymentConfigurationRestHandlerImpl) GetConfigData(w http.Resp
8891
return
8992
}
9093

94+
configDataQueryParams.UserId = userId
9195
//RBAC START
9296
token := r.Header.Get(common.TokenHeaderKey)
9397
object := handler.enforcerUtil.GetAppRBACName(configDataQueryParams.AppName)
@@ -97,8 +101,12 @@ func (handler *DeploymentConfigurationRestHandlerImpl) GetConfigData(w http.Resp
97101
return
98102
}
99103
//RBAC END
100-
101-
res, err := handler.deploymentConfigurationService.GetAllConfigData(r.Context(), configDataQueryParams)
104+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionGet, "*")
105+
userHasAdminAccess := handler.enforcer.Enforce(token, casbin.ResourceApplications, casbin.ActionUpdate, object)
106+
ctx, cancel := context.WithTimeout(r.Context(), 60*time.Second)
107+
defer cancel()
108+
ctx = util2.SetSuperAdminInContext(ctx, isSuperAdmin)
109+
res, err := handler.deploymentConfigurationService.GetAllConfigData(ctx, configDataQueryParams, userHasAdminAccess)
102110
if err != nil {
103111
handler.logger.Errorw("service err, GetAllConfigData ", "err", err)
104112
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)

api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,12 +1562,16 @@ func (handler *PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrit
15621562
return
15631563
}
15641564
var forceAbort bool
1565-
forceAbort, err = strconv.ParseBool(queryVars.Get("forceAbort"))
1566-
if err != nil {
1567-
handler.Logger.Errorw("request err, CancelWorkflow", "err", err)
1568-
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
1569-
return
1565+
forceAbortQueryParam := queryVars.Get("forceAbort")
1566+
if len(forceAbortQueryParam) > 0 {
1567+
forceAbort, err = strconv.ParseBool(forceAbortQueryParam)
1568+
if err != nil {
1569+
handler.Logger.Errorw("request err, CancelWorkflow", "err", err)
1570+
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
1571+
return
1572+
}
15701573
}
1574+
15711575
handler.Logger.Infow("request payload, CancelWorkflow", "workflowId", workflowId, "pipelineId", pipelineId)
15721576

15731577
ciPipeline, err := handler.ciPipelineRepository.FindById(pipelineId)

api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2071,6 +2071,16 @@ func (handler *PipelineConfigRestHandlerImpl) CancelStage(w http.ResponseWriter,
20712071
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
20722072
return
20732073
}
2074+
var forceAbort bool
2075+
forceAbortQueryParam := r.URL.Query().Get("forceAbort")
2076+
if len(forceAbortQueryParam) > 0 {
2077+
forceAbort, err = strconv.ParseBool(forceAbortQueryParam)
2078+
if err != nil {
2079+
handler.Logger.Errorw("request err, CancelWorkflow", "err", err)
2080+
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
2081+
return
2082+
}
2083+
}
20742084
handler.Logger.Infow("request payload, CancelStage", "pipelineId", pipelineId, "workflowRunnerId", workflowRunnerId)
20752085

20762086
//RBAC
@@ -2082,7 +2092,7 @@ func (handler *PipelineConfigRestHandlerImpl) CancelStage(w http.ResponseWriter,
20822092
}
20832093
//RBAC
20842094

2085-
resp, err := handler.cdHandler.CancelStage(workflowRunnerId, userId)
2095+
resp, err := handler.cdHandler.CancelStage(workflowRunnerId, forceAbort, userId)
20862096
if err != nil {
20872097
handler.Logger.Errorw("service err, CancelStage", "err", err, "pipelineId", pipelineId, "workflowRunnerId", workflowRunnerId)
20882098
if util.IsErrNoRows(err) {

api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,14 @@ func (handler PipelineTriggerRestHandlerImpl) OverrideConfig(w http.ResponseWrit
144144
triggerContext := bean3.TriggerContext{
145145
Context: ctx,
146146
}
147-
mergeResp, err := handler.cdTriggerService.ManualCdTrigger(triggerContext, &overrideRequest)
147+
mergeResp, helmPackageName, err := handler.cdTriggerService.ManualCdTrigger(triggerContext, &overrideRequest)
148148
span.End()
149149
if err != nil {
150150
handler.logger.Errorw("request err, OverrideConfig", "err", err, "payload", overrideRequest)
151151
common.WriteJsonResp(w, err, err.Error(), http.StatusInternalServerError)
152152
return
153153
}
154-
res := map[string]interface{}{"releaseId": mergeResp}
154+
res := map[string]interface{}{"releaseId": mergeResp, "helmPackageName": helmPackageName}
155155
common.WriteJsonResp(w, err, res, http.StatusOK)
156156
}
157157

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ require gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
288288

289289
replace (
290290
github.com/argoproj/argo-workflows/v3 v3.5.10 => github.com/devtron-labs/argo-workflows/v3 v3.5.10
291-
github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241010131105-e2c23f9c80da
291+
github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241024135802-b4888f54a136
292292
github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
293293
github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5
294294
k8s.io/api => k8s.io/api v0.29.7

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -794,8 +794,8 @@ github.com/devtron-labs/argo-workflows/v3 v3.5.10 h1:6rxQOesOzDz6SgQCMDQNHaehsKF
794794
github.com/devtron-labs/argo-workflows/v3 v3.5.10/go.mod h1:/vqxcovDPT4zqr4DjR5v7CF8ggpY1l3TSa2CIG3jmjA=
795795
github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 h1:2+Q7Jdhpo/uMiaQiZZzAh+ZX7wEJIFuMFG6DEiMuo64=
796796
github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8/go.mod h1:702R6WIf5y9UzKGoCGxQ+x3l5Ws+l0fXg2xlCpSGFZI=
797-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241010131105-e2c23f9c80da h1:vC6SMz6BM1doN+ZBGiDGyERJ/LphFQi5+Ab/YQkNJVo=
798-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241010131105-e2c23f9c80da/go.mod h1:KpKnF4OSpQNDJmb4wVZq3Za88ePBw4xec2GOAGRm5UQ=
797+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241024135802-b4888f54a136 h1:rNGxjU5L6NvObxGMt0+vNFmjkqstm7zDASiS+pakrgQ=
798+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20241024135802-b4888f54a136/go.mod h1:KpKnF4OSpQNDJmb4wVZq3Za88ePBw4xec2GOAGRm5UQ=
799799
github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU=
800800
github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y=
801801
github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 h1:xwbTeijNTf4/j1v+tSfwVqwLVnReas/NqEKeQHvSTys=

internal/sql/repository/DeploymentTemplateRepository.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type DeploymentTemplateComparisonMetadata struct {
3838
EnvironmentId int `json:"environmentId,omitempty"`
3939
EnvironmentName string `json:"environmentName,omitempty"`
4040
DeploymentTemplateHistoryId int `json:"deploymentTemplateHistoryId,omitempty"`
41+
WfrId int `json:"wfrId,omitempty"`
4142
StartedOn *time.Time `json:"startedOn,omitempty"`
4243
FinishedOn *time.Time `json:"finishedOn,omitempty"`
4344
Status string `json:"status,omitempty"`
@@ -69,7 +70,7 @@ func (impl DeploymentTemplateRepositoryImpl) FetchDeploymentHistoryWithChartRefs
6970
limit := 15
7071

7172
query := "select p.id as pipeline_id, dth.id as deployment_template_history_id," +
72-
" wfr.finished_on, wfr.status, c.chart_ref_id, c.chart_version FROM cd_workflow_runner wfr" +
73+
" wfr.id as wfr_id, wfr.finished_on, wfr.status, c.chart_ref_id, c.chart_version FROM cd_workflow_runner wfr" +
7374
" JOIN cd_workflow wf ON wf.id = wfr.cd_workflow_id JOIN pipeline p ON p.id = wf.pipeline_id" +
7475
" JOIN deployment_template_history dth ON dth.deployed_on = wfr.started_on " +
7576
"JOIN pipeline_config_override pco ON pco.cd_workflow_id = wf.id " +

internal/sql/repository/pipelineConfig/CdWorfkflowRepository.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,10 @@ func (impl *CdWorkflowRepositoryImpl) GetLatestTriggersOfHelmPipelinesStuckInNon
693693
Where("cd_workflow_runner.cd_workflow_id in"+
694694
" (SELECT max(cd_workflow.id) as id from cd_workflow"+
695695
" INNER JOIN cd_workflow_runner on cd_workflow.id = cd_workflow_runner.cd_workflow_id"+
696-
" WHERE cd_workflow_runner.status != ?"+
696+
" WHERE cd_workflow_runner.workflow_type = ? "+
697+
" AND cd_workflow_runner.status != ?"+
697698
" GROUP BY cd_workflow.pipeline_id"+
698-
" ORDER BY cd_workflow.pipeline_id desc)", cdWorkflow.WorkflowInQueue).
699+
" ORDER BY cd_workflow.pipeline_id desc)", apiBean.CD_WORKFLOW_TYPE_DEPLOY, cdWorkflow.WorkflowInQueue).
699700
Where("(cd_workflow__pipeline.deployment_app_type=? or dc.deployment_app_type=?)", util.PIPELINE_DEPLOYMENT_TYPE_HELM, util.PIPELINE_DEPLOYMENT_TYPE_HELM).
700701
Where("cd_workflow_runner.started_on > NOW() - INTERVAL '? hours'", getPipelineDeployedWithinHours).
701702
Where("cd_workflow__pipeline.deleted=?", false).

pkg/bean/configSecretData.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ type SecretList struct {
3030
ConfigData []*ConfigData `json:"secrets"`
3131
}
3232

33+
// there is an adapter written in pkg/bean folder to convert below ConfigData struct to pipeline/bean's ConfigData
34+
3335
// TODO refactoring: duplicate struct of ConfigData in ConfigMapBean.go
3436
type ConfigData struct {
3537
Name string `json:"name"`
@@ -49,6 +51,7 @@ type ConfigData struct {
4951
SubPath bool `json:"subPath"`
5052
ESOSubPath []string `json:"esoSubPath"`
5153
FilePermission string `json:"filePermission"`
54+
Overridden bool `json:"overridden"`
5255
}
5356

5457
func (c *ConfigData) IsESOExternalSecretType() bool {

pkg/cluster/repository/EnvironmentRepository.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ type EnvironmentRepository interface {
8080
FindAllActiveWithFilter() ([]*Environment, error)
8181
FindEnvClusterInfosByIds([]int) ([]*EnvCluserInfo, error)
8282
FindEnvLinkedWithCiPipelines(externalCi bool, ciPipelineIds []int) ([]*Environment, error)
83+
FindEnvByNameWithClusterDetails(envName string) (*Environment, error)
8384
}
8485

8586
func NewEnvironmentRepositoryImpl(dbConnection *pg.DB, logger *zap.SugaredLogger, appStatusRepository appStatus.AppStatusRepository) *EnvironmentRepositoryImpl {
@@ -160,6 +161,17 @@ func (repositoryImpl EnvironmentRepositoryImpl) FindByName(name string) (*Enviro
160161
return environment, err
161162
}
162163

164+
func (repositoryImpl EnvironmentRepositoryImpl) FindEnvByNameWithClusterDetails(envName string) (*Environment, error) {
165+
environment := &Environment{}
166+
err := repositoryImpl.dbConnection.
167+
Model(environment).
168+
Column("environment.*", "Cluster").
169+
Where("environment.environment_name = ?", envName).
170+
Where("environment.active = ?", true).
171+
Select()
172+
return environment, err
173+
}
174+
163175
func (repositoryImpl EnvironmentRepositoryImpl) FindIdByName(name string) (int, error) {
164176
environment := &Environment{}
165177
err := repositoryImpl.dbConnection.

0 commit comments

Comments
 (0)