Skip to content

Commit fc61f15

Browse files
committed
oss syncable code for exception users (approval bypass) only limited to cm, cs and dt
1 parent 1f7d0d3 commit fc61f15

File tree

9 files changed

+422
-48
lines changed

9 files changed

+422
-48
lines changed

Wire.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ import (
152152
repository7 "github.com/devtron-labs/devtron/pkg/kubernetesResourceAuditLogs/repository"
153153
"github.com/devtron-labs/devtron/pkg/notifier"
154154
"github.com/devtron-labs/devtron/pkg/pipeline"
155+
"github.com/devtron-labs/devtron/pkg/pipeline/draftAwareConfigService"
155156
"github.com/devtron-labs/devtron/pkg/pipeline/executors"
156157
history3 "github.com/devtron-labs/devtron/pkg/pipeline/history"
157158
repository3 "github.com/devtron-labs/devtron/pkg/pipeline/history/repository"
@@ -531,6 +532,9 @@ func InitializeApp() (*App, error) {
531532
chartConfig.NewConfigMapRepositoryImpl,
532533
wire.Bind(new(chartConfig.ConfigMapRepository), new(*chartConfig.ConfigMapRepositoryImpl)),
533534

535+
draftAwareConfigService.NewDraftAwareResourceServiceImpl,
536+
wire.Bind(new(draftAwareConfigService.DraftAwareResourceService), new(*draftAwareConfigService.DraftAwareResourceServiceImpl)),
537+
534538
config.WireSet,
535539

536540
infraConfig.WireSet,

api/restHandler/ConfigMapRestHandler.go

Lines changed: 77 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package restHandler
1919
import (
2020
"encoding/json"
2121
"fmt"
22+
"github.com/devtron-labs/devtron/pkg/pipeline/draftAwareConfigService"
23+
"github.com/devtron-labs/devtron/util"
2224
"net/http"
2325
"strconv"
2426

@@ -63,31 +65,35 @@ type ConfigMapRestHandler interface {
6365
}
6466

6567
type ConfigMapRestHandlerImpl struct {
66-
pipelineBuilder pipeline.PipelineBuilder
67-
Logger *zap.SugaredLogger
68-
chartService chart.ChartService
69-
userAuthService user.UserService
70-
teamService team.TeamService
71-
enforcer casbin.Enforcer
72-
pipelineRepository pipelineConfig.PipelineRepository
73-
enforcerUtil rbac.EnforcerUtil
74-
configMapService pipeline.ConfigMapService
68+
pipelineBuilder pipeline.PipelineBuilder
69+
Logger *zap.SugaredLogger
70+
chartService chart.ChartService
71+
userAuthService user.UserService
72+
teamService team.TeamService
73+
enforcer casbin.Enforcer
74+
pipelineRepository pipelineConfig.PipelineRepository
75+
enforcerUtil rbac.EnforcerUtil
76+
configMapService pipeline.ConfigMapService
77+
draftAwareResourceService draftAwareConfigService.DraftAwareResourceService
7578
}
7679

7780
func NewConfigMapRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger *zap.SugaredLogger,
7881
chartService chart.ChartService, userAuthService user.UserService, teamService team.TeamService,
7982
enforcer casbin.Enforcer, pipelineRepository pipelineConfig.PipelineRepository,
80-
enforcerUtil rbac.EnforcerUtil, configMapService pipeline.ConfigMapService) *ConfigMapRestHandlerImpl {
83+
enforcerUtil rbac.EnforcerUtil, configMapService pipeline.ConfigMapService,
84+
draftAwareResourceService draftAwareConfigService.DraftAwareResourceService,
85+
) *ConfigMapRestHandlerImpl {
8186
return &ConfigMapRestHandlerImpl{
82-
pipelineBuilder: pipelineBuilder,
83-
Logger: Logger,
84-
chartService: chartService,
85-
userAuthService: userAuthService,
86-
teamService: teamService,
87-
enforcer: enforcer,
88-
pipelineRepository: pipelineRepository,
89-
enforcerUtil: enforcerUtil,
90-
configMapService: configMapService,
87+
pipelineBuilder: pipelineBuilder,
88+
Logger: Logger,
89+
chartService: chartService,
90+
userAuthService: userAuthService,
91+
teamService: teamService,
92+
enforcer: enforcer,
93+
pipelineRepository: pipelineRepository,
94+
enforcerUtil: enforcerUtil,
95+
configMapService: configMapService,
96+
draftAwareResourceService: draftAwareResourceService,
9197
}
9298
}
9399

@@ -118,8 +124,10 @@ func (handler ConfigMapRestHandlerImpl) CMGlobalAddUpdate(w http.ResponseWriter,
118124
return
119125
}
120126
//RBAC END
121-
122-
res, err := handler.configMapService.CMGlobalAddUpdate(&configMapRequest)
127+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
128+
ctx := r.Context()
129+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
130+
res, err := handler.draftAwareResourceService.CMGlobalAddUpdate(ctx, &configMapRequest)
123131
if err != nil {
124132
handler.Logger.Errorw("service err, CMGlobalAddUpdate", "err", err, "payload", configMapRequest)
125133
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -162,8 +170,10 @@ func (handler ConfigMapRestHandlerImpl) CMEnvironmentAddUpdate(w http.ResponseWr
162170
}
163171
}
164172
//RBAC END
165-
166-
res, err := handler.configMapService.CMEnvironmentAddUpdate(&configMapRequest)
173+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
174+
ctx := r.Context()
175+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
176+
res, err := handler.draftAwareResourceService.CMEnvironmentAddUpdate(ctx, &configMapRequest)
167177
if err != nil {
168178
handler.Logger.Errorw("service err, CMEnvironmentAddUpdate", "err", err, "payload", configMapRequest)
169179
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -359,8 +369,10 @@ func (handler ConfigMapRestHandlerImpl) CSGlobalAddUpdate(w http.ResponseWriter,
359369
return
360370
}
361371
//RBAC END
362-
363-
res, err := handler.configMapService.CSGlobalAddUpdate(&configMapRequest)
372+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
373+
ctx := r.Context()
374+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
375+
res, err := handler.draftAwareResourceService.CSGlobalAddUpdate(ctx, &configMapRequest)
364376
if err != nil {
365377
handler.Logger.Errorw("service err, CSGlobalAddUpdate", "err", err, "payload", configMapRequest)
366378
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -404,8 +416,10 @@ func (handler ConfigMapRestHandlerImpl) CSEnvironmentAddUpdate(w http.ResponseWr
404416
}
405417
}
406418
//RBAC END
407-
408-
res, err := handler.configMapService.CSEnvironmentAddUpdate(&configMapRequest)
419+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
420+
ctx := r.Context()
421+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
422+
res, err := handler.draftAwareResourceService.CSEnvironmentAddUpdate(ctx, &configMapRequest)
409423
if err != nil {
410424
handler.Logger.Errorw("service err, CSEnvironmentAddUpdate", "err", err, "payload", configMapRequest)
411425
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -517,8 +531,15 @@ func (handler ConfigMapRestHandlerImpl) CMGlobalDelete(w http.ResponseWriter, r
517531
return
518532
}
519533
//RBAC END
520-
521-
res, err := handler.configMapService.CMGlobalDelete(name, id, userId)
534+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
535+
ctx := r.Context()
536+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
537+
deleteReq := &bean.ConfigDataRequest{
538+
Id: id,
539+
AppId: appId,
540+
UserId: userId,
541+
}
542+
res, err := handler.draftAwareResourceService.CMGlobalDelete(ctx, name, deleteReq)
522543
if err != nil {
523544
handler.Logger.Errorw("service err, CMGlobalDelete", "err", err, "appId", appId, "id", id, "name", name)
524545
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -572,8 +593,15 @@ func (handler ConfigMapRestHandlerImpl) CMEnvironmentDelete(w http.ResponseWrite
572593
}
573594
}
574595
//RBAC END
575-
576-
res, err := handler.configMapService.CMEnvironmentDelete(name, id, userId)
596+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
597+
ctx := r.Context()
598+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
599+
deleteReq := &bean.ConfigDataRequest{
600+
Id: id,
601+
AppId: appId,
602+
UserId: userId,
603+
}
604+
res, err := handler.draftAwareResourceService.CMEnvironmentDelete(ctx, name, deleteReq)
577605
if err != nil {
578606
handler.Logger.Errorw("service err, CMEnvironmentDelete", "err", err, "appId", appId, "envId", envId, "id", id)
579607
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -613,8 +641,15 @@ func (handler ConfigMapRestHandlerImpl) CSGlobalDelete(w http.ResponseWriter, r
613641
return
614642
}
615643
//RBAC END
616-
617-
res, err := handler.configMapService.CSGlobalDelete(name, id, userId)
644+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
645+
ctx := r.Context()
646+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
647+
deleteReq := &bean.ConfigDataRequest{
648+
Id: id,
649+
AppId: appId,
650+
UserId: userId,
651+
}
652+
res, err := handler.draftAwareResourceService.CSGlobalDelete(ctx, name, deleteReq)
618653
if err != nil {
619654
handler.Logger.Errorw("service err, CSGlobalDelete", "err", err, "appId", appId, "id", id, "name", name)
620655
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -668,8 +703,15 @@ func (handler ConfigMapRestHandlerImpl) CSEnvironmentDelete(w http.ResponseWrite
668703
}
669704
}
670705
//RBAC END
671-
672-
res, err := handler.configMapService.CSEnvironmentDelete(name, id, userId)
706+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
707+
ctx := r.Context()
708+
util.SetSuperAdminInContext(ctx, isSuperAdmin)
709+
deleteReq := &bean.ConfigDataRequest{
710+
Id: id,
711+
AppId: appId,
712+
UserId: userId,
713+
}
714+
res, err := handler.draftAwareResourceService.CSEnvironmentDelete(ctx, name, deleteReq)
673715
if err != nil {
674716
handler.Logger.Errorw("service err, CSEnvironmentDelete", "err", err, "appId", appId, "envId", envId, "id", id)
675717
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)

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

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,10 @@ func (handler *PipelineConfigRestHandlerImpl) ConfigureDeploymentTemplateForApp(
175175
}
176176
}(ctx.Done(), cn.CloseNotify())
177177
}
178+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
179+
util2.SetSuperAdminInContext(ctx, isSuperAdmin)
178180

179-
createResp, err := handler.chartService.Create(templateRequest, r.Context())
181+
createResp, err := handler.draftAwareResourceService.Create(ctx, templateRequest)
180182
if err != nil {
181183
handler.Logger.Errorw("service err, ConfigureDeploymentTemplateForApp", "err", err, "payload", templateRequest)
182184
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -727,8 +729,9 @@ func (handler *PipelineConfigRestHandlerImpl) EnvConfigOverrideCreate(w http.Res
727729
}
728730
}(ctx.Done(), cn.CloseNotify())
729731
}
730-
731-
createResp, err := handler.propertiesConfigService.CreateEnvironmentPropertiesAndBaseIfNeeded(ctx, appId, &envConfigProperties)
732+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
733+
util2.SetSuperAdminInContext(ctx, isSuperAdmin)
734+
createResp, err := handler.draftAwareResourceService.CreateEnvironmentPropertiesAndBaseIfNeeded(ctx, appId, &envConfigProperties)
732735
if err != nil {
733736
handler.Logger.Errorw("service err, CreateEnvironmentPropertiesAndBaseIfNeeded", "payload", envConfigProperties, "err", err)
734737
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -792,8 +795,10 @@ func (handler *PipelineConfigRestHandlerImpl) EnvConfigOverrideUpdate(w http.Res
792795
common.WriteJsonResp(w, err2, nil, http.StatusBadRequest)
793796
return
794797
}
795-
796-
createResp, err := handler.propertiesConfigService.UpdateEnvironmentProperties(appId, &envConfigProperties, userId)
798+
ctx := r.Context()
799+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
800+
util2.SetSuperAdminInContext(ctx, isSuperAdmin)
801+
createResp, err := handler.draftAwareResourceService.UpdateEnvironmentProperties(ctx, appId, &envConfigProperties)
797802
if err != nil {
798803
handler.Logger.Errorw("service err, EnvConfigOverrideUpdate", "err", err, "payload", envConfigProperties)
799804
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -1383,9 +1388,11 @@ func (handler *PipelineConfigRestHandlerImpl) UpdateAppOverride(w http.ResponseW
13831388
common.WriteJsonResp(w, err2, nil, http.StatusBadRequest)
13841389
return
13851390
}
1391+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
1392+
util2.SetSuperAdminInContext(ctx, isSuperAdmin)
13861393

13871394
_, span = otel.Tracer("orchestrator").Start(ctx, "chartService.UpdateAppOverride")
1388-
createResp, err := handler.chartService.UpdateAppOverride(ctx, &templateRequest)
1395+
createResp, err := handler.draftAwareResourceService.UpdateAppOverride(ctx, &templateRequest)
13891396
span.End()
13901397
if err != nil {
13911398
handler.Logger.Errorw("service err, UpdateAppOverride", "err", err, "payload", templateRequest)
@@ -1520,7 +1527,16 @@ func (handler *PipelineConfigRestHandlerImpl) EnvConfigOverrideReset(w http.Resp
15201527
common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), "Unauthorized User", http.StatusForbidden)
15211528
return
15221529
}
1523-
isSuccess, err := handler.propertiesConfigService.ResetEnvironmentProperties(id, userId)
1530+
ctx := r.Context()
1531+
isSuperAdmin := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*")
1532+
util2.SetSuperAdminInContext(ctx, isSuperAdmin)
1533+
envProperties := &pipelineBean.EnvironmentProperties{
1534+
Id: id,
1535+
EnvironmentId: environmentId,
1536+
UserId: userId,
1537+
AppId: appId,
1538+
}
1539+
isSuccess, err := handler.draftAwareResourceService.ResetEnvironmentProperties(ctx, envProperties)
15241540
if err != nil {
15251541
handler.Logger.Errorw("service err, EnvConfigOverrideReset", "err", err, "appId", appId, "environmentId", environmentId)
15261542
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deployedAppMetrics"
3333
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deploymentTemplate"
3434
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deploymentTemplate/chartRef"
35+
"github.com/devtron-labs/devtron/pkg/pipeline/draftAwareConfigService"
3536
security2 "github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning"
3637
"github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning/read"
3738
read3 "github.com/devtron-labs/devtron/pkg/team/read"
@@ -138,6 +139,7 @@ type PipelineConfigRestHandlerImpl struct {
138139
teamReadService read3.TeamReadService
139140
environmentRepository repository2.EnvironmentRepository
140141
chartReadService read5.ChartReadService
142+
draftAwareResourceService draftAwareConfigService.DraftAwareResourceService
141143
}
142144

143145
func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger *zap.SugaredLogger,
@@ -171,7 +173,9 @@ func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger
171173
gitProviderReadService gitProviderRead.GitProviderReadService,
172174
teamReadService read3.TeamReadService,
173175
EnvironmentRepository repository2.EnvironmentRepository,
174-
chartReadService read5.ChartReadService) *PipelineConfigRestHandlerImpl {
176+
chartReadService read5.ChartReadService,
177+
draftAwareResourceService draftAwareConfigService.DraftAwareResourceService,
178+
) *PipelineConfigRestHandlerImpl {
175179
envConfig := &PipelineRestHandlerEnvConfig{}
176180
err := env.Parse(envConfig)
177181
if err != nil {
@@ -213,6 +217,7 @@ func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger
213217
teamReadService: teamReadService,
214218
environmentRepository: EnvironmentRepository,
215219
chartReadService: chartReadService,
220+
draftAwareResourceService: draftAwareResourceService,
216221
}
217222
}
218223

pkg/pipeline/bean/EnvironmentProperties.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type EnvironmentProperties struct {
4343
ClusterId int `json:"clusterId"`
4444
MergeStrategy models.MergeStrategy `json:"mergeStrategy"`
4545
MigratedFrom *bean.ExternalReleaseType `json:"migratedFrom,omitempty"`
46+
AppId int `json:"appId"`
4647
}
4748

4849
type EnvironmentOverrideCreateInternalDTO struct {

0 commit comments

Comments
 (0)