Skip to content

Commit

Permalink
Merge pull request #6526 from simonpasquier/cherry-pick-6507
Browse files Browse the repository at this point in the history
fix: ScrapeClass TLSConfig nil pointer exception (#6507)
  • Loading branch information
simonpasquier committed Apr 18, 2024
2 parents 6d917ce + ada71c2 commit af00f92
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 11 deletions.
23 changes: 12 additions & 11 deletions pkg/prometheus/promcfg.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,24 +395,25 @@ func (cg *ConfigGenerator) MergeTLSConfigWithScrapeClass(tlsConfig *monitoringv1
scrapeClassName = scrapeClass.Name
}

scrapeClass, found := cg.scrapeClasses[scrapeClassName]

if !found {
return tlsConfig
scrapeClass = cg.scrapeClasses[scrapeClassName]
if scrapeClass == nil {
return tlsConfig // could be nil.
}

if tlsConfig == nil && !found {
return nil
}
// scrapeClass exists.

if tlsConfig != nil && !found {
return tlsConfig
if tlsConfig == nil {
return scrapeClass.TLSConfig // could be nil.
}

if tlsConfig == nil && found {
return scrapeClass.TLSConfig
// tlsConfig exists.

if scrapeClass.TLSConfig == nil {
return nil
}

// scrapeClass.TLSConfig exists.

if tlsConfig.CAFile == "" && tlsConfig.SafeTLSConfig.CA == (monitoringv1.SecretOrConfigMap{}) {
tlsConfig.CAFile = scrapeClass.TLSConfig.CAFile
}
Expand Down
25 changes: 25 additions & 0 deletions pkg/prometheus/promcfg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8056,6 +8056,31 @@ func TestMergeTLSConfigWithScrapeClass(t *testing.T) {
},
},
},
{
name: "nil TLSConfig, non-nil ScrapeClass with nil TLSConfig",
tlsConfig: nil,
scrapeClass: &monitoringv1.ScrapeClass{
Name: "default",
TLSConfig: nil,
},
expectedConfig: &monitoringv1.TLSConfig{
CAFile: "defaultCAFile",
CertFile: "defaultCertFile",
KeyFile: "defaultKeyFile",
},
cg: &ConfigGenerator{
defaultScrapeClassName: "default",
scrapeClasses: map[string]*monitoringv1.ScrapeClass{
"default": {
TLSConfig: &monitoringv1.TLSConfig{
CAFile: "defaultCAFile",
CertFile: "defaultCertFile",
KeyFile: "defaultKeyFile",
},
},
},
},
},
}

for _, tt := range tests {
Expand Down

0 comments on commit af00f92

Please sign in to comment.