mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-21 03:38:43 +00:00
Merge pull request #6915 from simonpasquier/refactor-new-config-generator
chore: refactor NewConfigGenerator() with functional options
This commit is contained in:
commit
2191f3f4c4
7 changed files with 48 additions and 25 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue