@@ -22,6 +22,9 @@ import (
22
22
errors2 "errors"
23
23
"fmt"
24
24
"github.com/devtron-labs/devtron/internal/util"
25
+ bean5 "github.com/devtron-labs/devtron/pkg/auth/user/bean"
26
+ chartService "github.com/devtron-labs/devtron/pkg/chart"
27
+ bean3 "github.com/devtron-labs/devtron/pkg/chart/bean"
25
28
"github.com/devtron-labs/devtron/pkg/cluster/environment/repository"
26
29
"github.com/devtron-labs/devtron/pkg/deployment/common"
27
30
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deployedAppMetrics"
@@ -47,6 +50,7 @@ import (
47
50
)
48
51
49
52
type PropertiesConfigService interface {
53
+ CreateEnvironmentPropertiesAndBaseIfNeeded (ctx context.Context , appId int , environmentProperties * bean.EnvironmentProperties ) (* bean.EnvironmentProperties , error )
50
54
CreateEnvironmentProperties (appId int , propertiesRequest * bean.EnvironmentProperties ) (* bean.EnvironmentProperties , error )
51
55
UpdateEnvironmentProperties (appId int , propertiesRequest * bean.EnvironmentProperties , userId int32 ) (* bean.EnvironmentProperties , error )
52
56
//create environment entry for each new environment
@@ -71,6 +75,7 @@ type PropertiesConfigServiceImpl struct {
71
75
deployedAppMetricsService deployedAppMetrics.DeployedAppMetricsService
72
76
envConfigOverrideReadService read.EnvConfigOverrideService
73
77
deploymentConfigService common.DeploymentConfigService
78
+ chartService chartService.ChartService
74
79
}
75
80
76
81
func NewPropertiesConfigServiceImpl (logger * zap.SugaredLogger ,
@@ -81,7 +86,8 @@ func NewPropertiesConfigServiceImpl(logger *zap.SugaredLogger,
81
86
scopedVariableManager variables.ScopedVariableManager ,
82
87
deployedAppMetricsService deployedAppMetrics.DeployedAppMetricsService ,
83
88
envConfigOverrideReadService read.EnvConfigOverrideService ,
84
- deploymentConfigService common.DeploymentConfigService ) * PropertiesConfigServiceImpl {
89
+ deploymentConfigService common.DeploymentConfigService ,
90
+ chartService chartService.ChartService ) * PropertiesConfigServiceImpl {
85
91
return & PropertiesConfigServiceImpl {
86
92
logger : logger ,
87
93
envConfigRepo : envConfigRepo ,
@@ -92,6 +98,7 @@ func NewPropertiesConfigServiceImpl(logger *zap.SugaredLogger,
92
98
deployedAppMetricsService : deployedAppMetricsService ,
93
99
envConfigOverrideReadService : envConfigOverrideReadService ,
94
100
deploymentConfigService : deploymentConfigService ,
101
+ chartService : chartService ,
95
102
}
96
103
97
104
}
@@ -214,6 +221,39 @@ func (impl PropertiesConfigServiceImpl) FetchEnvProperties(appId, envId, chartRe
214
221
return impl .envConfigOverrideReadService .GetByAppIdEnvIdAndChartRefId (appId , envId , chartRefId )
215
222
}
216
223
224
+ func (impl PropertiesConfigServiceImpl ) CreateEnvironmentPropertiesAndBaseIfNeeded (ctx context.Context , appId int , environmentProperties * bean.EnvironmentProperties ) (* bean.EnvironmentProperties , error ) {
225
+ createResp , err := impl .CreateEnvironmentProperties (appId , environmentProperties )
226
+ if err != nil {
227
+ if err .Error () == bean5 .NOCHARTEXIST {
228
+ appMetrics := false
229
+ if environmentProperties .AppMetrics != nil {
230
+ appMetrics = * environmentProperties .AppMetrics
231
+ }
232
+ templateRequest := bean3.TemplateRequest {
233
+ AppId : appId ,
234
+ ChartRefId : environmentProperties .ChartRefId ,
235
+ ValuesOverride : []byte ("{}" ),
236
+ UserId : environmentProperties .UserId ,
237
+ IsAppMetricsEnabled : appMetrics ,
238
+ }
239
+ _ , err = impl .chartService .CreateChartFromEnvOverride (templateRequest , ctx )
240
+ if err != nil {
241
+ impl .logger .Errorw ("service err, EnvConfigOverrideCreate" , "err" , err , "payload" , environmentProperties )
242
+ return nil , err
243
+ }
244
+ createResp , err = impl .CreateEnvironmentProperties (appId , environmentProperties )
245
+ if err != nil {
246
+ impl .logger .Errorw ("service err, EnvConfigOverrideCreate" , "err" , err , "payload" , environmentProperties )
247
+ return nil , err
248
+ }
249
+ } else {
250
+ impl .logger .Errorw ("service err, EnvConfigOverrideCreate" , "err" , err , "payload" , environmentProperties )
251
+ return nil , err
252
+ }
253
+ }
254
+ return createResp , nil
255
+ }
256
+
217
257
func (impl PropertiesConfigServiceImpl ) CreateEnvironmentProperties (appId int , environmentProperties * bean.EnvironmentProperties ) (* bean.EnvironmentProperties , error ) {
218
258
chart , err := impl .chartRepo .FindChartByAppIdAndRefId (appId , environmentProperties .ChartRefId )
219
259
if err != nil && ! errors2 .Is (err , pg .ErrNoRows ) {
0 commit comments