From 3643b5d93e85b960552a0429f5f1d3df5915a3b5 Mon Sep 17 00:00:00 2001 From: Dhruv <136118444+slashexx@users.noreply.github.com> Date: Fri, 31 Jan 2025 09:52:22 +0530 Subject: [PATCH] chore: Refactor OVHCloudSDConfig (#7238) Signed-off-by: slashexx --- .../monitoring/v1alpha1/scrapeconfig_types.go | 4 +- pkg/prometheus/promcfg.go | 4 +- pkg/prometheus/promcfg_test.go | 2 +- pkg/prometheus/resource_selector_test.go | 2 +- test/e2e/scrapeconfig_test.go | 191 ++++++++++++++++++ 5 files changed, 197 insertions(+), 6 deletions(-) diff --git a/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go b/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go index 723c32296..82440d456 100644 --- a/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go +++ b/pkg/apis/monitoring/v1alpha1/scrapeconfig_types.go @@ -1112,8 +1112,8 @@ type NomadSDConfig struct { type OVHService string const ( - VPS OVHService = "VPS" - DedicatedServer OVHService = "DedicatedServer" + OVHServiceVPS OVHService = "VPS" + OVHServiceDedicatedServer OVHService = "DedicatedServer" ) // OVHCloudSDConfig configurations allow retrieving scrape targets from OVHcloud's dedicated servers and VPS using their API. diff --git a/pkg/prometheus/promcfg.go b/pkg/prometheus/promcfg.go index 97a72a3db..1514bdb93 100644 --- a/pkg/prometheus/promcfg.go +++ b/pkg/prometheus/promcfg.go @@ -4468,9 +4468,9 @@ func (cg *ConfigGenerator) generateScrapeConfig( }) switch config.Service { - case monitoringv1alpha1.VPS: + case monitoringv1alpha1.OVHServiceVPS: configs[i] = append(configs[i], yaml.MapItem{Key: "service", Value: "vps"}) - case monitoringv1alpha1.DedicatedServer: + case monitoringv1alpha1.OVHServiceDedicatedServer: configs[i] = append(configs[i], yaml.MapItem{Key: "service", Value: "dedicated_server"}) default: cg.logger.Warn(fmt.Sprintf("ignoring service not supported by Prometheus: %s", string(config.Service))) diff --git a/pkg/prometheus/promcfg_test.go b/pkg/prometheus/promcfg_test.go index 6ff2fc261..541dc2344 100644 --- a/pkg/prometheus/promcfg_test.go +++ b/pkg/prometheus/promcfg_test.go @@ -11246,7 +11246,7 @@ func TestScrapeConfigSpecConfigWithOVHCloudSD(t *testing.T) { }, Key: "ck", }, - Service: monitoringv1alpha1.DedicatedServer, + Service: monitoringv1alpha1.OVHServiceDedicatedServer, Endpoint: ptr.To("127.0.0.1"), RefreshInterval: (*monitoringv1.Duration)(ptr.To("30s")), }, diff --git a/pkg/prometheus/resource_selector_test.go b/pkg/prometheus/resource_selector_test.go index be9613819..adaa347d9 100644 --- a/pkg/prometheus/resource_selector_test.go +++ b/pkg/prometheus/resource_selector_test.go @@ -3950,7 +3950,7 @@ func TestSelectScrapeConfigs(t *testing.T) { }, Key: "key2", }, - Service: monitoringv1alpha1.VPS, + Service: monitoringv1alpha1.OVHServiceVPS, Endpoint: ptr.To("127.0.0.1"), }, } diff --git a/test/e2e/scrapeconfig_test.go b/test/e2e/scrapeconfig_test.go index 60f0f72b3..c2bd21e3b 100644 --- a/test/e2e/scrapeconfig_test.go +++ b/test/e2e/scrapeconfig_test.go @@ -619,6 +619,9 @@ func testScrapeConfigCRDValidations(t *testing.T) { t.Run("AzureSD", func(t *testing.T) { runScrapeConfigCRDValidation(t, AzureSDTestCases) }) + t.Run("OVHCloudSD", func(t *testing.T) { + runScrapeConfigCRDValidation(t, OVHCloudSDTestCases) + }) } func runScrapeConfigCRDValidation(t *testing.T, testCases []scrapeCRDTestCase) { @@ -2479,3 +2482,191 @@ var AzureSDTestCases = []scrapeCRDTestCase{ expectedError: true, }, } + +var OVHCloudSDTestCases = []scrapeCRDTestCase{ + { + name: "Valid OVHCloudSDConfig", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceDedicatedServer, + Endpoint: ptr.To("https://api.ovh.com/endpoint"), + RefreshInterval: ptr.To(monitoringv1.Duration("30s")), + }, + }, + }, + expectedError: false, + }, + { + name: "Valid OVHCloudSDConfig without optional fields", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceDedicatedServer, + }, + }, + }, + expectedError: false, + }, + { + name: "Valid ApplicationKey", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + }, + }, + }, + expectedError: false, + }, + { + name: "Empty ApplicationKey", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + }, + }, + }, + expectedError: true, + }, + { + name: "Missing ApplicationKey", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + }, + }, + }, + expectedError: true, + }, + { + name: "Valid Service field (VPS)", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + }, + }, + }, + expectedError: false, + }, + { + name: "Valid Service field (DedicatedServer)", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceDedicatedServer, + }, + }, + }, + expectedError: false, + }, + { + name: "Invalid Service type", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: "InvalidService", + }, + }, + }, + expectedError: true, + }, + { + name: "Missing Service field", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + }, + }, + }, + expectedError: true, + }, + { + name: "Valid ConsumerKey", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + }, + }, + }, + expectedError: false, + }, + { + name: "Empty Endpoint", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + Endpoint: ptr.To(""), + }, + }, + }, + expectedError: true, + }, + { + name: "Empty RefreshInterval", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + RefreshInterval: ptr.To(monitoringv1.Duration("")), + }, + }, + }, + expectedError: false, + }, + { + name: "Valid RefreshInterval", + scrapeConfigSpec: monitoringv1alpha1.ScrapeConfigSpec{ + OVHCloudSDConfigs: []monitoringv1alpha1.OVHCloudSDConfig{ + { + ApplicationKey: "valid-app-key", + ApplicationSecret: v1.SecretKeySelector{Key: "valid-secret-key"}, + ConsumerKey: v1.SecretKeySelector{Key: "valid-consumer-key"}, + Service: monitoringv1alpha1.OVHServiceVPS, + RefreshInterval: ptr.To(monitoringv1.Duration("30s")), + }, + }, + }, + expectedError: false, + }, +}