@@ -19,7 +19,7 @@ package restHandler
19
19
import (
20
20
"encoding/json"
21
21
"fmt"
22
- bean4 "github.com/devtron-labs/devtron/pkg/auth/user/bean "
22
+ util2 "github.com/devtron-labs/devtron/pkg/auth/user/util "
23
23
"github.com/devtron-labs/devtron/pkg/build/git/gitMaterial/repository"
24
24
"github.com/devtron-labs/devtron/pkg/build/git/gitProvider"
25
25
"github.com/devtron-labs/devtron/pkg/bulkAction/bean"
@@ -40,25 +40,37 @@ import (
40
40
"github.com/devtron-labs/devtron/pkg/auth/user"
41
41
"github.com/devtron-labs/devtron/pkg/chart"
42
42
"github.com/devtron-labs/devtron/pkg/pipeline"
43
- "github.com/devtron-labs/devtron/pkg/team"
44
43
"github.com/devtron-labs/devtron/util/rbac"
45
44
"github.com/gorilla/mux"
46
45
"go.uber.org/zap"
47
46
"gopkg.in/go-playground/validator.v9"
48
47
)
49
48
50
49
type 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
55
51
BulkHibernate (w http.ResponseWriter , r * http.Request )
52
+ BulkHibernateV1 (w http.ResponseWriter , r * http.Request )
56
53
BulkUnHibernate (w http.ResponseWriter , r * http.Request )
57
54
BulkDeploy (w http.ResponseWriter , r * http.Request )
58
55
BulkBuildTrigger (w http.ResponseWriter , r * http.Request )
59
56
60
57
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
61
66
}
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
+
62
74
type BulkUpdateRestHandlerImpl struct {
63
75
pipelineBuilder pipeline.PipelineBuilder
64
76
ciPipelineRepository pipelineConfig.CiPipelineRepository
@@ -69,7 +81,6 @@ type BulkUpdateRestHandlerImpl struct {
69
81
propertiesConfigService pipeline.PropertiesConfigService
70
82
userAuthService user.UserService
71
83
validator * validator.Validate
72
- teamService team.TeamService
73
84
enforcer casbin.Enforcer
74
85
gitSensorClient gitSensor.Client
75
86
pipelineRepository pipelineConfig.PipelineRepository
@@ -78,7 +89,7 @@ type BulkUpdateRestHandlerImpl struct {
78
89
envService environment.EnvironmentService
79
90
gitRegistryConfig gitProvider.GitRegistryConfig
80
91
dockerRegistryConfig pipeline.DockerRegistryConfig
81
- cdHandelr pipeline.CdHandler
92
+ cdHandler pipeline.CdHandler
82
93
appCloneService appClone.AppCloneService
83
94
materialRepository repository.MaterialRepository
84
95
}
@@ -88,15 +99,14 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
88
99
chartService chart.ChartService ,
89
100
propertiesConfigService pipeline.PropertiesConfigService ,
90
101
userAuthService user.UserService ,
91
- teamService team.TeamService ,
92
102
enforcer casbin.Enforcer ,
93
103
ciHandler pipeline.CiHandler ,
94
104
validator * validator.Validate ,
95
105
gitSensorClient gitSensor.Client ,
96
106
ciPipelineRepository pipelineConfig.CiPipelineRepository , pipelineRepository pipelineConfig.PipelineRepository ,
97
107
enforcerUtil rbac.EnforcerUtil , envService environment.EnvironmentService ,
98
108
gitRegistryConfig gitProvider.GitRegistryConfig , dockerRegistryConfig pipeline.DockerRegistryConfig ,
99
- cdHandelr pipeline.CdHandler ,
109
+ cdHandler pipeline.CdHandler ,
100
110
appCloneService appClone.AppCloneService ,
101
111
appWorkflowService appWorkflow.AppWorkflowService ,
102
112
materialRepository repository.MaterialRepository ,
@@ -109,7 +119,6 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
109
119
propertiesConfigService : propertiesConfigService ,
110
120
userAuthService : userAuthService ,
111
121
validator : validator ,
112
- teamService : teamService ,
113
122
enforcer : enforcer ,
114
123
ciHandler : ciHandler ,
115
124
gitSensorClient : gitSensorClient ,
@@ -119,26 +128,24 @@ func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logg
119
128
envService : envService ,
120
129
gitRegistryConfig : gitRegistryConfig ,
121
130
dockerRegistryConfig : dockerRegistryConfig ,
122
- cdHandelr : cdHandelr ,
131
+ cdHandler : cdHandler ,
123
132
appCloneService : appCloneService ,
124
133
appWorkflowService : appWorkflowService ,
125
134
materialRepository : materialRepository ,
126
135
}
127
136
}
128
137
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 ) {
131
139
vars := mux .Vars (r )
132
140
apiVersion := vars ["apiVersion" ]
133
141
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 )
136
143
if err != nil {
137
144
common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
138
145
return
139
146
}
140
- //auth free, only login required
141
- var responseArr []* bean.BulkUpdateSeeExampleResponse
147
+ // auth free, only login required
148
+ var responseArr []* bean.BulkEditConfigResponse
142
149
responseArr = append (responseArr , response )
143
150
common .WriteJsonResp (w , nil , responseArr , http .StatusOK )
144
151
}
@@ -158,7 +165,8 @@ func (handler BulkUpdateRestHandlerImpl) CheckAuthForImpactedObjects(AppId int,
158
165
return true
159
166
160
167
}
161
- func (handler BulkUpdateRestHandlerImpl ) GetImpactedAppsName (w http.ResponseWriter , r * http.Request ) {
168
+
169
+ func (handler BulkUpdateRestHandlerImpl ) DryRunBulkEdit (w http.ResponseWriter , r * http.Request ) {
162
170
decoder := json .NewDecoder (r .Body )
163
171
var script bean.BulkUpdateScript
164
172
err := decoder .Decode (& script )
@@ -173,34 +181,34 @@ func (handler BulkUpdateRestHandlerImpl) GetImpactedAppsName(w http.ResponseWrit
173
181
return
174
182
}
175
183
token := r .Header .Get ("token" )
176
- impactedApps , err := handler .bulkUpdateService .GetBulkAppName (script .Spec )
184
+ impactedObjects , err := handler .bulkUpdateService .DryRunBulkEdit (script .Spec )
177
185
if err != nil {
178
186
common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
179
187
return
180
188
}
181
189
appResourceObjects , envResourceObjects := handler .enforcerUtil .GetRbacObjectsForAllAppsAndEnvironments ()
182
- for _ , deploymentTemplateImpactedApp := range impactedApps .DeploymentTemplate {
190
+ for _ , deploymentTemplateImpactedApp := range impactedObjects .DeploymentTemplate {
183
191
ok := handler .CheckAuthForImpactedObjects (deploymentTemplateImpactedApp .AppId , deploymentTemplateImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
184
192
if ! ok {
185
193
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
186
194
return
187
195
}
188
196
}
189
- for _ , configMapImpactedApp := range impactedApps .ConfigMap {
197
+ for _ , configMapImpactedApp := range impactedObjects .ConfigMap {
190
198
ok := handler .CheckAuthForImpactedObjects (configMapImpactedApp .AppId , configMapImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
191
199
if ! ok {
192
200
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
193
201
return
194
202
}
195
203
}
196
- for _ , secretImpactedApp := range impactedApps .Secret {
204
+ for _ , secretImpactedApp := range impactedObjects .Secret {
197
205
ok := handler .CheckAuthForImpactedObjects (secretImpactedApp .AppId , secretImpactedApp .EnvId , appResourceObjects , envResourceObjects , token )
198
206
if ! ok {
199
207
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
200
208
return
201
209
}
202
210
}
203
- common .WriteJsonResp (w , err , impactedApps , http .StatusOK )
211
+ common .WriteJsonResp (w , nil , impactedObjects , http .StatusOK )
204
212
}
205
213
206
214
func (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
217
225
return true
218
226
219
227
}
220
- func (handler BulkUpdateRestHandlerImpl ) BulkUpdate (w http.ResponseWriter , r * http.Request ) {
228
+
229
+ func (handler BulkUpdateRestHandlerImpl ) BulkEdit (w http.ResponseWriter , r * http.Request ) {
221
230
userId , err := handler .userAuthService .GetLoggedInUser (r )
222
231
if userId == 0 || err != nil {
223
232
common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
@@ -237,41 +246,36 @@ func (handler BulkUpdateRestHandlerImpl) BulkUpdate(w http.ResponseWriter, r *ht
237
246
return
238
247
}
239
248
token := r .Header .Get ("token" )
240
- impactedApps , err := handler .bulkUpdateService .GetBulkAppName (script .Spec )
249
+ impactedObjects , err := handler .bulkUpdateService .DryRunBulkEdit (script .Spec )
241
250
if err != nil {
242
251
common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
243
252
return
244
253
}
245
254
rbacObjects := handler .enforcerUtil .GetRbacObjectsForAllApps (helper .CustomApp )
246
- for _ , deploymentTemplateImpactedApp := range impactedApps .DeploymentTemplate {
255
+ for _ , deploymentTemplateImpactedApp := range impactedObjects .DeploymentTemplate {
247
256
ok := handler .CheckAuthForBulkUpdate (deploymentTemplateImpactedApp .AppId , deploymentTemplateImpactedApp .EnvId , deploymentTemplateImpactedApp .AppName , rbacObjects , token )
248
257
if ! ok {
249
258
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
250
259
return
251
260
}
252
261
}
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 )
255
264
if ! ok {
256
265
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
257
266
return
258
267
}
259
268
}
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 )
262
271
if ! ok {
263
272
common .WriteJsonResp (w , fmt .Errorf ("unauthorized user" ), "Unauthorized User" , http .StatusForbidden )
264
273
return
265
274
}
266
275
}
267
276
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 )
275
279
common .WriteJsonResp (w , nil , response , http .StatusOK )
276
280
}
277
281
@@ -282,12 +286,7 @@ func (handler BulkUpdateRestHandlerImpl) BulkHibernate(w http.ResponseWriter, r
282
286
}
283
287
token := r .Header .Get ("token" )
284
288
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 )
291
290
292
291
response , err := handler .bulkUpdateService .BulkHibernate (r .Context (), request , handler .checkAuthForBulkHibernateAndUnhibernate , userMetadata )
293
292
if err != nil {
@@ -327,19 +326,15 @@ func (handler BulkUpdateRestHandlerImpl) BulkUnHibernate(w http.ResponseWriter,
327
326
}
328
327
token := r .Header .Get ("token" )
329
328
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 )
336
330
response , err := handler .bulkUpdateService .BulkUnHibernate (r .Context (), request , handler .checkAuthForBulkHibernateAndUnhibernate , userMetadata )
337
331
if err != nil {
338
332
common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
339
333
return
340
334
}
341
335
common .WriteJsonResp (w , nil , response , http .StatusOK )
342
336
}
337
+
343
338
func (handler BulkUpdateRestHandlerImpl ) BulkDeploy (w http.ResponseWriter , r * http.Request ) {
344
339
token := r .Header .Get ("token" )
345
340
userId , err := handler .userAuthService .GetLoggedInUser (r )
@@ -361,14 +356,10 @@ func (handler BulkUpdateRestHandlerImpl) BulkDeploy(w http.ResponseWriter, r *ht
361
356
common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
362
357
return
363
358
}
359
+ ctx := util .NewRequestCtx (r .Context ())
364
360
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 )
372
363
if err != nil {
373
364
common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
374
365
return
0 commit comments