Skip to content

Commit f9e40a2

Browse files
committed
oss ent change
1 parent cc2481c commit f9e40a2

File tree

3 files changed

+48
-30
lines changed

3 files changed

+48
-30
lines changed

api/restHandler/app/workflow/AppWorkflowRestHandler.go

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,6 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
188188
return
189189
}
190190
token := r.Header.Get("token")
191-
app, err := impl.pipelineBuilder.GetApp(appId)
192-
if err != nil {
193-
impl.Logger.Errorw("bad request", "err", err)
194-
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
195-
return
196-
}
197-
198191
v := r.URL.Query()
199192
envIdsString := v.Get("envIds")
200193
envIds := make([]int, 0)
@@ -207,16 +200,15 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
207200
}
208201

209202
// RBAC enforcer applying
210-
object := impl.enforcerUtil.GetAppRBACName(app.AppName)
203+
object := impl.enforcerUtil.GetAppRBACNameByAppId(appId)
211204
impl.Logger.Debugw("rbac object for other environment list", "object", object)
212205
ok := impl.enforcerUtil.CheckAppRbacForAppOrJob(token, object, casbin.ActionGet)
213206
if !ok {
214207
common.WriteJsonResp(w, err, "unauthorized user", http.StatusForbidden)
215208
return
216209
}
217210
//RBAC enforcer Ends
218-
workflows := make(map[string]interface{})
219-
workflowsList, err := impl.appWorkflowService.FindAppWorkflows(appId)
211+
workflowsListResp, appType, err := impl.appWorkflowService.FindAppWorkflowsListResolvedResp(appId)
220212
if err != nil {
221213
impl.Logger.Errorw("error in fetching workflows for app", "err", err)
222214
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -231,7 +223,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
231223
return
232224
}
233225
triggerViewPayload := &bean2.TriggerViewWorkflowConfig{
234-
Workflows: workflowsList,
226+
Workflows: workflowsListResp.Workflows,
235227
CdPipelines: cdPipelineWfData,
236228
}
237229
queryParam := bean2.NewWorkflowsFilterQuery().WithEnvIds(envIds)
@@ -242,12 +234,10 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
242234
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
243235
return
244236
}
245-
workflowsList = response.Workflows
237+
workflowsListResp.Workflows = response.Workflows
246238
}
247239

248-
workflows["appId"] = app.Id
249-
workflows["appName"] = app.AppName
250-
if len(workflowsList) > 0 && app.AppType == helper.Job {
240+
if len(workflowsListResp.Workflows) > 0 && appType == helper.Job {
251241
// RBAC
252242

253243
var workflowNames []string
@@ -256,15 +246,15 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
256246
var rbacObjects []string
257247
workNameObjectMap := make(map[string]bean2.AppWorkflowDto)
258248

259-
for _, workflow := range workflowsList {
249+
for _, workflow := range workflowsListResp.Workflows {
260250
workflowNames = append(workflowNames, workflow.Name)
261251
workflowIds = append(workflowIds, workflow.Id)
262252
}
263253
workflowIdToObjectMap := impl.enforcerUtil.GetAllWorkflowRBACObjectsByAppId(appId, workflowNames, workflowIds)
264254
itr := 0
265255
for _, val := range workflowIdToObjectMap {
266256
rbacObjects = append(rbacObjects, val)
267-
workNameObjectMap[val] = workflowsList[itr]
257+
workNameObjectMap[val] = workflowsListResp.Workflows[itr]
268258
itr++
269259
}
270260

@@ -277,20 +267,8 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r
277267
if len(updatedWorkflowList) == 0 {
278268
updatedWorkflowList = []bean2.AppWorkflowDto{}
279269
}
280-
workflows[bean3.Workflows] = updatedWorkflowList
281-
} else if len(workflowsList) > 0 {
282-
workflows[bean3.Workflows] = workflowsList
283-
} else {
284-
workflows[bean3.Workflows] = []bean2.AppWorkflowDto{}
285-
}
286-
isAppLevelGitOpsConfigured, err := impl.chartService.IsGitOpsRepoConfiguredForDevtronApp(appId)
287-
if err != nil && !util.IsErrNoRows(err) {
288-
impl.Logger.Errorw("service err, IsGitOpsRepoConfiguredForDevtronApp", "appId", appId, "envIds", envIds, "err", err)
289-
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
290-
return
291270
}
292-
workflows["isGitOpsRepoNotConfigured"] = !isAppLevelGitOpsConfigured
293-
common.WriteJsonResp(w, nil, workflows, http.StatusOK)
271+
common.WriteJsonResp(w, nil, workflowsListResp, http.StatusOK)
294272
}
295273

296274
func (impl AppWorkflowRestHandlerImpl) FindAllWorkflows(w http.ResponseWriter, r *http.Request) {

pkg/appWorkflow/AppWorkflowService.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package appWorkflow
1919
import (
2020
"errors"
2121
"fmt"
22+
"github.com/devtron-labs/devtron/internal/sql/repository/helper"
2223
bean4 "github.com/devtron-labs/devtron/pkg/appWorkflow/bean"
2324
"github.com/devtron-labs/devtron/pkg/deployment/common"
2425
util2 "github.com/devtron-labs/devtron/util"
@@ -46,6 +47,7 @@ import (
4647

4748
type AppWorkflowService interface {
4849
CreateAppWorkflow(req bean4.AppWorkflowDto) (bean4.AppWorkflowDto, error)
50+
FindAppWorkflowsListResolvedResp(appId int) (resp bean4.AppWorkflowListRespDto, appType helper.AppType, err error)
4951
FindAppWorkflows(appId int) ([]bean4.AppWorkflowDto, error)
5052
FindAppWorkflowById(Id int, appId int) (bean4.AppWorkflowDto, error)
5153
DeleteAppWorkflow(appWorkflowId int, userId int32) error
@@ -79,13 +81,15 @@ type AppWorkflowServiceImpl struct {
7981
userAuthService user.UserAuthService
8082
chartService chart.ChartService
8183
deploymentConfigService common.DeploymentConfigService
84+
pipelineBuilder pipeline.PipelineBuilder
8285
}
8386

8487
func NewAppWorkflowServiceImpl(logger *zap.SugaredLogger, appWorkflowRepository appWorkflow.AppWorkflowRepository,
8588
ciCdPipelineOrchestrator pipeline.CiCdPipelineOrchestrator, ciPipelineRepository pipelineConfig.CiPipelineRepository,
8689
pipelineRepository pipelineConfig.PipelineRepository, enforcerUtil rbac.EnforcerUtil, resourceGroupService resourceGroup2.ResourceGroupService,
8790
appRepository appRepository.AppRepository, userAuthService user.UserAuthService, chartService chart.ChartService,
8891
deploymentConfigService common.DeploymentConfigService,
92+
pipelineBuilder pipeline.PipelineBuilder,
8993
) *AppWorkflowServiceImpl {
9094
return &AppWorkflowServiceImpl{
9195
Logger: logger,
@@ -99,6 +103,7 @@ func NewAppWorkflowServiceImpl(logger *zap.SugaredLogger, appWorkflowRepository
99103
userAuthService: userAuthService,
100104
chartService: chartService,
101105
deploymentConfigService: deploymentConfigService,
106+
pipelineBuilder: pipelineBuilder,
102107
}
103108
}
104109

@@ -153,6 +158,34 @@ func (impl AppWorkflowServiceImpl) CreateAppWorkflow(req bean4.AppWorkflowDto) (
153158
return req, nil
154159
}
155160

161+
func (impl AppWorkflowServiceImpl) FindAppWorkflowsListResolvedResp(appId int) (resp bean4.AppWorkflowListRespDto, appType helper.AppType, err error) {
162+
app, err := impl.pipelineBuilder.GetApp(appId)
163+
if err != nil {
164+
impl.Logger.Errorw("error, GetApp", "appId", appId, "err", err)
165+
return resp, appType, err
166+
}
167+
workflowsList, err := impl.FindAppWorkflows(appId)
168+
if err != nil {
169+
impl.Logger.Errorw("error in fetching workflows for app", "appId", appId, "err", err)
170+
return resp, appType, err
171+
}
172+
isAppLevelGitOpsConfigured, err := impl.chartService.IsGitOpsRepoConfiguredForDevtronApp(appId)
173+
if err != nil && !util.IsErrNoRows(err) {
174+
impl.Logger.Errorw("service err, IsGitOpsRepoConfiguredForDevtronApp", "appId", appId, "err", err)
175+
return resp, appType, err
176+
}
177+
resp.AppId = app.Id
178+
resp.AppName = app.AppName
179+
resp.Workflows = workflowsList
180+
resp.IsGitOpsRepoNotConfigured = !isAppLevelGitOpsConfigured
181+
if len(workflowsList) > 0 {
182+
resp.Workflows = workflowsList
183+
} else {
184+
resp.Workflows = []bean4.AppWorkflowDto{}
185+
}
186+
return resp, app.AppType, nil
187+
}
188+
156189
func (impl AppWorkflowServiceImpl) FindAppWorkflows(appId int) ([]bean4.AppWorkflowDto, error) {
157190
appWorkflows, err := impl.appWorkflowRepository.FindByAppId(appId)
158191
if err != nil && err != pg.ErrNoRows {

pkg/appWorkflow/bean/bean.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ type WorkflowComponents struct {
5555
CdPipelineIds []int
5656
}
5757

58+
type AppWorkflowListRespDto struct {
59+
Workflows []AppWorkflowDto `json:"workflows"`
60+
AppId int `json:"appId"`
61+
AppName string `json:"appName"`
62+
IsGitOpsRepoNotConfigured bool `json:"isGitOpsRepoNotConfigured"`
63+
}
64+
5865
type AppWorkflowDto struct {
5966
Id int `json:"id,omitempty"`
6067
Name string `json:"name"`

0 commit comments

Comments
 (0)