Skip to content

Commit 9a925a8

Browse files
authored
feat: build edit v1beta2 (#6694)
* feat: build edit v2 refactoring * feat: added migration support for build edit v2 new table * chore: updated method names * chore: common refactoring for bulk edit v2 * feat: added dryrun bulk edit v1beta2 * chore: oss ent refactorings * chore: code restructurings * feat: add JSONPathVersion and enhance optional pointer handling in templates * feat: implement GetLatestEnvironmentProperties method in ChartService and refactor PropertiesConfigService * updated migration script * updated migration script * feat: update schema and SQL migration for batch API versioning and kind enumeration * feat: enhance bulk edit functionality for v1beta2 with improved selectors and detailed schema * feat: feat: refine bulk edit documentation for v1beta2 by improving field descriptions and removing redundant comments * feat: refactor bulk edit SQL migration for improved structure and clarity * feat: fix error handling in bulk update response and utility function * fix: JSON schema for selectors * chore: review comments incorporated * chore: review comments incorporated * feat: update receiver type for EnvConfigOverrideReadServiceImpl methods to pointer * feat: enhance bulk edit script for v1beta2 with detailed introduction and improved structure * chore: rename bulk edit SQL migration files for consistency
1 parent 716b841 commit 9a925a8

File tree

273 files changed

+85305
-569
lines changed

Some content is hidden

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

273 files changed

+85305
-569
lines changed

Wire.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ import (
103103
app2 "github.com/devtron-labs/devtron/internal/sql/repository/app"
104104
appStatusRepo "github.com/devtron-labs/devtron/internal/sql/repository/appStatus"
105105
appWorkflow2 "github.com/devtron-labs/devtron/internal/sql/repository/appWorkflow"
106-
"github.com/devtron-labs/devtron/internal/sql/repository/bulkUpdate"
107106
"github.com/devtron-labs/devtron/internal/sql/repository/chartConfig"
108107
dockerRegistryRepository "github.com/devtron-labs/devtron/internal/sql/repository/dockerRegistry"
109108
"github.com/devtron-labs/devtron/internal/sql/repository/helper"
@@ -128,6 +127,7 @@ import (
128127
"github.com/devtron-labs/devtron/pkg/build"
129128
"github.com/devtron-labs/devtron/pkg/build/artifacts/imageTagging"
130129
pipeline6 "github.com/devtron-labs/devtron/pkg/build/pipeline"
130+
repository11 "github.com/devtron-labs/devtron/pkg/bulkAction/repository"
131131
"github.com/devtron-labs/devtron/pkg/bulkAction/service"
132132
"github.com/devtron-labs/devtron/pkg/chart"
133133
"github.com/devtron-labs/devtron/pkg/chart/gitOpsConfig"
@@ -268,8 +268,8 @@ func InitializeApp() (*App, error) {
268268
app.NewAppService,
269269
wire.Bind(new(app.AppService), new(*app.AppServiceImpl)),
270270

271-
bulkUpdate.NewBulkUpdateRepository,
272-
wire.Bind(new(bulkUpdate.BulkUpdateRepository), new(*bulkUpdate.BulkUpdateRepositoryImpl)),
271+
repository11.NewBulkEditRepository,
272+
wire.Bind(new(repository11.BulkEditRepository), new(*repository11.BulkEditRepositoryImpl)),
273273

274274
chartConfig.NewEnvConfigOverrideRepository,
275275
wire.Bind(new(chartConfig.EnvConfigOverrideRepository), new(*chartConfig.EnvConfigOverrideRepositoryImpl)),
@@ -372,6 +372,8 @@ func InitializeApp() (*App, error) {
372372
wire.Bind(new(chart.ChartService), new(*chart.ChartServiceImpl)),
373373
read2.NewChartReadServiceImpl,
374374
wire.Bind(new(read2.ChartReadService), new(*read2.ChartReadServiceImpl)),
375+
376+
service.NewBulkUpdateServiceEntImpl,
375377
service.NewBulkUpdateServiceImpl,
376378
wire.Bind(new(service.BulkUpdateService), new(*service.BulkUpdateServiceImpl)),
377379

api/restHandler/BulkUpdateRestHandler.go

Lines changed: 48 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package restHandler
1919
import (
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

5049
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
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+
6274
type 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

206214
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
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+
343338
func (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
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright (c) 2024. Devtron Inc.
3+
*/
4+
5+
package restHandler
6+
7+
import (
8+
"net/http"
9+
)
10+
11+
type BulkEditV1Beta2RestHandlerEnt interface {
12+
}
13+
14+
func (handler BulkUpdateRestHandlerImpl) BulkHibernateV1(w http.ResponseWriter, r *http.Request) {
15+
handler.BulkHibernate(w, r) // For backward compatibility, redirect to the new handler
16+
}

api/router/BulkUpdateRouter.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,31 @@ func NewBulkUpdateRouterImpl(handler restHandler.BulkUpdateRestHandler) *BulkUpd
3535
}
3636
return router
3737
}
38+
3839
func (router BulkUpdateRouterImpl) initBulkUpdateRouter(bulkRouter *mux.Router) {
39-
bulkRouter.Path("/{apiVersion}/{kind}/readme").HandlerFunc(router.restHandler.FindBulkUpdateReadme).Methods("GET")
40-
bulkRouter.Path("/v1beta1/application/dryrun").HandlerFunc(router.restHandler.GetImpactedAppsName).Methods("POST")
41-
bulkRouter.Path("/v1beta1/application").HandlerFunc(router.restHandler.BulkUpdate).Methods("POST")
40+
bulkRouter.Path("/{apiVersion}/{kind}/readme").HandlerFunc(router.restHandler.GetBulkEditConfig).Methods("GET")
41+
// Initialize v1beta1 routes
42+
router.initV1beta1Router(bulkRouter)
43+
// Initialize v1beta2 routes
44+
router.initV1beta2Router(bulkRouter)
45+
// Initialize Ent routes
46+
router.initBulkUpdateRouterEnt(bulkRouter)
47+
}
48+
49+
func (router BulkUpdateRouterImpl) initV1beta1Router(bulkRouter *mux.Router) {
50+
bulkRouter.Path("/v1beta1/application/dryrun").HandlerFunc(router.restHandler.DryRunBulkEdit).Methods("POST")
51+
bulkRouter.Path("/v1beta1/application").HandlerFunc(router.restHandler.BulkEdit).Methods("POST")
4252

4353
bulkRouter.Path("/v1beta1/hibernate").HandlerFunc(router.restHandler.BulkHibernate).Methods("POST")
4454
bulkRouter.Path("/v1beta1/unhibernate").HandlerFunc(router.restHandler.BulkUnHibernate).Methods("POST")
45-
bulkRouter.Path("/v1beta2/hibernate").HandlerFunc(router.restHandler.BulkHibernate).Methods("POST")
46-
bulkRouter.Path("/v1beta2/unhibernate").HandlerFunc(router.restHandler.BulkUnHibernate).Methods("POST")
4755
bulkRouter.Path("/v1beta1/deploy").HandlerFunc(router.restHandler.BulkDeploy).Methods("POST")
4856
bulkRouter.Path("/v1beta1/build").HandlerFunc(router.restHandler.BulkBuildTrigger).Methods("POST")
4957
bulkRouter.Path("/v1beta1/cd-pipeline").HandlerFunc(router.restHandler.HandleCdPipelineBulkAction).Methods("POST")
58+
}
5059

60+
func (router BulkUpdateRouterImpl) initV1beta2Router(bulkRouter *mux.Router) {
61+
bulkRouter.Path("/v1beta2/unhibernate").HandlerFunc(router.restHandler.BulkUnHibernate).Methods("POST")
62+
bulkRouter.Path("/v1beta2/hibernate").HandlerFunc(router.restHandler.BulkHibernateV1).Methods("POST")
63+
// Initialize v1beta2 routes for Ent
64+
router.initV1beta2RouterEnt(bulkRouter)
5165
}

0 commit comments

Comments
 (0)