From c155d34a43dcb66e12df0cc737104c3f34ebe99d Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Tue, 2 Sep 2025 22:28:28 +0200 Subject: [PATCH] inlet/outlet: add compile-time interface implementation check For "plugins" only. --- inlet/flow/input/file/root.go | 9 +++++++-- inlet/flow/input/udp/root.go | 9 +++++++-- outlet/metadata/provider/gnmi/root.go | 5 +++++ outlet/metadata/provider/snmp/root.go | 5 +++++ outlet/metadata/provider/static/root.go | 5 +++++ outlet/routing/provider/bioris/root.go | 5 +++++ outlet/routing/provider/bmp/root.go | 5 +++++ 7 files changed, 39 insertions(+), 4 deletions(-) diff --git a/inlet/flow/input/file/root.go b/inlet/flow/input/file/root.go index c3a433bc..38f64b1d 100644 --- a/inlet/flow/input/file/root.go +++ b/inlet/flow/input/file/root.go @@ -22,12 +22,17 @@ import ( type Input struct { r *reporter.Reporter t tomb.Tomb - config *Configuration + config Configuration send input.SendFunc } +var ( + _ input.Input = &Input{} + _ input.Configuration = Configuration{} +) + // New instantiate a new UDP listener from the provided configuration. -func (configuration *Configuration) New(r *reporter.Reporter, daemon daemon.Component, send input.SendFunc) (input.Input, error) { +func (configuration Configuration) New(r *reporter.Reporter, daemon daemon.Component, send input.SendFunc) (input.Input, error) { if len(configuration.Paths) == 0 { return nil, errors.New("no paths provided for file input") } diff --git a/inlet/flow/input/udp/root.go b/inlet/flow/input/udp/root.go index 3155c5f0..9ac1e270 100644 --- a/inlet/flow/input/udp/root.go +++ b/inlet/flow/input/udp/root.go @@ -25,7 +25,7 @@ import ( type Input struct { r *reporter.Reporter t tomb.Tomb - config *Configuration + config Configuration metrics struct { bytes *reporter.CounterVec @@ -40,8 +40,13 @@ type Input struct { send input.SendFunc // function to send to kafka } +var ( + _ input.Input = &Input{} + _ input.Configuration = Configuration{} +) + // New instantiate a new UDP listener from the provided configuration. -func (configuration *Configuration) New(r *reporter.Reporter, daemon daemon.Component, send input.SendFunc) (input.Input, error) { +func (configuration Configuration) New(r *reporter.Reporter, daemon daemon.Component, send input.SendFunc) (input.Input, error) { input := &Input{ r: r, config: configuration, diff --git a/outlet/metadata/provider/gnmi/root.go b/outlet/metadata/provider/gnmi/root.go index 9f094859..dc535e2a 100644 --- a/outlet/metadata/provider/gnmi/root.go +++ b/outlet/metadata/provider/gnmi/root.go @@ -24,6 +24,11 @@ type Provider struct { refresh chan bool } +var ( + _ provider.Provider = &Provider{} + _ provider.Configuration = Configuration{} +) + // New creates a new gNMI provider from configuration func (configuration Configuration) New(r *reporter.Reporter) (provider.Provider, error) { p := Provider{ diff --git a/outlet/metadata/provider/snmp/root.go b/outlet/metadata/provider/snmp/root.go index 1f8f917e..76c205ae 100644 --- a/outlet/metadata/provider/snmp/root.go +++ b/outlet/metadata/provider/snmp/root.go @@ -28,6 +28,11 @@ type Provider struct { } } +var ( + _ provider.Provider = &Provider{} + _ provider.Configuration = Configuration{} +) + // New creates a new SNMP provider from configuration func (configuration Configuration) New(r *reporter.Reporter) (provider.Provider, error) { for exporterIP, agentIP := range configuration.Agents { diff --git a/outlet/metadata/provider/static/root.go b/outlet/metadata/provider/static/root.go index e8c13ff6..c6178725 100644 --- a/outlet/metadata/provider/static/root.go +++ b/outlet/metadata/provider/static/root.go @@ -35,6 +35,11 @@ type Provider struct { } } +var ( + _ provider.Provider = &Provider{} + _ provider.Configuration = Configuration{} +) + // New creates a new static provider from configuration func (configuration Configuration) New(r *reporter.Reporter) (provider.Provider, error) { p := &Provider{ diff --git a/outlet/routing/provider/bioris/root.go b/outlet/routing/provider/bioris/root.go index 3d0d4798..df46131e 100644 --- a/outlet/routing/provider/bioris/root.go +++ b/outlet/routing/provider/bioris/root.go @@ -63,6 +63,11 @@ type Provider struct { // Dependencies define the dependencies of the BioRIS Provider. type Dependencies = provider.Dependencies +var ( + _ provider.Provider = &Provider{} + _ provider.Configuration = Configuration{} +) + // New creates a new BioRIS provider. func (configuration Configuration) New(r *reporter.Reporter, dependencies Dependencies) (provider.Provider, error) { p := Provider{ diff --git a/outlet/routing/provider/bmp/root.go b/outlet/routing/provider/bmp/root.go index f79e92d9..26b5fd37 100644 --- a/outlet/routing/provider/bmp/root.go +++ b/outlet/routing/provider/bmp/root.go @@ -44,6 +44,11 @@ type Provider struct { // Dependencies define the dependencies of the BMP component. type Dependencies = provider.Dependencies +var ( + _ provider.Provider = &Provider{} + _ provider.Configuration = Configuration{} +) + // New creates a new BMP component from its configuration. func (configuration Configuration) New(r *reporter.Reporter, dependencies Dependencies) (provider.Provider, error) { if dependencies.Clock == nil {