Skip to content

Commit c8fa8cb

Browse files
Merge pull request #6034 from devtron-labs/sdh-template-list-cartesian-product-fix-oss
fix: fix for showing inaccurate data in template/list api while fetching previous deployments list in template/list api, output shown was cartesian product of deployment_template_history and wfr
2 parents fb1cbf5 + ed21b39 commit c8fa8cb

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

api/bean/ConfigMapAndSecret.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (configSecretJson *ConfigSecretJson) SetReferencedSecrets(secrets []ConfigS
7171
configSecretJson.Secrets = util.GetReferencedArray(secrets)
7272
}
7373

74-
func GetTransformedDataForSecretData(data string, mode util.SecretTransformMode) (string, error) {
74+
func GetTransformedDataForSecretRootJsonData(data string, mode util.SecretTransformMode) (string, error) {
7575
secretsJson := ConfigSecretRootJson{}
7676
err := json.Unmarshal([]byte(data), &secretsJson)
7777
if err != nil {

internal/sql/repository/DeploymentTemplateRepository.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,13 @@ func (impl DeploymentTemplateRepositoryImpl) FetchDeploymentHistoryWithChartRefs
7171

7272
query := "select p.id as pipeline_id, dth.id as deployment_template_history_id," +
7373
" wfr.id as wfr_id, wfr.finished_on, wfr.status, c.chart_ref_id, c.chart_version FROM cd_workflow_runner wfr" +
74-
" JOIN cd_workflow wf ON wf.id = wfr.cd_workflow_id JOIN pipeline p ON p.id = wf.pipeline_id" +
75-
" JOIN deployment_template_history dth ON dth.deployed_on = wfr.started_on " +
76-
"JOIN pipeline_config_override pco ON pco.cd_workflow_id = wf.id " +
77-
"JOIN chart_env_config_override ceco ON ceco.id = pco.env_config_override_id JOIN charts c " +
78-
"ON c.id = ceco.chart_id where p.environment_id = ? AND p.app_id = ? AND p.deleted = false AND wfr.workflow_type = 'DEPLOY' " +
79-
"ORDER BY wfr.id DESC LIMIT ? ;"
74+
" JOIN deployment_template_history dth ON dth.deployed_on = wfr.started_on" +
75+
" JOIN cd_workflow wf ON wf.id = wfr.cd_workflow_id" +
76+
" JOIN pipeline p ON p.id = wf.pipeline_id AND p.id = dth.pipeline_id" +
77+
" JOIN pipeline_config_override pco ON pco.cd_workflow_id = wf.id" +
78+
" JOIN chart_env_config_override ceco ON ceco.id = pco.env_config_override_id JOIN charts c" +
79+
" ON c.id = ceco.chart_id where p.environment_id = ? AND p.app_id = ? AND p.deleted = false AND wfr.workflow_type = 'DEPLOY'" +
80+
" ORDER BY wfr.id DESC LIMIT ? ;"
8081

8182
_, err := impl.dbConnection.Query(&result, query, envId, appId, limit)
8283
if err != nil {

pkg/bean/configSecretData.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ type ESOData struct {
8080
Property string `json:"property,omitempty"`
8181
}
8282

83-
func GetTransformedDataForSecretData(data string, mode util.SecretTransformMode) (string, error) {
83+
func GetTransformedDataForSecretConfigData(data string, mode util.SecretTransformMode) (string, error) {
8484
secretDataMap := make(map[string]*ConfigData)
8585
err := json.Unmarshal([]byte(data), &secretDataMap)
8686
if err != nil {

pkg/variables/ScopedVariableCMCSManager.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ func (impl *ScopedVariableCMCSManagerImpl) ResolveCMCS(ctx context.Context,
293293
return nil, nil, nil, nil, err
294294
}
295295

296-
decodedSecrets, err := serviceBean.GetTransformedDataForSecretData(string(mergedSecretJson), util.DecodeSecret)
296+
decodedSecrets, err := serviceBean.GetTransformedDataForSecretConfigData(string(mergedSecretJson), util.DecodeSecret)
297297
if err != nil {
298298
return nil, nil, nil, nil, err
299299
}
@@ -304,7 +304,7 @@ func (impl *ScopedVariableCMCSManagerImpl) ResolveCMCS(ctx context.Context,
304304
return nil, nil, nil, nil, err
305305
}
306306
variableMapCS = parsers.GetVariableMapForUsedVariables(scopedVariables, varNamesCS)
307-
encodedSecretData, err = serviceBean.GetTransformedDataForSecretData(resolvedTemplateCS, util.EncodeSecret)
307+
encodedSecretData, err = serviceBean.GetTransformedDataForSecretConfigData(resolvedTemplateCS, util.EncodeSecret)
308308
if err != nil {
309309
return nil, nil, nil, nil, err
310310
}
@@ -362,14 +362,14 @@ func (impl *ScopedVariableCMCSManagerImpl) ResolvedVariableForLastSaved(scope re
362362
}
363363

364364
if secretDataByte != nil && len(varNamesCS) > 0 {
365-
data, err := bean.GetTransformedDataForSecretData(string(secretDataByte), util.DecodeSecret)
365+
data, err := bean.GetTransformedDataForSecretRootJsonData(string(secretDataByte), util.DecodeSecret)
366366
if err != nil {
367367
return resolvedCM, string(secretDataByte), variableSnapshotForCM, variableSnapshotForCS, err
368368
}
369369
parserRequest := parsers.CreateParserRequest(data, parsers.StringVariableTemplate, scopedVariables, true)
370370
resolvedCSDecoded, err := impl.ParseTemplateWithScopedVariables(parserRequest)
371371
variableSnapshotForCS = parsers.GetVariableMapForUsedVariables(scopedVariables, varNamesCS)
372-
resolvedCS, err = bean.GetTransformedDataForSecretData(resolvedCSDecoded, util.EncodeSecret)
372+
resolvedCS, err = bean.GetTransformedDataForSecretRootJsonData(resolvedCSDecoded, util.EncodeSecret)
373373
if err != nil {
374374
return resolvedCM, resolvedCM, variableSnapshotForCM, variableSnapshotForCS, err
375375
}
@@ -408,12 +408,12 @@ func (impl *ScopedVariableCMCSManagerImpl) ResolvedVariableForSpecificType(confi
408408
HistoryReferenceId: secretHistoryId,
409409
HistoryReferenceType: repository1.HistoryReferenceTypeSecret,
410410
}
411-
data, err := bean.GetTransformedDataForSecretData(string(secretDataByte), util.DecodeSecret)
411+
data, err := bean.GetTransformedDataForSecretRootJsonData(string(secretDataByte), util.DecodeSecret)
412412
if err != nil {
413413
return "", "", nil, nil, err
414414
}
415415
variableMapCS, resolvedTemplateCS, err := impl.GetVariableSnapshotAndResolveTemplate(data, parsers.StringVariableTemplate, reference, true, true)
416-
encodedSecretData, err := bean.GetTransformedDataForSecretData(resolvedTemplateCS, util.EncodeSecret)
416+
encodedSecretData, err := bean.GetTransformedDataForSecretRootJsonData(resolvedTemplateCS, util.EncodeSecret)
417417
if err != nil {
418418
return "", "", nil, nil, err
419419
}

0 commit comments

Comments
 (0)