pass registerer via controller option

This commit is contained in:
Clive Jevons 2022-07-26 12:36:26 +02:00 committed by Alex Stockinger
parent ccea18b5c3
commit c50a688b58
3 changed files with 21 additions and 7 deletions

View File

@ -221,6 +221,7 @@ type Controller struct {
errors chan error
logger log.Logger
resyncPeriod time.Duration
registerer prometheus.Registerer
sync.Mutex
rules []Rule
@ -252,10 +253,16 @@ func WithClients(v4, v6 Client) ControllerOption {
}
}
func WithRegisterer(registerer prometheus.Registerer) ControllerOption {
return func(c *Controller) {
c.registerer = registerer
}
}
// New generates a new iptables rules controller.
// If no options are given, IPv4 and IPv6 clients
// will be instantiated using the regular iptables backend.
func New(registerer prometheus.Registerer, opts ...ControllerOption) (*Controller, error) {
func New(opts ...ControllerOption) (*Controller, error) {
c := &Controller{
errors: make(chan error),
logger: log.NewNopLogger(),
@ -268,7 +275,11 @@ func New(registerer prometheus.Registerer, opts ...ControllerOption) (*Controlle
if err != nil {
return nil, fmt.Errorf("failed to create iptables IPv4 client: %v", err)
}
c.v4 = wrapWithMetrics(v4, "IPv4", registerer)
if c.registerer != nil {
c.v4 = wrapWithMetrics(v4, "IPv4", c.registerer)
} else {
c.v4 = v4
}
}
if c.v6 == nil {
disabled, err := ipv6Disabled()
@ -283,7 +294,11 @@ func New(registerer prometheus.Registerer, opts ...ControllerOption) (*Controlle
if err != nil {
return nil, fmt.Errorf("failed to create iptables IPv6 client: %v", err)
}
c.v6 = wrapWithMetrics(v6, "IPv6", registerer)
if c.registerer != nil {
c.v6 = wrapWithMetrics(v6, "IPv6", c.registerer)
} else {
c.v6 = v6
}
}
}
return c, nil

View File

@ -15,7 +15,6 @@
package iptables
import (
"github.com/prometheus/client_golang/prometheus"
"testing"
)
@ -85,7 +84,7 @@ func TestSet(t *testing.T) {
},
} {
client := &fakeClient{}
controller, err := New(prometheus.NewRegistry(), WithClients(client, client))
controller, err := New(WithClients(client, client))
if err != nil {
t.Fatalf("test case %q: got unexpected error instantiating controller: %v", tc.name, err)
}
@ -142,7 +141,7 @@ func TestCleanUp(t *testing.T) {
},
} {
client := &fakeClient{}
controller, err := New(prometheus.NewRegistry(), WithClients(client, client))
controller, err := New(WithClients(client, client))
if err != nil {
t.Fatalf("test case %q: got unexpected error instantiating controller: %v", tc.name, err)
}

View File

@ -156,7 +156,7 @@ func New(backend Backend, enc encapsulation.Encapsulator, granularity Granularit
externalIP = publicIP
}
level.Debug(logger).Log("msg", fmt.Sprintf("using %s as the public IP address", publicIP.String()))
ipTables, err := iptables.New(registerer, iptables.WithLogger(log.With(logger, "component", "iptables")), iptables.WithResyncPeriod(resyncPeriod))
ipTables, err := iptables.New(iptables.WithRegisterer(registerer), iptables.WithLogger(log.With(logger, "component", "iptables")), iptables.WithResyncPeriod(resyncPeriod))
if err != nil {
return nil, fmt.Errorf("failed to IP tables controller: %v", err)
}