Skip to content

Commit 3aa7e42

Browse files
env driven (#5274)
1 parent e34b47c commit 3aa7e42

File tree

6 files changed

+60
-22
lines changed

6 files changed

+60
-22
lines changed

Wire.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,7 @@ func InitializeApp() (*App, error) {
750750

751751
app.NewAppCrudOperationServiceImpl,
752752
wire.Bind(new(app.AppCrudOperationService), new(*app.AppCrudOperationServiceImpl)),
753+
app.GetCrudOperationServiceConfig,
753754
pipelineConfig.NewAppLabelRepositoryImpl,
754755
wire.Bind(new(pipelineConfig.AppLabelRepository), new(*pipelineConfig.AppLabelRepositoryImpl)),
755756

cmd/external-app/wire.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build wireinject
2+
// +build wireinject
3+
14
/*
25
* Copyright (c) 2024. Devtron Inc.
36
*
@@ -14,9 +17,6 @@
1417
* limitations under the License.
1518
*/
1619

17-
//go:build wireinject
18-
// +build wireinject
19-
2020
package main
2121

2222
import (
@@ -147,6 +147,7 @@ func InitializeApp() (*App, error) {
147147
wire.Bind(new(app.AppCrudOperationService), new(*app.AppCrudOperationServiceImpl)),
148148
pipelineConfig.NewAppLabelRepositoryImpl,
149149
wire.Bind(new(pipelineConfig.AppLabelRepository), new(*pipelineConfig.AppLabelRepositoryImpl)),
150+
app.GetCrudOperationServiceConfig,
150151
// acd session client bind with authenticator login
151152
wire.Bind(new(session.ServiceClient), new(*middleware.LoginService)),
152153
connector.NewPumpImpl,

cmd/external-app/wire_gen.go

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

env_gen.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@
195195
| PIPELINE_DEGRADED_TIME | 10 | |
196196
| PLUGIN_NAME | Pull images from container repository | |
197197
| PRE_CI_CACHE_PATH | /devtroncd-cache | |
198+
| PROPAGATE_EXTRA_LABELS | false | |
198199
| PROXY_SERVICE_CONFIG | {} | |
199200
| REQ_CI_CPU | 0.5 | |
200201
| REQ_CI_MEM | 3G | |

pkg/app/AppCrudOperationService.go

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package app
1919
import (
2020
"encoding/json"
2121
"fmt"
22+
"github.com/caarlos0/env"
2223
client "github.com/devtron-labs/devtron/api/helm-app/service"
2324
"github.com/devtron-labs/devtron/internal/util"
2425
"github.com/devtron-labs/devtron/pkg/appStore/installedApp/service/EAMode"
@@ -46,6 +47,10 @@ const (
4647
ZERO_ENVIRONMENT_ID = 0
4748
)
4849

50+
type CrudOperationServiceConfig struct {
51+
PropagateExtraLabels bool `env:"PROPAGATE_EXTRA_LABELS" envDefault:"false"`
52+
}
53+
4954
type AppCrudOperationService interface {
5055
Create(request *bean.AppLabelDto, tx *pg.Tx) (*bean.AppLabelDto, error)
5156
FindById(id int) (*bean.AppLabelDto, error)
@@ -60,24 +65,36 @@ type AppCrudOperationService interface {
6065
GetAppListByTeamIds(teamIds []int, appType string) ([]*TeamAppBean, error)
6166
}
6267

68+
func GetCrudOperationServiceConfig() (*CrudOperationServiceConfig, error) {
69+
cfg := &CrudOperationServiceConfig{}
70+
err := env.Parse(cfg)
71+
if err != nil {
72+
fmt.Println("failed to parse server CrudOperationServiceConfig,: " + err.Error())
73+
return nil, err
74+
}
75+
return cfg, nil
76+
}
77+
6378
type AppCrudOperationServiceImpl struct {
64-
logger *zap.SugaredLogger
65-
appLabelRepository pipelineConfig.AppLabelRepository
66-
appRepository appRepository.AppRepository
67-
userRepository repository.UserRepository
68-
installedAppRepository repository2.InstalledAppRepository
69-
genericNoteService genericNotes.GenericNoteService
70-
gitMaterialRepository pipelineConfig.MaterialRepository
71-
installedAppDbService EAMode.InstalledAppDBService
79+
logger *zap.SugaredLogger
80+
appLabelRepository pipelineConfig.AppLabelRepository
81+
appRepository appRepository.AppRepository
82+
userRepository repository.UserRepository
83+
installedAppRepository repository2.InstalledAppRepository
84+
genericNoteService genericNotes.GenericNoteService
85+
gitMaterialRepository pipelineConfig.MaterialRepository
86+
installedAppDbService EAMode.InstalledAppDBService
87+
crudOperationServiceConfig *CrudOperationServiceConfig
7288
}
7389

7490
func NewAppCrudOperationServiceImpl(appLabelRepository pipelineConfig.AppLabelRepository,
7591
logger *zap.SugaredLogger, appRepository appRepository.AppRepository, userRepository repository.UserRepository,
7692
installedAppRepository repository2.InstalledAppRepository,
7793
genericNoteService genericNotes.GenericNoteService,
7894
gitMaterialRepository pipelineConfig.MaterialRepository,
79-
installedAppDbService EAMode.InstalledAppDBService) *AppCrudOperationServiceImpl {
80-
return &AppCrudOperationServiceImpl{
95+
installedAppDbService EAMode.InstalledAppDBService,
96+
crudOperationServiceConfig *CrudOperationServiceConfig) *AppCrudOperationServiceImpl {
97+
impl := &AppCrudOperationServiceImpl{
8198
appLabelRepository: appLabelRepository,
8299
logger: logger,
83100
appRepository: appRepository,
@@ -87,6 +104,12 @@ func NewAppCrudOperationServiceImpl(appLabelRepository pipelineConfig.AppLabelRe
87104
gitMaterialRepository: gitMaterialRepository,
88105
installedAppDbService: installedAppDbService,
89106
}
107+
crudOperationServiceConfig, err := GetCrudOperationServiceConfig()
108+
if err != nil {
109+
return nil
110+
}
111+
impl.crudOperationServiceConfig = crudOperationServiceConfig
112+
return impl
90113
}
91114

92115
type AppBean struct {
@@ -641,14 +664,18 @@ func (impl AppCrudOperationServiceImpl) GetAppLabelsForDeployment(appId int, app
641664
impl.logger.Errorw("error in getting app labels from db using appId", "appId", appId, "err", err)
642665
return nil, err
643666
}
644-
extraAppLabelsToPropagate, err := impl.getExtraAppLabelsToPropagate(appId, appName, envName)
645-
if err != nil {
646-
impl.logger.Errorw("error in getting extra app labels to propagate", "appName", appName, "envName", envName, "err", err)
647-
return nil, err
667+
mergedAppLabels := appLabelsMapFromDb
668+
669+
if impl.crudOperationServiceConfig.PropagateExtraLabels {
670+
extraAppLabelsToPropagate, err := impl.getExtraAppLabelsToPropagate(appId, appName, envName)
671+
if err != nil {
672+
impl.logger.Errorw("error in getting extra app labels to propagate", "appName", appName, "envName", envName, "err", err)
673+
return nil, err
674+
}
675+
//when app labels are provided by the user and share the same label key names as those in the extraAppLabelsToPropagate map,
676+
//priority will be given to the user-provided label keys.
677+
mergedAppLabels = MergeChildMapToParentMap(appLabelsMapFromDb, extraAppLabelsToPropagate)
648678
}
649-
//when app labels are provided by the user and share the same label key names as those in the extraAppLabelsToPropagate map,
650-
//priority will be given to the user-provided label keys.
651-
mergedAppLabels := MergeChildMapToParentMap(appLabelsMapFromDb, extraAppLabelsToPropagate)
652679

653680
appLabelJson.Labels = mergedAppLabels
654681
appLabelByte, err := json.Marshal(appLabelJson)

wire_gen.go

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)