@@ -19,7 +19,7 @@ package restHandler
1919import (
2020 "encoding/json"
2121 "fmt"
22- bean4 "github.com/devtron-labs/devtron/pkg/auth/user/bean "
22+ util2 "github.com/devtron-labs/devtron/pkg/auth/user/util "
2323 "github.com/devtron-labs/devtron/pkg/build/git/gitMaterial/repository"
2424 "github.com/devtron-labs/devtron/pkg/build/git/gitProvider"
2525 "github.com/devtron-labs/devtron/pkg/bulkAction/bean"
@@ -40,25 +40,37 @@ import (
4040 "github.com/devtron-labs/devtron/pkg/auth/user"
4141 "github.com/devtron-labs/devtron/pkg/chart"
4242 "github.com/devtron-labs/devtron/pkg/pipeline"
43- "github.com/devtron-labs/devtron/pkg/team"
4443 "github.com/devtron-labs/devtron/util/rbac"
4544 "github.com/gorilla/mux"
4645 "go.uber.org/zap"
4746 "gopkg.in/go-playground/validator.v9"
4847)
4948
5049type BulkUpdateRestHandler interface {
51- FindBulkUpdateReadme (w http.ResponseWriter , r * http.Request )
52- GetImpactedAppsName (w http.ResponseWriter , r * http.Request )
53- BulkUpdate (w http.ResponseWriter , r * http.Request )
54-
50+ //deprecated
5551 BulkHibernate (w http.ResponseWriter , r * http.Request )
52+ BulkHibernateV1 (w http.ResponseWriter , r * http.Request )
5653 BulkUnHibernate (w http.ResponseWriter , r * http.Request )
5754 BulkDeploy (w http.ResponseWriter , r * http.Request )
5855 BulkBuildTrigger (w http.ResponseWriter , r * http.Request )
5956
6057 HandleCdPipelineBulkAction (w http.ResponseWriter , r * http.Request )
58+ BulkEditRestHandler
59+ }
60+
61+ type BulkEditRestHandler interface {
62+ BulkEditV1Beta1RestHandler
63+ // BulkEditV1Beta2RestHandlerEnt interface that defines the methods for bulk edit v1beta2.
64+ // v1beta2 is an Ent only version, so it does not have a separate interface.
65+ BulkEditV1Beta2RestHandlerEnt
6166}
67+
68+ type BulkEditV1Beta1RestHandler interface {
69+ GetBulkEditConfig (w http.ResponseWriter , r * http.Request )
70+ DryRunBulkEdit (w http.ResponseWriter , r * http.Request )
71+ BulkEdit (w http.ResponseWriter , r * http.Request )
72+ }
73+
6274type BulkUpdateRestHandlerImpl struct {
6375 pipelineBuilder pipeline.PipelineBuilder
6476 ciPipelineRepository pipelineConfig.CiPipelineRepository
@@ -69,7 +81,6 @@ type BulkUpdateRestHandlerImpl struct {
6981 propertiesConfigService pipeline.PropertiesConfigService
7082 userAuthService user.UserService
7183 validator * validator.Validate
72- teamService team.TeamService
7384 enforcer casbin.Enforcer
7485 gitSensorClient gitSensor.Client
7586 pipelineRepository pipelineConfig.PipelineRepository
@@ -78,7 +89,7 @@ type BulkUpdateRestHandlerImpl struct {
7889 envService environment.EnvironmentService
7990 gitRegistryConfig gitProvider.GitRegistryConfig
8091 dockerRegistryConfig pipeline.DockerRegistryConfig
81- cdHandelr pipeline.CdHandler
92+ cdHandler pipeline.CdHandler
8293 appCloneService appClone.AppCloneService
8394 materialRepository repository.MaterialRepository
8495}
@@ -88,15 +99,14 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
8899 chartService chart.ChartService ,
89100 propertiesConfigService pipeline.PropertiesConfigService ,
90101 userAuthService user.UserService ,
91- teamService team.TeamService ,
92102 enforcer casbin.Enforcer ,
93103 ciHandler pipeline.CiHandler ,
94104 validator * validator.Validate ,
95105 gitSensorClient gitSensor.Client ,
96106 ciPipelineRepository pipelineConfig.CiPipelineRepository , pipelineRepository pipelineConfig.PipelineRepository ,
97107 enforcerUtil rbac.EnforcerUtil , envService environment.EnvironmentService ,
98108 gitRegistryConfig gitProvider.GitRegistryConfig , dockerRegistryConfig pipeline.DockerRegistryConfig ,
99- cdHandelr pipeline.CdHandler ,
109+ cdHandler pipeline.CdHandler ,
100110 appCloneService appClone.AppCloneService ,
101111 appWorkflowService appWorkflow.AppWorkflowService ,
102112 materialRepository repository.MaterialRepository ,
@@ -109,7 +119,6 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
109119 propertiesConfigService : propertiesConfigService ,
110120 userAuthService : userAuthService ,
111121 validator : validator ,
112- teamService : teamService ,
113122 enforcer : enforcer ,
114123 ciHandler : ciHandler ,
115124 gitSensorClient : gitSensorClient ,
@@ -119,26 +128,24 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
119128 envService : envService ,
120129 gitRegistryConfig : gitRegistryConfig ,
121130 dockerRegistryConfig : dockerRegistryConfig ,
122- cdHandelr : cdHandelr ,
131+ cdHandler : cdHandler ,
123132 appCloneService : appCloneService ,
124133 appWorkflowService : appWorkflowService ,
125134 materialRepository : materialRepository ,
126135 }
127136}
128137
129- func (handler BulkUpdateRestHandlerImpl ) FindBulkUpdateReadme (w http.ResponseWriter , r * http.Request ) {
130- var operation string
138+ func (handler BulkUpdateRestHandlerImpl ) GetBulkEditConfig (w http.ResponseWriter , r * http.Request ) {
131139 vars := mux .Vars (r )
132140 apiVersion := vars ["apiVersion" ]
133141 kind := vars ["kind" ]
134- operation = fmt .Sprintf ("%s/%s" , apiVersion , kind )
135- response , err := handler .bulkUpdateService .FindBulkUpdateReadme (operation )
142+ response , err := handler .bulkUpdateService .GetBulkEditConfig (apiVersion , kind )
136143 if err != nil {
137144 common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
138145 return
139146 }
140- //auth free, only login required
141- var responseArr []* bean.BulkUpdateSeeExampleResponse
147+ // auth free, only login required
148+ var responseArr []* bean.BulkEditConfigResponse
142149 responseArr = append (responseArr , response )
143150 common .WriteJsonResp (w , nil , responseArr , http .StatusOK )
144151}
@@ -158,7 +165,8 @@ func (handler BulkUpdateRestHandlerImpl) CheckAuthForImpactedObjects(AppId int,
158165 return true
159166
160167}
161- func (handler BulkUpdateRestHandlerImpl ) GetImpactedAppsName (w http.ResponseWriter , r * http.Request ) {
168+
169+ func (handler BulkUpdateRestHandlerImpl ) DryRunBulkEdit (w http.ResponseWriter , r * http.Request ) {
162170 decoder := json .NewDecoder (r .Body )
163171 var script bean.BulkUpdateScript
164172 err := decoder .Decode (& script )
@@ -173,34 +181,34 @@ func (handler BulkUpdateRestHandlerImpl) GetImpactedAppsName(w http.ResponseWrit
173181 return
174182 }
175183 token := r .Header .Get ("token" )
176- impactedApps , err := handler .bulkUpdateService .GetBulkAppName (script .Spec )
184+ impactedObjects , err := handler .bulkUpdateService .DryRunBulkEdit (script .Spec )
177185 if err != nil {
178186 common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
179187 return
180188 }
181189 appResourceObjects , envResourceObjects := handler .enforcerUtil .GetRbacObjectsForAllAppsAndEnvironments ()
182- for _ , deploymentTemplateImpactedApp := range impactedApps .DeploymentTemplate {
190+ for _ , deploymentTemplateImpactedApp := range impactedObjects .DeploymentTemplate {
183191 ok := handler .CheckAuthForImpactedObjects (deploymentTemplateImpactedApp .AppId , deploymentTemplateImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
184192 if ! ok {
185193 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
186194 return
187195 }
188196 }
189- for _ , configMapImpactedApp := range impactedApps .ConfigMap {
197+ for _ , configMapImpactedApp := range impactedObjects .ConfigMap {
190198 ok := handler .CheckAuthForImpactedObjects (configMapImpactedApp .AppId , configMapImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
191199 if ! ok {
192200 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
193201 return
194202 }
195203 }
196- for _ , secretImpactedApp := range impactedApps .Secret {
204+ for _ , secretImpactedApp := range impactedObjects .Secret {
197205 ok := handler .CheckAuthForImpactedObjects (secretImpactedApp .AppId , secretImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
198206 if ! ok {
199207 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
200208 return
201209 }
202210 }
203- common .WriteJsonResp (w , err , impactedApps , http .StatusOK )
211+ common .WriteJsonResp (w , nil , impactedObjects , http .StatusOK )
204212}
205213
206214func (handler BulkUpdateRestHandlerImpl ) CheckAuthForBulkUpdate (AppId int , EnvId int , AppName string , rbacObjects map [int ]string , token string ) bool {
@@ -217,7 +225,8 @@ func (handler BulkUpdateRestHandlerImpl) CheckAuthForBulkUpdate(AppId int, EnvId
217225 return true
218226
219227}
220- func (handler BulkUpdateRestHandlerImpl ) BulkUpdate (w http.ResponseWriter , r * http.Request ) {
228+
229+ func (handler BulkUpdateRestHandlerImpl ) BulkEdit (w http.ResponseWriter , r * http.Request ) {
221230 userId , err := handler .userAuthService .GetLoggedInUser (r )
222231 if userId == 0 || err != nil {
223232 common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
@@ -237,41 +246,36 @@ func (handler BulkUpdateRestHandlerImpl) BulkUpdate(w http.ResponseWriter, r *ht
237246 return
238247 }
239248 token := r .Header .Get ("token" )
240- impactedApps , err := handler .bulkUpdateService .GetBulkAppName (script .Spec )
249+ impactedObjects , err := handler .bulkUpdateService .DryRunBulkEdit (script .Spec )
241250 if err != nil {
242251 common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
243252 return
244253 }
245254 rbacObjects := handler .enforcerUtil .GetRbacObjectsForAllApps (helper .CustomApp )
246- for _ , deploymentTemplateImpactedApp := range impactedApps .DeploymentTemplate {
255+ for _ , deploymentTemplateImpactedApp := range impactedObjects .DeploymentTemplate {
247256 ok := handler .CheckAuthForBulkUpdate (deploymentTemplateImpactedApp .AppId , deploymentTemplateImpactedApp .EnvId , deploymentTemplateImpactedApp .AppName , rbacObjects , token )
248257 if ! ok {
249258 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
250259 return
251260 }
252261 }
253- for _ , configMapImpactedApp := range impactedApps .ConfigMap {
254- ok := handler .CheckAuthForBulkUpdate (configMapImpactedApp .AppId , configMapImpactedApp .EnvId , configMapImpactedApp .AppName , rbacObjects , token )
262+ for _ , impactedConfigMap := range impactedObjects .ConfigMap {
263+ ok := handler .CheckAuthForBulkUpdate (impactedConfigMap .AppId , impactedConfigMap .EnvId , impactedConfigMap .AppName , rbacObjects , token )
255264 if ! ok {
256265 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
257266 return
258267 }
259268 }
260- for _ , secretImpactedApp := range impactedApps .Secret {
261- ok := handler .CheckAuthForBulkUpdate (secretImpactedApp .AppId , secretImpactedApp .EnvId , secretImpactedApp .AppName , rbacObjects , token )
269+ for _ , impactedSecret := range impactedObjects .Secret {
270+ ok := handler .CheckAuthForBulkUpdate (impactedSecret .AppId , impactedSecret .EnvId , impactedSecret .AppName , rbacObjects , token )
262271 if ! ok {
263272 common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
264273 return
265274 }
266275 }
267276 isSuperAdmin := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionCreate , "*" )
268- userEmail := util .GetEmailFromContext (r .Context ())
269- userMetadata := & bean4.UserMetadata {
270- UserEmailId : userEmail ,
271- IsUserSuperAdmin : isSuperAdmin ,
272- UserId : userId ,
273- }
274- response := handler .bulkUpdateService .BulkUpdate (script .Spec , userMetadata )
277+ userMetadata := util2 .GetUserMetadata (r .Context (), userId , isSuperAdmin )
278+ response := handler .bulkUpdateService .BulkEdit (r .Context (), script .Spec , userMetadata )
275279 common .WriteJsonResp (w , nil , response , http .StatusOK )
276280}
277281
@@ -282,12 +286,7 @@ func (handler BulkUpdateRestHandlerImpl) BulkHibernate(w http.ResponseWriter, r
282286 }
283287 token := r .Header .Get ("token" )
284288 isSuperAdmin := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionCreate , "*" )
285- userEmail := util .GetEmailFromContext (r .Context ())
286- userMetadata := & bean4.UserMetadata {
287- UserEmailId : userEmail ,
288- IsUserSuperAdmin : isSuperAdmin ,
289- UserId : request .UserId ,
290- }
289+ userMetadata := util2 .GetUserMetadata (r .Context (), request .UserId , isSuperAdmin )
291290
292291 response , err := handler .bulkUpdateService .BulkHibernate (r .Context (), request , handler .checkAuthForBulkHibernateAndUnhibernate , userMetadata )
293292 if err != nil {
@@ -327,19 +326,15 @@ func (handler BulkUpdateRestHandlerImpl) BulkUnHibernate(w http.ResponseWriter,
327326 }
328327 token := r .Header .Get ("token" )
329328 isSuperAdmin := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionCreate , "*" )
330- userEmail := util .GetEmailFromContext (r .Context ())
331- userMetadata := & bean4.UserMetadata {
332- UserEmailId : userEmail ,
333- IsUserSuperAdmin : isSuperAdmin ,
334- UserId : request .UserId ,
335- }
329+ userMetadata := util2 .GetUserMetadata (r .Context (), request .UserId , isSuperAdmin )
336330 response , err := handler .bulkUpdateService .BulkUnHibernate (r .Context (), request , handler .checkAuthForBulkHibernateAndUnhibernate , userMetadata )
337331 if err != nil {
338332 common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
339333 return
340334 }
341335 common .WriteJsonResp (w , nil , response , http .StatusOK )
342336}
337+
343338func (handler BulkUpdateRestHandlerImpl ) BulkDeploy (w http.ResponseWriter , r * http.Request ) {
344339 token := r .Header .Get ("token" )
345340 userId , err := handler .userAuthService .GetLoggedInUser (r )
@@ -361,14 +356,10 @@ func (handler BulkUpdateRestHandlerImpl) BulkDeploy(w http.ResponseWriter, r *ht
361356 common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
362357 return
363358 }
359+ ctx := util .NewRequestCtx (r .Context ())
364360 isSuperAdmin := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionCreate , "*" )
365- userEmail := util .GetEmailFromContext (r .Context ())
366- userMetadata := & bean4.UserMetadata {
367- UserEmailId : userEmail ,
368- IsUserSuperAdmin : isSuperAdmin ,
369- UserId : userId ,
370- }
371- response , err := handler .bulkUpdateService .BulkDeploy (& request , token , handler .checkAuthBatch , userMetadata )
361+ userMetadata := util2 .GetUserMetadata (ctx , userId , isSuperAdmin )
362+ response , err := handler .bulkUpdateService .BulkDeploy (ctx , & request , handler .checkAuthBatch , userMetadata )
372363 if err != nil {
373364 common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
374365 return
0 commit comments