Skip to content

Commit 530301e

Browse files
committed
add template version and isAppMetrics enabled in case of deployment template and some more metadata added for pipeline strategy
1 parent fa52171 commit 530301e

File tree

5 files changed

+98
-25
lines changed

5 files changed

+98
-25
lines changed

pkg/configDiff/DeploymentConfigurationService.go

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
bean2 "github.com/devtron-labs/devtron/pkg/configDiff/bean"
1414
"github.com/devtron-labs/devtron/pkg/configDiff/helper"
1515
"github.com/devtron-labs/devtron/pkg/configDiff/utils"
16+
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deploymentTemplate/chartRef"
1617
"github.com/devtron-labs/devtron/pkg/generateManifest"
1718
"github.com/devtron-labs/devtron/pkg/pipeline"
1819
"github.com/devtron-labs/devtron/pkg/pipeline/adapter"
@@ -45,6 +46,7 @@ type DeploymentConfigurationServiceImpl struct {
4546
scopedVariableManager variables.ScopedVariableCMCSManager
4647
configMapRepository chartConfig.ConfigMapRepository
4748
deploymentConfigService pipeline.PipelineDeploymentConfigService
49+
chartRefService chartRef.ChartRefService
4850
}
4951

5052
func NewDeploymentConfigurationServiceImpl(logger *zap.SugaredLogger,
@@ -59,6 +61,7 @@ func NewDeploymentConfigurationServiceImpl(logger *zap.SugaredLogger,
5961
scopedVariableManager variables.ScopedVariableCMCSManager,
6062
configMapRepository chartConfig.ConfigMapRepository,
6163
deploymentConfigService pipeline.PipelineDeploymentConfigService,
64+
chartRefService chartRef.ChartRefService,
6265
) (*DeploymentConfigurationServiceImpl, error) {
6366
deploymentConfigurationService := &DeploymentConfigurationServiceImpl{
6467
logger: logger,
@@ -73,6 +76,7 @@ func NewDeploymentConfigurationServiceImpl(logger *zap.SugaredLogger,
7376
scopedVariableManager: scopedVariableManager,
7477
configMapRepository: configMapRepository,
7578
deploymentConfigService: deploymentConfigService,
79+
chartRefService: chartRefService,
7680
}
7781

7882
return deploymentConfigurationService, nil
@@ -193,7 +197,8 @@ func (impl *DeploymentConfigurationServiceImpl) getDeploymentHistoryConfig(ctx c
193197
WithConfigData(deploymentJson).
194198
WithResourceType(bean.DeploymentTemplate).
195199
WithVariableSnapshot(map[string]map[string]string{bean.DeploymentTemplate.ToString(): variableSnapshotMap}).
196-
WithResolvedValue(json.RawMessage(resolvedTemplate))
200+
WithResolvedValue(json.RawMessage(resolvedTemplate)).
201+
WithDeploymentConfigMetadata(deploymentHistory.TemplateVersion, deploymentHistory.IsAppMetricsEnabled)
197202
return deploymentConfig, nil
198203
}
199204

@@ -209,7 +214,10 @@ func (impl *DeploymentConfigurationServiceImpl) getPipelineStrategyConfigHistory
209214
impl.logger.Errorw("getDeploymentTemplateForEnvLevel, error in unmarshalling string pipelineStrategyHistory data into json Raw message", "pipelineStrategyHistoryConfig", pipelineStrategyHistory.Config, "err", err)
210215
return nil, err
211216
}
212-
pipelineConfig := bean2.NewDeploymentAndCmCsConfig().WithConfigData(pipelineStrategyJson).WithResourceType(bean.PipelineStrategy)
217+
pipelineConfig := bean2.NewDeploymentAndCmCsConfig().
218+
WithConfigData(pipelineStrategyJson).
219+
WithResourceType(bean.PipelineStrategy).
220+
WithPipelineStrategyMetadata(pipelineStrategyHistory.PipelineTriggerType, string(pipelineStrategyHistory.Strategy))
213221
return pipelineConfig, nil
214222
}
215223

@@ -582,9 +590,10 @@ func (impl *DeploymentConfigurationServiceImpl) getPublishedDeploymentConfig(ctx
582590
variableSnapShotMap[bean.DeploymentTemplate.ToString()] = deplTemplateResp.VariableSnapshot
583591

584592
return bean2.NewDeploymentAndCmCsConfig().WithConfigData(deploymentJson).WithResourceType(bean.DeploymentTemplate).
585-
WithResolvedValue(json.RawMessage(deplTemplateResp.ResolvedData)).WithVariableSnapshot(variableSnapShotMap), nil
593+
WithResolvedValue(json.RawMessage(deplTemplateResp.ResolvedData)).WithVariableSnapshot(variableSnapShotMap).
594+
WithDeploymentConfigMetadata(deplTemplateResp.TemplateVersion, deplTemplateResp.IsAppMetricsEnabled), nil
586595
}
587-
deplJson, err := impl.getBaseDeploymentTemplate(appId)
596+
deplMetadata, err := impl.getBaseDeploymentTemplate(appId)
588597
if err != nil {
589598
impl.logger.Errorw("getting base depl. template", "appid", appId, "err", err)
590599
return nil, err
@@ -593,15 +602,16 @@ func (impl *DeploymentConfigurationServiceImpl) getPublishedDeploymentConfig(ctx
593602
AppId: appId,
594603
RequestDataMode: generateManifest.Values,
595604
}
596-
resolvedTemplate, variableSnapshot, err := impl.deploymentTemplateService.ResolveTemplateVariables(ctx, string(deplJson), deploymentTemplateRequest)
605+
resolvedTemplate, variableSnapshot, err := impl.deploymentTemplateService.ResolveTemplateVariables(ctx, string(deplMetadata.DeploymentTemplateJson), deploymentTemplateRequest)
597606
if err != nil {
598607
impl.logger.Errorw("error in getting resolved data for base deployment template", "appid", appId, "err", err)
599608
return nil, err
600609
}
601610

602611
variableSnapShotMap := map[string]map[string]string{bean.DeploymentTemplate.ToString(): variableSnapshot}
603-
return bean2.NewDeploymentAndCmCsConfig().WithConfigData(deplJson).WithResourceType(bean.DeploymentTemplate).
604-
WithResolvedValue(json.RawMessage(resolvedTemplate)).WithVariableSnapshot(variableSnapShotMap), nil
612+
return bean2.NewDeploymentAndCmCsConfig().WithConfigData(deplMetadata.DeploymentTemplateJson).WithResourceType(bean.DeploymentTemplate).
613+
WithResolvedValue(json.RawMessage(resolvedTemplate)).WithVariableSnapshot(variableSnapShotMap).
614+
WithDeploymentConfigMetadata(deplMetadata.TemplateVersion, deplMetadata.IsAppMetricsEnabled), nil
605615
}
606616

607617
func (impl *DeploymentConfigurationServiceImpl) getPublishedConfigData(ctx context.Context, configDataQueryParams *bean2.ConfigDataQueryParams,
@@ -626,14 +636,22 @@ func (impl *DeploymentConfigurationServiceImpl) getPublishedConfigData(ctx conte
626636
return configData, nil
627637
}
628638

629-
func (impl *DeploymentConfigurationServiceImpl) getBaseDeploymentTemplate(appId int) (json.RawMessage, error) {
639+
func (impl *DeploymentConfigurationServiceImpl) getBaseDeploymentTemplate(appId int) (*bean2.DeploymentTemplateMetadata, error) {
630640
deploymentTemplateData, err := impl.chartService.FindLatestChartForAppByAppId(appId)
631641
if err != nil {
632642
impl.logger.Errorw("error in getting base deployment template for appId", "appId", appId, "err", err)
633643
return nil, err
634644
}
635-
636-
return deploymentTemplateData.DefaultAppOverride, nil
645+
_, _, version, _, err := impl.chartRefService.GetRefChart(deploymentTemplateData.ChartRefId)
646+
if err != nil {
647+
impl.logger.Errorw("error in getting chart ref by chartRefId ", "chartRefId", deploymentTemplateData.ChartRefId, "err", err)
648+
return nil, err
649+
}
650+
return &bean2.DeploymentTemplateMetadata{
651+
DeploymentTemplateJson: deploymentTemplateData.DefaultAppOverride,
652+
IsAppMetricsEnabled: deploymentTemplateData.IsAppMetricsEnabled,
653+
TemplateVersion: version,
654+
}, nil
637655
}
638656

639657
func (impl *DeploymentConfigurationServiceImpl) getDeploymentTemplateForEnvLevel(ctx context.Context, appId, envId int) (generateManifest.DeploymentTemplateResponse, error) {

pkg/configDiff/bean/bean.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import "C"
44
import (
55
"encoding/json"
66
"fmt"
7+
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
78
bean3 "github.com/devtron-labs/devtron/pkg/bean"
89
"github.com/devtron-labs/devtron/pkg/pipeline/bean"
910
)
@@ -89,6 +90,12 @@ type DeploymentAndCmCsConfig struct {
8990
Data json.RawMessage `json:"data"`
9091
VariableSnapshot map[string]map[string]string `json:"variableSnapshot"` // for deployment->{Deployment Template: resolvedValuesMap}, for cm->{cmComponentName: resolvedValuesMap}
9192
ResolvedValue json.RawMessage `json:"resolvedValue"`
93+
// for deployment template
94+
TemplateVersion string `json:"templateVersion,omitempty"`
95+
IsAppMetricsEnabled bool `json:"isAppMetricsEnabled,omitempty"`
96+
//for pipeline strategy
97+
PipelineTriggerType pipelineConfig.TriggerType `json:"pipelineTriggerType,omitempty"`
98+
Strategy string `json:"strategy,omitempty"`
9299
}
93100

94101
func NewDeploymentAndCmCsConfig() *DeploymentAndCmCsConfig {
@@ -115,6 +122,18 @@ func (r *DeploymentAndCmCsConfig) WithResolvedValue(resolvedValue json.RawMessag
115122
return r
116123
}
117124

125+
func (r *DeploymentAndCmCsConfig) WithDeploymentConfigMetadata(templateVersion string, isAppMetricsEnabled bool) *DeploymentAndCmCsConfig {
126+
r.TemplateVersion = templateVersion
127+
r.IsAppMetricsEnabled = isAppMetricsEnabled
128+
return r
129+
}
130+
131+
func (r *DeploymentAndCmCsConfig) WithPipelineStrategyMetadata(pipelineTriggerType pipelineConfig.TriggerType, strategy string) *DeploymentAndCmCsConfig {
132+
r.PipelineTriggerType = pipelineTriggerType
133+
r.Strategy = strategy
134+
return r
135+
}
136+
118137
type DeploymentAndCmCsConfigDto struct {
119138
DeploymentTemplate *DeploymentAndCmCsConfig `json:"deploymentTemplate"`
120139
ConfigMapsData *DeploymentAndCmCsConfig `json:"configMapData"`
@@ -202,3 +221,9 @@ type ResolvedCmCsMetadataDto struct {
202221
type ValuesDto struct {
203222
Values string `json:"values"`
204223
}
224+
225+
type DeploymentTemplateMetadata struct {
226+
DeploymentTemplateJson json.RawMessage
227+
TemplateVersion string
228+
IsAppMetricsEnabled bool
229+
}

pkg/generateManifest/DeploymentTemplateService.go

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ func (impl DeploymentTemplateServiceImpl) FetchDeploymentsWithChartRefs(appId in
203203

204204
func (impl DeploymentTemplateServiceImpl) GetDeploymentTemplate(ctx context.Context, request DeploymentTemplateRequest) (DeploymentTemplateResponse, error) {
205205
var result DeploymentTemplateResponse
206+
var response *DeploymentTemplateResponse
206207
var values, resolvedValue string
207208
var err error
208209
var variableSnapshot map[string]string
@@ -219,9 +220,9 @@ func (impl DeploymentTemplateServiceImpl) GetDeploymentTemplate(ctx context.Cont
219220
_, values, err = impl.chartRefService.GetAppOverrideForDefaultTemplate(request.ChartRefId)
220221
resolvedValue = values
221222
case repository.PublishedOnEnvironments:
222-
values, resolvedValue, variableSnapshot, err = impl.fetchResolvedTemplateForPublishedEnvs(ctx, request)
223+
response, err = impl.fetchResolvedTemplateForPublishedEnvs(ctx, request)
223224
case repository.DeployedOnSelfEnvironment, repository.DeployedOnOtherEnvironment:
224-
values, resolvedValue, variableSnapshot, err = impl.fetchTemplateForDeployedEnv(ctx, request)
225+
response, err = impl.fetchTemplateForDeployedEnv(ctx, request)
225226
}
226227
if err != nil {
227228
impl.Logger.Errorw("error in getting values", "err", err)
@@ -233,9 +234,18 @@ func (impl DeploymentTemplateServiceImpl) GetDeploymentTemplate(ctx context.Cont
233234
result.Data = values
234235
result.ResolvedData = resolvedValue
235236
result.VariableSnapshot = variableSnapshot
237+
if response != nil {
238+
result.Data = response.Data
239+
result.ResolvedData = response.ResolvedData
240+
result.VariableSnapshot = response.VariableSnapshot
241+
result.TemplateVersion = response.TemplateVersion
242+
result.IsAppMetricsEnabled = response.IsAppMetricsEnabled
243+
}
236244
return result, nil
237245
}
238-
246+
if variableSnapshot != nil {
247+
result.VariableSnapshot = variableSnapshot
248+
}
239249
request = impl.setRequestMetadata(&request)
240250
manifest, err := impl.GenerateManifest(ctx, &request, resolvedValue)
241251
if err != nil {
@@ -312,7 +322,7 @@ func (impl DeploymentTemplateServiceImpl) setRequestMetadata(request *Deployment
312322
return *request
313323
}
314324

315-
func (impl DeploymentTemplateServiceImpl) fetchResolvedTemplateForPublishedEnvs(ctx context.Context, request DeploymentTemplateRequest) (string, string, map[string]string, error) {
325+
func (impl DeploymentTemplateServiceImpl) fetchResolvedTemplateForPublishedEnvs(ctx context.Context, request DeploymentTemplateRequest) (*DeploymentTemplateResponse, error) {
316326
var values string
317327
override, err := impl.propertiesConfigService.GetEnvironmentProperties(request.AppId, request.EnvId, request.ChartRefId)
318328
if err == nil && override.GlobalConfig != nil {
@@ -323,24 +333,42 @@ func (impl DeploymentTemplateServiceImpl) fetchResolvedTemplateForPublishedEnvs(
323333
}
324334
} else {
325335
impl.Logger.Errorw("error in getting overridden values", "err", err)
326-
return "", "", nil, err
336+
return nil, err
337+
}
338+
_, _, version, _, err := impl.chartRefService.GetRefChart(request.ChartRefId)
339+
if err != nil {
340+
impl.Logger.Errorw("error in getting chart ref by chartRefId ", "chartRefId", request.ChartRefId, "err", err)
341+
return nil, err
327342
}
328343
resolvedTemplate, variableSnapshot, err := impl.resolveTemplateVariables(ctx, values, request)
329344
if err != nil {
330-
return values, values, variableSnapshot, err
345+
impl.Logger.Errorw("error in resolving template variables for env override ", "values", values, "err", err)
346+
return nil, err
331347
}
332-
return values, resolvedTemplate, variableSnapshot, nil
348+
return &DeploymentTemplateResponse{
349+
Data: values,
350+
ResolvedData: resolvedTemplate,
351+
VariableSnapshot: variableSnapshot,
352+
TemplateVersion: version,
353+
IsAppMetricsEnabled: *override.AppMetrics,
354+
}, nil
333355
}
334356

335-
func (impl DeploymentTemplateServiceImpl) fetchTemplateForDeployedEnv(ctx context.Context, request DeploymentTemplateRequest) (string, string, map[string]string, error) {
357+
func (impl DeploymentTemplateServiceImpl) fetchTemplateForDeployedEnv(ctx context.Context, request DeploymentTemplateRequest) (*DeploymentTemplateResponse, error) {
336358
historyObject, err := impl.deploymentTemplateHistoryService.GetHistoryForDeployedTemplateById(ctx, request.DeploymentTemplateHistoryId, request.PipelineId)
337359
if err != nil {
338360
impl.Logger.Errorw("error in getting deployment template history", "err", err, "id", request.DeploymentTemplateHistoryId, "pipelineId", request.PipelineId)
339-
return "", "", nil, err
361+
return nil, err
340362
}
341363

342364
//todo Subhashish solve variable leak
343-
return historyObject.CodeEditorValue.Value, historyObject.CodeEditorValue.ResolvedValue, historyObject.CodeEditorValue.VariableSnapshot, nil
365+
return &DeploymentTemplateResponse{
366+
Data: historyObject.CodeEditorValue.Value,
367+
ResolvedData: historyObject.CodeEditorValue.ResolvedValue,
368+
VariableSnapshot: historyObject.CodeEditorValue.VariableSnapshot,
369+
TemplateVersion: historyObject.TemplateVersion,
370+
IsAppMetricsEnabled: *historyObject.IsAppMetricsEnabled,
371+
}, nil
344372
}
345373

346374
func (impl DeploymentTemplateServiceImpl) resolveTemplateVariables(ctx context.Context, values string, request DeploymentTemplateRequest) (string, map[string]string, error) {

pkg/generateManifest/bean.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,11 @@ var ReleaseIdentifier = &gRPC.ReleaseIdentifier{
6969
}
7070

7171
type DeploymentTemplateResponse struct {
72-
Data string `json:"data"`
73-
ResolvedData string `json:"resolvedData"`
74-
VariableSnapshot map[string]string `json:"variableSnapshot"`
72+
Data string `json:"data"`
73+
ResolvedData string `json:"resolvedData"`
74+
VariableSnapshot map[string]string `json:"variableSnapshot"`
75+
TemplateVersion string `json:"-"`
76+
IsAppMetricsEnabled bool `json:"-"`
7577
}
7678

7779
type RestartPodResponse struct {

wire_gen.go

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

0 commit comments

Comments
 (0)