1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-21 03:38:43 +00:00

Merge pull request from simonpasquier/refactor-new-config-generator

chore: refactor NewConfigGenerator() with functional options
This commit is contained in:
Simon Pasquier 2024-09-09 11:30:49 +02:00 committed by GitHub
commit 2191f3f4c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 48 additions and 25 deletions

View file

@ -65,7 +65,7 @@ func TestStartupProbeTimeoutSecondsForDaemonSet(t *testing.T) {
func makeDaemonSetFromPrometheus(p monitoringv1alpha1.PrometheusAgent) (*appsv1.DaemonSet, error) {
logger := prompkg.NewLogger()
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
if err != nil {
return nil, err
}

View file

@ -661,7 +661,11 @@ func (c *Operator) syncDaemonSet(ctx context.Context, key string, p *monitoringv
logger.Info("sync prometheus")
cg, err := prompkg.NewConfigGenerator(c.logger, p, c.endpointSliceSupported)
opts := []prompkg.ConfigGeneratorOption{}
if c.endpointSliceSupported {
opts = append(opts, prompkg.WithEndpointSliceSupport())
}
cg, err := prompkg.NewConfigGenerator(c.logger, p, opts...)
if err != nil {
return err
}
@ -759,7 +763,11 @@ func (c *Operator) syncStatefulSet(ctx context.Context, key string, p *monitorin
return err
}
cg, err := prompkg.NewConfigGenerator(c.logger, p, c.endpointSliceSupported)
opts := []prompkg.ConfigGeneratorOption{}
if c.endpointSliceSupported {
opts = append(opts, prompkg.WithEndpointSliceSupport())
}
cg, err := prompkg.NewConfigGenerator(c.logger, p, opts...)
if err != nil {
return err
}

View file

@ -104,7 +104,7 @@ func TestStartupProbeTimeoutSeconds(t *testing.T) {
func makeStatefulSetFromPrometheus(p monitoringv1alpha1.PrometheusAgent) (*appsv1.StatefulSet, error) {
logger := prompkg.NewLogger()
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
if err != nil {
return nil, err
}

View file

@ -70,11 +70,20 @@ type ConfigGenerator struct {
defaultScrapeClassName string
}
type ConfigGeneratorOption func(*ConfigGenerator)
func WithEndpointSliceSupport() ConfigGeneratorOption {
return func(cg *ConfigGenerator) {
cpf := cg.prom.GetCommonPrometheusFields()
cg.useEndpointSlice = ptr.Deref(cpf.ServiceDiscoveryRole, monitoringv1.EndpointsRole) == monitoringv1.EndpointSliceRole
}
}
// NewConfigGenerator creates a ConfigGenerator for the provided Prometheus resource.
func NewConfigGenerator(
logger *slog.Logger,
p monitoringv1.PrometheusInterface,
endpointSliceSupported bool,
opts ...ConfigGeneratorOption,
) (*ConfigGenerator, error) {
if logger == nil {
logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
@ -104,14 +113,19 @@ func NewConfigGenerator(
return nil, fmt.Errorf("failed to parse scrape classes: %w", err)
}
return &ConfigGenerator{
cg := &ConfigGenerator{
logger: logger,
version: version,
prom: p,
useEndpointSlice: endpointSliceSupported && ptr.Deref(cpf.ServiceDiscoveryRole, monitoringv1.EndpointsRole) == monitoringv1.EndpointSliceRole,
scrapeClasses: scrapeClasses,
defaultScrapeClassName: defaultScrapeClassName,
}, nil
}
for _, opt := range opts {
opt(cg)
}
return cg, nil
}
func (cg *ConfigGenerator) endpointRoleFlavor() string {

View file

@ -67,15 +67,12 @@ func mustNewConfigGenerator(t *testing.T, p *monitoringv1.Prometheus) *ConfigGen
Level: slog.LevelWarn,
}))
useEndpointSlice := false
if p.Spec.ServiceDiscoveryRole == nil || *p.Spec.ServiceDiscoveryRole == monitoringv1.EndpointsRole {
useEndpointSlice = false
} else if *p.Spec.ServiceDiscoveryRole == monitoringv1.EndpointSliceRole {
useEndpointSlice = true
opts := []ConfigGeneratorOption{}
if p.Spec.ServiceDiscoveryRole != nil && *p.Spec.ServiceDiscoveryRole == monitoringv1.EndpointSliceRole {
opts = append(opts, WithEndpointSliceSupport())
}
cg, err := NewConfigGenerator(logger.With("test", t.Name()), p, useEndpointSlice)
cg, err := NewConfigGenerator(logger.With("test", t.Name()), p, opts...)
require.NoError(t, err)
return cg
@ -9459,7 +9456,7 @@ func TestNewConfigGeneratorWithMultipleDefaultScrapeClass(t *testing.T) {
},
},
}
_, err := NewConfigGenerator(logger.With("test", "NewConfigGeneratorWithMultipleDefaultScrapeClass"), p, false)
_, err := NewConfigGenerator(logger.With("test", "NewConfigGeneratorWithMultipleDefaultScrapeClass"), p)
require.Error(t, err)
require.Equal(t, "failed to parse scrape classes: multiple default scrape classes defined", err.Error())
}

View file

@ -808,7 +808,11 @@ func (c *Operator) sync(ctx context.Context, key string) error {
assetStore := assets.NewStoreBuilder(c.kclient.CoreV1(), c.kclient.CoreV1())
cg, err := prompkg.NewConfigGenerator(c.logger, p, c.endpointSliceSupported)
opts := []prompkg.ConfigGeneratorOption{}
if c.endpointSliceSupported {
opts = append(opts, prompkg.WithEndpointSliceSupport())
}
cg, err := prompkg.NewConfigGenerator(c.logger, p, opts...)
if err != nil {
return err
}

View file

@ -48,7 +48,7 @@ var defaultTestConfig = &prompkg.Config{
func makeStatefulSetFromPrometheus(p monitoringv1.Prometheus) (*appsv1.StatefulSet, error) {
logger := prompkg.NewLogger()
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
if err != nil {
return nil, err
}
@ -415,7 +415,7 @@ func TestStatefulSetVolumeInitial(t *testing.T) {
logger := prompkg.NewLogger()
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
shardedSecret, err := operator.ReconcileShardedSecret(
@ -835,7 +835,7 @@ func TestPrometheusDefaultBaseImageFlag(t *testing.T) {
},
}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(
@ -889,7 +889,7 @@ func TestThanosDefaultBaseImageFlag(t *testing.T) {
},
}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(
@ -1426,7 +1426,7 @@ func TestReplicasConfigurationWithSharding(t *testing.T) {
},
}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(
@ -1479,7 +1479,7 @@ func TestSidecarResources(t *testing.T) {
Spec: monitoringv1.PrometheusSpec{},
}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(
@ -1848,7 +1848,7 @@ func TestConfigReloader(t *testing.T) {
logger := prompkg.NewLogger()
p := monitoringv1.Prometheus{}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(
@ -1918,7 +1918,7 @@ func TestConfigReloaderWithSignal(t *testing.T) {
},
}
cg, err := prompkg.NewConfigGenerator(logger, &p, false)
cg, err := prompkg.NewConfigGenerator(logger, &p)
require.NoError(t, err)
sset, err := makeStatefulSet(