Skip to content

Commit 68cdb49

Browse files
authored
PMM-12807 fix dsn generation (#2784)
* PMM-12807 Autodiscovery limit shouldn't affect TLS options. * PMM-12807 Fix code for other service types. * Update agent_model_test.go
1 parent 07fde19 commit 68cdb49

File tree

3 files changed

+49
-22
lines changed

3 files changed

+49
-22
lines changed

managed/models/agent_model.go

+37-22
Original file line numberDiff line numberDiff line change
@@ -492,17 +492,15 @@ func (s *Agent) DSN(service *Service, dsnParams DSNParams, tdp *DelimiterPair) s
492492
}
493493
q.Set("sslmode", sslmode)
494494

495-
if s.PostgreSQLOptions != nil {
496-
if files := s.Files(); len(files) != 0 {
497-
for key := range files {
498-
switch key {
499-
case caFilePlaceholder:
500-
q.Add("sslrootcert", tdp.Left+".TextFiles."+caFilePlaceholder+tdp.Right)
501-
case certificateFilePlaceholder:
502-
q.Add("sslcert", tdp.Left+".TextFiles."+certificateFilePlaceholder+tdp.Right)
503-
case certificateKeyFilePlaceholder:
504-
q.Add("sslkey", tdp.Left+".TextFiles."+certificateKeyFilePlaceholder+tdp.Right)
505-
}
495+
if files := s.Files(); len(files) != 0 {
496+
for key := range files {
497+
switch key {
498+
case caFilePlaceholder:
499+
q.Add("sslrootcert", tdp.Left+".TextFiles."+caFilePlaceholder+tdp.Right)
500+
case certificateFilePlaceholder:
501+
q.Add("sslcert", tdp.Left+".TextFiles."+certificateFilePlaceholder+tdp.Right)
502+
case certificateKeyFilePlaceholder:
503+
q.Add("sslkey", tdp.Left+".TextFiles."+certificateKeyFilePlaceholder+tdp.Right)
506504
}
507505
}
508506
}
@@ -609,30 +607,47 @@ func (s Agent) Files() map[string]string {
609607
switch s.AgentType {
610608
case MySQLdExporterType, QANMySQLPerfSchemaAgentType, QANMySQLSlowlogAgentType:
611609
if s.MySQLOptions != nil {
612-
return map[string]string{
613-
"tlsCa": s.MySQLOptions.TLSCa,
614-
"tlsCert": s.MySQLOptions.TLSCert,
615-
"tlsKey": s.MySQLOptions.TLSKey,
610+
files := make(map[string]string)
611+
if s.MySQLOptions.TLSCa != "" {
612+
files["tlsCa"] = s.MySQLOptions.TLSCa
613+
}
614+
if s.MySQLOptions.TLSCert != "" {
615+
files["tlsCert"] = s.MySQLOptions.TLSCert
616+
}
617+
if s.MySQLOptions.TLSKey != "" {
618+
files["tlsKey"] = s.MySQLOptions.TLSKey
616619
}
620+
return files
617621
}
618622
return nil
619623
case ProxySQLExporterType:
620624
return nil
621625
case QANMongoDBProfilerAgentType, MongoDBExporterType:
622626
if s.MongoDBOptions != nil {
623-
return map[string]string{
624-
caFilePlaceholder: s.MongoDBOptions.TLSCa,
625-
certificateKeyFilePlaceholder: s.MongoDBOptions.TLSCertificateKey,
627+
files := make(map[string]string)
628+
if s.MongoDBOptions.TLSCa != "" {
629+
files[caFilePlaceholder] = s.MongoDBOptions.TLSCa
626630
}
631+
if s.MongoDBOptions.TLSCertificateKey != "" {
632+
files[certificateKeyFilePlaceholder] = s.MongoDBOptions.TLSCertificateKey
633+
}
634+
return files
627635
}
628636
return nil
629637
case PostgresExporterType, QANPostgreSQLPgStatementsAgentType, QANPostgreSQLPgStatMonitorAgentType:
630638
if s.PostgreSQLOptions != nil {
631-
return map[string]string{
632-
caFilePlaceholder: s.PostgreSQLOptions.SSLCa,
633-
certificateFilePlaceholder: s.PostgreSQLOptions.SSLCert,
634-
certificateKeyFilePlaceholder: s.PostgreSQLOptions.SSLKey,
639+
files := make(map[string]string)
640+
641+
if s.PostgreSQLOptions.SSLCa != "" {
642+
files[caFilePlaceholder] = s.PostgreSQLOptions.SSLCa
643+
}
644+
if s.PostgreSQLOptions.SSLCert != "" {
645+
files[certificateFilePlaceholder] = s.PostgreSQLOptions.SSLCert
646+
}
647+
if s.PostgreSQLOptions.SSLKey != "" {
648+
files[certificateKeyFilePlaceholder] = s.PostgreSQLOptions.SSLKey
635649
}
650+
return files
636651
}
637652
return nil
638653
default:

managed/models/agent_model_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,12 @@ func TestPostgresAgentTLS(t *testing.T) {
257257
agent.TLSSkipVerify = testCase.tlsSkipVerify
258258
assert.Equal(t, testCase.expected, agent.DSN(service, models.DSNParams{DialTimeout: time.Second, Database: "database"}, nil))
259259
})
260+
t.Run(fmt.Sprintf("AutodiscoveryLimit set TLS:%v/TLSSkipVerify:%v", testCase.tls, testCase.tlsSkipVerify), func(t *testing.T) {
261+
agent.TLS = testCase.tls
262+
agent.TLSSkipVerify = testCase.tlsSkipVerify
263+
agent.PostgreSQLOptions = &models.PostgreSQLOptions{AutoDiscoveryLimit: 10}
264+
assert.Equal(t, testCase.expected, agent.DSN(service, models.DSNParams{DialTimeout: time.Second, Database: "database"}, nil))
265+
})
260266
}
261267
}
262268

version/parsed_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ func TestParsed(t *testing.T) {
4040
}, {
4141
s: "2.1.2",
4242
p: &Parsed{Major: 2, Minor: 1, Patch: 2, Num: 20102},
43+
}, {
44+
s: "2.1.3-0",
45+
p: &Parsed{Major: 2, Minor: 1, Patch: 3, Rest: "-0", Num: 20103},
46+
}, {
47+
s: "2.1.3-HEAD-abcd12",
48+
p: &Parsed{Major: 2, Minor: 1, Patch: 3, Rest: "-HEAD-abcd12", Num: 20103},
4349
}, {
4450
s: "2.1.3",
4551
p: &Parsed{Major: 2, Minor: 1, Patch: 3, Num: 20103},

0 commit comments

Comments
 (0)