Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ func (impl PipelineConfigRepositoryImpl) Delete(pipelineStrategy *PipelineStrate
}

func (impl PipelineConfigRepositoryImpl) GetAllStrategyByPipelineIds(pipelineIds []int) ([]*PipelineStrategy, error) {
if len(pipelineIds) == 0 {
return nil, errors.NotFoundf("pipeline strategies")
}
var pipelineStrategies []*PipelineStrategy
err := impl.dbConnection.
Model(&pipelineStrategies).
Expand Down
56 changes: 45 additions & 11 deletions pkg/pipeline/PipelineBuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -2733,8 +2733,50 @@ func (impl PipelineBuilderImpl) filterDeploymentTemplate(strategyKey string, pip
return pipelineStrategyJson, nil
}

func (impl PipelineBuilderImpl) getStrategiesMapping(dbPipelineIds []int) (map[int][]*chartConfig.PipelineStrategy, error) {
strategiesMapping := make(map[int][]*chartConfig.PipelineStrategy)
strategiesByPipelineIds, err := impl.pipelineConfigRepository.GetAllStrategyByPipelineIds(dbPipelineIds)
if err != nil && !errors.IsNotFound(err) {
impl.logger.Errorw("error in fetching strategies by pipelineIds", "PipelineIds", dbPipelineIds, "err", err)
return strategiesMapping, err
}
for _, strategy := range strategiesByPipelineIds {
strategiesMapping[strategy.PipelineId] = append(strategiesMapping[strategy.PipelineId], strategy)
}
return strategiesMapping, nil
}

func (impl PipelineBuilderImpl) GetTriggerViewCdPipelinesForApp(appId int) (cdPipelines *bean.CdPipelines, err error) {
return impl.ciCdPipelineOrchestrator.GetCdPipelinesForApp(appId)
triggerViewCdPipelinesResp, err := impl.ciCdPipelineOrchestrator.GetCdPipelinesForApp(appId)
if err != nil {
impl.logger.Errorw("error in fetching triggerViewCdPipelinesResp by appId", "err", err, "appId", appId)
return triggerViewCdPipelinesResp, err
}
var dbPipelineIds []int
for _, dbPipeline := range triggerViewCdPipelinesResp.Pipelines {
dbPipelineIds = append(dbPipelineIds, dbPipeline.Id)
}

//construct strategiesMapping to get all strategies against pipelineId
strategiesMapping, err := impl.getStrategiesMapping(dbPipelineIds)
if err != nil {
return triggerViewCdPipelinesResp, err
}
for _, dbPipeline := range triggerViewCdPipelinesResp.Pipelines {
var strategies []*chartConfig.PipelineStrategy
var deploymentTemplate chartRepoRepository.DeploymentStrategy
if len(strategiesMapping[dbPipeline.Id]) != 0 {
strategies = strategiesMapping[dbPipeline.Id]
}
for _, item := range strategies {
if item.Default {
deploymentTemplate = item.Strategy
}
}
dbPipeline.DeploymentTemplate = deploymentTemplate
}

return triggerViewCdPipelinesResp, err
}

func (impl PipelineBuilderImpl) GetCdPipelinesForApp(appId int) (cdPipelines *bean.CdPipelines, err error) {
Expand All @@ -2753,7 +2795,6 @@ func (impl PipelineBuilderImpl) GetCdPipelinesForApp(appId int) (cdPipelines *be
return cdPipelines, nil
}
envMapping := make(map[int]*repository2.Environment)
strategiesMapping := make(map[int][]*chartConfig.PipelineStrategy)
appWorkflowMapping := make(map[int]*appWorkflow.AppWorkflowMapping)

envs, err := impl.environmentRepository.FindByIds(envIds)
Expand All @@ -2765,17 +2806,10 @@ func (impl PipelineBuilderImpl) GetCdPipelinesForApp(appId int) (cdPipelines *be
for _, env := range envs {
envMapping[env.Id] = env
}

strategiesByPipelineIds, err := impl.pipelineConfigRepository.GetAllStrategyByPipelineIds(dbPipelineIds)
if err != nil && errors.IsNotFound(err) {
impl.logger.Errorw("error in fetching strategies by pipelineIds", "err", err)
strategiesMapping, err := impl.getStrategiesMapping(dbPipelineIds)
if err != nil {
return cdPipelines, err
}
//creating map for dbPipelineId and it's respective strategies
for _, strategy := range strategiesByPipelineIds {
strategiesMapping[strategy.PipelineId] = append(strategiesMapping[strategy.PipelineId], strategy)
}

appWorkflowMappings, err := impl.appWorkflowRepository.FindByCDPipelineIds(dbPipelineIds)
if err != nil {
impl.logger.Errorw("error in fetching app workflow mappings by pipelineIds", "err", err)
Expand Down