Skip to content

Commit 73a98ff

Browse files
committed
cleaner tls clearing
1 parent 65c2ce2 commit 73a98ff

File tree

3 files changed

+44
-45
lines changed

3 files changed

+44
-45
lines changed

controllers/om/deployment.go

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,9 @@ func (d Deployment) ConfigureMonitoring(log *zap.SugaredLogger, tls bool, caFile
312312
if pem := p.EnsureTLSConfig()["PEMKeyFile"]; pem != nil {
313313
pemKeyFile = pem.(string)
314314
}
315-
monitoringVersion["additionalParams"] = buildTLSAdditionalParams(caFilePath, pemKeyFile)
315+
params := map[string]string{}
316+
addTLSParams(params, caFilePath, pemKeyFile)
317+
monitoringVersion["additionalParams"] = params
316318
} else {
317319
// Clear TLS-specific params when TLS is disabled to prevent monitoring from
318320
// trying to use certificate files that no longer exist.
@@ -324,34 +326,37 @@ func (d Deployment) ConfigureMonitoring(log *zap.SugaredLogger, tls bool, caFile
324326
d.setMonitoringVersions(monitoringVersions)
325327
}
326328

327-
// buildTLSAdditionalParams creates the additionalParams map for monitoring with TLS enabled.
328-
// This is the single source of truth for TLS params - clearTLSParamsFromMonitoringVersion
329-
// uses this function to determine which keys to remove.
330-
func buildTLSAdditionalParams(caFilePath string, pemKeyFile string) map[string]string {
331-
params := map[string]string{
332-
"useSslForAllConnections": "true",
333-
"sslTrustedServerCertificates": caFilePath,
334-
}
329+
// TLS param keys for monitoring additionalParams.
330+
const (
331+
tlsParamUseSsl = "useSslForAllConnections"
332+
tlsParamTrustedCert = "sslTrustedServerCertificates"
333+
tlsParamClientCert = "sslClientCertificate"
334+
)
335+
336+
func addTLSParams(params map[string]string, caFilePath, pemKeyFile string) {
337+
params[tlsParamUseSsl] = "true"
338+
params[tlsParamTrustedCert] = caFilePath
335339
if pemKeyFile != "" {
336-
params["sslClientCertificate"] = pemKeyFile
340+
params[tlsParamClientCert] = pemKeyFile
337341
}
338-
return params
342+
}
343+
344+
func clearTLSParams(params map[string]string) {
345+
delete(params, tlsParamUseSsl)
346+
delete(params, tlsParamTrustedCert)
347+
delete(params, tlsParamClientCert)
339348
}
340349

341350
// clearTLSParamsFromMonitoringVersion removes TLS-specific fields from the monitoring
342-
// version's additionalParams. It derives which keys to remove from buildTLSAdditionalParams,
343-
// ensuring add and remove operations always stay in sync.
344-
// If additionalParams becomes empty after removing TLS fields, the entire map is removed.
351+
// version's additionalParams. If additionalParams becomes empty after removing TLS fields,
352+
// the entire map is removed.
345353
func clearTLSParamsFromMonitoringVersion(monitoringVersion map[string]interface{}) {
346354
additionalParams, ok := monitoringVersion["additionalParams"].(map[string]string)
347355
if !ok {
348356
return
349357
}
350358

351-
// Use non-empty dummy values to get all possible TLS param keys
352-
for key := range buildTLSAdditionalParams("_", "_") {
353-
delete(additionalParams, key)
354-
}
359+
clearTLSParams(additionalParams)
355360

356361
if len(additionalParams) == 0 {
357362
delete(monitoringVersion, "additionalParams")

controllers/operator/appdbreplicaset_controller.go

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,8 +1436,7 @@ func addMonitoring(ac *automationconfig.AutomationConfig, log *zap.SugaredLogger
14361436
if !tls {
14371437
// Clear TLS-specific params when TLS is disabled to prevent monitoring from
14381438
// trying to use certificate files that no longer exist.
1439-
// We only clear TLS fields, preserving any other additionalParams that may be set.
1440-
clearTLSParamsFromAdditionalParams(monitoringVersions[i].AdditionalParams)
1439+
clearTLSParams(monitoringVersions[i].AdditionalParams)
14411440
if len(monitoringVersions[i].AdditionalParams) == 0 {
14421441
monitoringVersions[i].AdditionalParams = nil
14431442
}
@@ -1455,7 +1454,8 @@ func addMonitoring(ac *automationconfig.AutomationConfig, log *zap.SugaredLogger
14551454
if pem := p.Args26.Get("net.tls.certificateKeyFile"); pem != nil {
14561455
pemKeyFile = pem.String()
14571456
}
1458-
monitoringVersion.AdditionalParams = buildTLSAdditionalParams(appdbCAFilePath, pemKeyFile)
1457+
monitoringVersion.AdditionalParams = map[string]string{}
1458+
addTLSParams(monitoringVersion.AdditionalParams, appdbCAFilePath, pemKeyFile)
14591459
}
14601460
log.Debugw("Added monitoring agent configuration", "host", p.HostName, "tls", tls)
14611461
monitoringVersions = append(monitoringVersions, monitoringVersion)
@@ -1464,31 +1464,25 @@ func addMonitoring(ac *automationconfig.AutomationConfig, log *zap.SugaredLogger
14641464
ac.MonitoringVersions = monitoringVersions
14651465
}
14661466

1467-
// buildTLSAdditionalParams creates the additionalParams map for monitoring with TLS enabled.
1468-
// This is the single source of truth for TLS params - clearTLSParamsFromAdditionalParams
1469-
// uses this function to determine which keys to remove.
1470-
func buildTLSAdditionalParams(caFilePath string, pemKeyFile string) map[string]string {
1471-
params := map[string]string{
1472-
"useSslForAllConnections": "true",
1473-
"sslTrustedServerCertificates": caFilePath,
1474-
}
1467+
// TLS param keys for monitoring additionalParams.
1468+
const (
1469+
tlsParamUseSsl = "useSslForAllConnections"
1470+
tlsParamTrustedCert = "sslTrustedServerCertificates"
1471+
tlsParamClientCert = "sslClientCertificate"
1472+
)
1473+
1474+
func addTLSParams(params map[string]string, caFilePath, pemKeyFile string) {
1475+
params[tlsParamUseSsl] = "true"
1476+
params[tlsParamTrustedCert] = caFilePath
14751477
if pemKeyFile != "" {
1476-
params["sslClientCertificate"] = pemKeyFile
1478+
params[tlsParamClientCert] = pemKeyFile
14771479
}
1478-
return params
14791480
}
14801481

1481-
// clearTLSParamsFromAdditionalParams removes TLS-specific fields from the monitoring
1482-
// version's additionalParams map. It derives which keys to remove from buildTLSAdditionalParams,
1483-
// ensuring add and remove operations always stay in sync.
1484-
func clearTLSParamsFromAdditionalParams(additionalParams map[string]string) {
1485-
if additionalParams == nil {
1486-
return
1487-
}
1488-
// Use non-empty dummy values to get all possible TLS param keys
1489-
for key := range buildTLSAdditionalParams("_", "_") {
1490-
delete(additionalParams, key)
1491-
}
1482+
func clearTLSParams(params map[string]string) {
1483+
delete(params, tlsParamUseSsl)
1484+
delete(params, tlsParamTrustedCert)
1485+
delete(params, tlsParamClientCert)
14921486
}
14931487

14941488
// registerAppDBHostsWithProject uses the Hosts API to add each process in the AppDB to the project

controllers/operator/appdbreplicaset_controller_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,11 +1458,11 @@ func createRunningAppDB(ctx context.Context, t *testing.T, startingMembers int,
14581458
return reconciler
14591459
}
14601460

1461-
// TestClearTLSParamsFromAdditionalParams tests CLOUDP-351614 fix:
1461+
// TestClearTLSParams tests CLOUDP-351614 fix:
14621462
// When TLS is disabled on AppDB, TLS-specific params should be cleared from
14631463
// the monitoring config's additionalParams to prevent the monitoring agent
14641464
// from trying to use certificate files that no longer exist.
1465-
func TestClearTLSParamsFromAdditionalParams(t *testing.T) {
1465+
func TestClearTLSParams(t *testing.T) {
14661466
tests := []struct {
14671467
name string
14681468
input map[string]string
@@ -1526,7 +1526,7 @@ func TestClearTLSParamsFromAdditionalParams(t *testing.T) {
15261526

15271527
for _, tt := range tests {
15281528
t.Run(tt.name, func(t *testing.T) {
1529-
clearTLSParamsFromAdditionalParams(tt.input)
1529+
clearTLSParams(tt.input)
15301530
assert.Equal(t, tt.expectedOutput, tt.input)
15311531
})
15321532
}

0 commit comments

Comments
 (0)