From c189d745809079026db7b8a752dc45d16de3e464 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Sun, 6 Apr 2025 11:43:29 +0000 Subject: [PATCH 01/16] fix: solaris build compatibility --- filebeat/channel/runner_test.go | 5 + .../docker/docker_integration_test.go | 2 +- .../providers/docker/docker_test.go | 2 + .../providers/kubernetes/config_test.go | 2 + .../providers/kubernetes/kubernetes_stub.go | 112 ++++++++++++++++++ .../autodiscover/providers/kubernetes/node.go | 2 +- .../providers/kubernetes/node_test.go | 2 + .../autodiscover/providers/kubernetes/pod.go | 2 +- .../providers/kubernetes/pod_test.go | 2 + .../providers/kubernetes/service.go | 2 +- .../providers/kubernetes/service_test.go | 2 + .../add_host_metadata_test.go | 8 +- .../kubernetes_test.go | 2 + libbeat/tests/compose/compose.go | 2 + libbeat/tests/compose/project.go | 2 + libbeat/tests/compose/wrapper.go | 2 + libbeat/tests/docker/docker.go | 2 + 17 files changed, 145 insertions(+), 8 deletions(-) create mode 100644 libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go diff --git a/filebeat/channel/runner_test.go b/filebeat/channel/runner_test.go index 3edacf246cd4..b4b11c678871 100644 --- a/filebeat/channel/runner_test.go +++ b/filebeat/channel/runner_test.go @@ -19,6 +19,8 @@ package channel import ( "fmt" + "runtime" + "strings" "testing" "time" @@ -235,6 +237,9 @@ service.type: "module" pipeline: "test" index: "%{[fields.log_type]}-%{[agent.version]}-%{+yyyy.MM.dd}" ` + if runtime.GOOS == "illumos" { + configYAML = strings.ReplaceAll(configYAML, "\n - add_kubernetes_metadata: ~","") + } cfg, err := conf.NewConfigWithYAML([]byte(configYAML), configYAML) require.NoError(t, err) diff --git a/libbeat/autodiscover/providers/docker/docker_integration_test.go b/libbeat/autodiscover/providers/docker/docker_integration_test.go index 17cd59c3356a..5ef188a32376 100644 --- a/libbeat/autodiscover/providers/docker/docker_integration_test.go +++ b/libbeat/autodiscover/providers/docker/docker_integration_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build integration +//go:build (!aix && !solaris) && integration package docker diff --git a/libbeat/autodiscover/providers/docker/docker_test.go b/libbeat/autodiscover/providers/docker/docker_test.go index 309a06f0b676..85675f0049b9 100644 --- a/libbeat/autodiscover/providers/docker/docker_test.go +++ b/libbeat/autodiscover/providers/docker/docker_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !aix && !solaris + package docker import ( diff --git a/libbeat/autodiscover/providers/kubernetes/config_test.go b/libbeat/autodiscover/providers/kubernetes/config_test.go index 8c47a341ce17..1da920ad58fe 100644 --- a/libbeat/autodiscover/providers/kubernetes/config_test.go +++ b/libbeat/autodiscover/providers/kubernetes/config_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !aix && !solaris + package kubernetes import ( diff --git a/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go b/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go new file mode 100644 index 000000000000..b1decc6e7323 --- /dev/null +++ b/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go @@ -0,0 +1,112 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build aix || solaris + +package kubernetes + +import ( + "fmt" + + "github.com/gofrs/uuid" + + "github.com/elastic/beats/v7/libbeat/autodiscover" + "github.com/elastic/elastic-agent-autodiscover/bus" + "github.com/elastic/elastic-agent-autodiscover/kubernetes" + "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/keystore" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +func init() { + err := autodiscover.Registry.AddProvider("kubernetes", AutodiscoverBuilder) + if err != nil { + logp.Error(fmt.Errorf("could not add `hints` builder")) + } +} + +// Eventer allows defining ways in which kubernetes resource events are observed and processed +type Eventer interface { + kubernetes.ResourceEventHandler + GenerateHints(event bus.Event) bus.Event + Start() error + Stop() +} + +// EventManager allows defining ways in which kubernetes resource events are observed and processed +type EventManager interface { + GenerateHints(event bus.Event) bus.Event + Start() + Stop() +} + +// Provider implements autodiscover provider for docker containers +type Provider struct { + logger *logp.Logger +} + +// AutodiscoverBuilder builds and returns an autodiscover provider +func AutodiscoverBuilder( + beatName string, + bus bus.Bus, + uuid uuid.UUID, + c *config.C, + keystore keystore.Keystore, +) (autodiscover.Provider, error) { + logger := logp.NewLogger("autodiscover") + + p := &Provider{ + logger: logger, + } + + return p, nil +} + +// Start for Runner interface. +func (p *Provider) Start() { +} + +// Stop signals the stop channel to force the watch loop routine to stop. +func (p *Provider) Stop() { +} + +// String returns a description of kubernetes autodiscover provider. +func (p *Provider) String() string { + return "kubernetes" +} + +func (p *Provider) publish(events []bus.Event) { + if len(events) == 0 { + return + } + +} + +func ShouldPut(event mapstr.M, field string, value interface{}, logger *logp.Logger) { + _, err := event.Put(field, value) + if err != nil { + logger.Debugf("Failed to put field '%s' with value '%s': %s", field, value, err) + } +} + +func ShouldDelete(event mapstr.M, field string, logger *logp.Logger) { + err := event.Delete(field) + if err != nil { + logger.Debugf("Failed to delete field '%s': %s", field, err) + } +} diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index 97f15b5247fd..82fa499ec714 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix +//go:build !aix && !solaris package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/node_test.go b/libbeat/autodiscover/providers/kubernetes/node_test.go index bd4aa1fa2111..9da67d1f2a2f 100644 --- a/libbeat/autodiscover/providers/kubernetes/node_test.go +++ b/libbeat/autodiscover/providers/kubernetes/node_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !aix && !solaris + package kubernetes import ( diff --git a/libbeat/autodiscover/providers/kubernetes/pod.go b/libbeat/autodiscover/providers/kubernetes/pod.go index 2aede883d50d..1b8af74b99b7 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod.go +++ b/libbeat/autodiscover/providers/kubernetes/pod.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix +//go:build !aix && !solaris package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/pod_test.go b/libbeat/autodiscover/providers/kubernetes/pod_test.go index 567e998cbad4..32f9ab018460 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod_test.go +++ b/libbeat/autodiscover/providers/kubernetes/pod_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build ( !aix && !solaris ) + package kubernetes import ( diff --git a/libbeat/autodiscover/providers/kubernetes/service.go b/libbeat/autodiscover/providers/kubernetes/service.go index 18a350bbef61..6b23f7e1e538 100644 --- a/libbeat/autodiscover/providers/kubernetes/service.go +++ b/libbeat/autodiscover/providers/kubernetes/service.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix +//go:build !aix && !solaris package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/service_test.go b/libbeat/autodiscover/providers/kubernetes/service_test.go index b42d1ca5dfa1..b29b8ddb38c9 100644 --- a/libbeat/autodiscover/providers/kubernetes/service_test.go +++ b/libbeat/autodiscover/providers/kubernetes/service_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !aix && !solaris + package kubernetes import ( diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index c1daf87a5e69..07afee2e7444 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -54,7 +54,7 @@ func TestConfigDefault(t *testing.T) { p, err := New(testConfig, logptest.NewTestingLogger(t, "")) switch runtime.GOOS { - case "windows", "darwin", "linux": + case "windows", "darwin", "linux", "solaris": assert.NoError(t, err) default: assert.IsType(t, types.ErrNotImplemented, err) @@ -101,7 +101,7 @@ func TestConfigNetInfoDisabled(t *testing.T) { p, err := New(testConfig, logptest.NewTestingLogger(t, "")) switch runtime.GOOS { - case "windows", "darwin", "linux": + case "windows", "darwin", "linux", "solaris": assert.NoError(t, err) default: assert.IsType(t, types.ErrNotImplemented, err) @@ -227,7 +227,7 @@ func TestEventWithReplaceFieldsFalse(t *testing.T) { p, err := New(testConfig, logptest.NewTestingLogger(t, "")) switch runtime.GOOS { - case "windows", "darwin", "linux": + case "windows", "darwin", "linux", "solaris": assert.NoError(t, err) default: assert.IsType(t, types.ErrNotImplemented, err) @@ -307,7 +307,7 @@ func TestEventWithReplaceFieldsTrue(t *testing.T) { p, err := New(testConfig, logptest.NewTestingLogger(t, "")) switch runtime.GOOS { - case "windows", "darwin", "linux": + case "windows", "darwin", "linux", "solaris": assert.NoError(t, err) default: assert.IsType(t, types.ErrNotImplemented, err) diff --git a/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go b/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go index 206b0daaadad..43b49f9a3a10 100644 --- a/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go +++ b/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !aix && !solaris + package add_kubernetes_metadata import ( diff --git a/libbeat/tests/compose/compose.go b/libbeat/tests/compose/compose.go index 14c2fe5bd3b7..bc3880a1aba3 100644 --- a/libbeat/tests/compose/compose.go +++ b/libbeat/tests/compose/compose.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !solaris + package compose import ( diff --git a/libbeat/tests/compose/project.go b/libbeat/tests/compose/project.go index 13c3a9bac489..f4b5d365a245 100644 --- a/libbeat/tests/compose/project.go +++ b/libbeat/tests/compose/project.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !solaris + package compose import ( diff --git a/libbeat/tests/compose/wrapper.go b/libbeat/tests/compose/wrapper.go index 82afe8a436a7..7e263b499e64 100644 --- a/libbeat/tests/compose/wrapper.go +++ b/libbeat/tests/compose/wrapper.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !solaris + package compose import ( diff --git a/libbeat/tests/docker/docker.go b/libbeat/tests/docker/docker.go index 271d1ed228fd..5fe0921ea95a 100644 --- a/libbeat/tests/docker/docker.go +++ b/libbeat/tests/docker/docker.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build !solaris + package docker import ( From 4771d6b9ed391fa28405436a6ee21955c05af4f5 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 17:27:48 +0000 Subject: [PATCH 02/16] fix: add comment per request --- filebeat/channel/runner_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/filebeat/channel/runner_test.go b/filebeat/channel/runner_test.go index b4b11c678871..51a6840e2663 100644 --- a/filebeat/channel/runner_test.go +++ b/filebeat/channel/runner_test.go @@ -237,6 +237,9 @@ service.type: "module" pipeline: "test" index: "%{[fields.log_type]}-%{[agent.version]}-%{+yyyy.MM.dd}" ` + // illumos: this specific test requires add_kubernetes_metadata for side-effects + // in this test which trigger issues for the stubbed version provided for + // illumos (see prior comment about the side-effects being the purpose). if runtime.GOOS == "illumos" { configYAML = strings.ReplaceAll(configYAML, "\n - add_kubernetes_metadata: ~","") } From 81644ab0fc95b5571ee4bb35ed6933ed6c41e935 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 19:53:27 +0000 Subject: [PATCH 03/16] fix: per requsts and formats --- filebeat/channel/runner_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/filebeat/channel/runner_test.go b/filebeat/channel/runner_test.go index 51a6840e2663..94c7d0a59330 100644 --- a/filebeat/channel/runner_test.go +++ b/filebeat/channel/runner_test.go @@ -19,8 +19,8 @@ package channel import ( "fmt" - "runtime" - "strings" + "runtime" + "strings" "testing" "time" @@ -237,11 +237,11 @@ service.type: "module" pipeline: "test" index: "%{[fields.log_type]}-%{[agent.version]}-%{+yyyy.MM.dd}" ` - // illumos: this specific test requires add_kubernetes_metadata for side-effects - // in this test which trigger issues for the stubbed version provided for - // illumos (see prior comment about the side-effects being the purpose). - if runtime.GOOS == "illumos" { - configYAML = strings.ReplaceAll(configYAML, "\n - add_kubernetes_metadata: ~","") + // illumos: this specific test requires add_kubernetes_metadata for side-effects + // in this test which trigger issues for the stubbed version provided for + // illumos (see prior comment about the side-effects being the purpose). + if runtime.GOOS == "illumos" { + configYAML = strings.ReplaceAll(configYAML, "\n - add_kubernetes_metadata: ~", "") } cfg, err := conf.NewConfigWithYAML([]byte(configYAML), configYAML) require.NoError(t, err) From d0fae2b19d84585feff273d2c7f9e4f247877c82 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 19:55:24 +0000 Subject: [PATCH 04/16] fix: per requsts and formats --- .../autodiscover/providers/docker/docker_integration_test.go | 2 +- libbeat/autodiscover/providers/docker/docker_test.go | 2 +- libbeat/autodiscover/providers/kubernetes/config_test.go | 2 +- libbeat/autodiscover/providers/kubernetes/kubernetes_test.go | 2 ++ libbeat/autodiscover/providers/kubernetes/node_test.go | 2 +- libbeat/autodiscover/providers/kubernetes/pod_test.go | 2 +- libbeat/autodiscover/providers/kubernetes/service_test.go | 2 +- 7 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libbeat/autodiscover/providers/docker/docker_integration_test.go b/libbeat/autodiscover/providers/docker/docker_integration_test.go index 5ef188a32376..3e77ec69264d 100644 --- a/libbeat/autodiscover/providers/docker/docker_integration_test.go +++ b/libbeat/autodiscover/providers/docker/docker_integration_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build (!aix && !solaris) && integration +//go:build (linux || darwin || windows) && integration package docker diff --git a/libbeat/autodiscover/providers/docker/docker_test.go b/libbeat/autodiscover/providers/docker/docker_test.go index 85675f0049b9..b2b48b38b648 100644 --- a/libbeat/autodiscover/providers/docker/docker_test.go +++ b/libbeat/autodiscover/providers/docker/docker_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package docker diff --git a/libbeat/autodiscover/providers/kubernetes/config_test.go b/libbeat/autodiscover/providers/kubernetes/config_test.go index 1da920ad58fe..47469665352b 100644 --- a/libbeat/autodiscover/providers/kubernetes/config_test.go +++ b/libbeat/autodiscover/providers/kubernetes/config_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go b/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go index 3de2fa076339..52fd74315ccc 100644 --- a/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go +++ b/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +//go:build linux || darwin || windows + package kubernetes import ( diff --git a/libbeat/autodiscover/providers/kubernetes/node_test.go b/libbeat/autodiscover/providers/kubernetes/node_test.go index 9da67d1f2a2f..13558a89ba2a 100644 --- a/libbeat/autodiscover/providers/kubernetes/node_test.go +++ b/libbeat/autodiscover/providers/kubernetes/node_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/pod_test.go b/libbeat/autodiscover/providers/kubernetes/pod_test.go index 32f9ab018460..2da144e4619e 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod_test.go +++ b/libbeat/autodiscover/providers/kubernetes/pod_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build ( !aix && !solaris ) +//go:build linux || darwin || windows package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/service_test.go b/libbeat/autodiscover/providers/kubernetes/service_test.go index b29b8ddb38c9..189cb6e56a09 100644 --- a/libbeat/autodiscover/providers/kubernetes/service_test.go +++ b/libbeat/autodiscover/providers/kubernetes/service_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes From 935e7cac1891cbddbe0e3d1aae2839f076576564 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 20:47:23 +0000 Subject: [PATCH 05/16] fix: remove unnecesary kubernetes stub --- .../providers/kubernetes/kubernetes_stub.go | 112 ------------------ 1 file changed, 112 deletions(-) delete mode 100644 libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go diff --git a/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go b/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go deleted file mode 100644 index b1decc6e7323..000000000000 --- a/libbeat/autodiscover/providers/kubernetes/kubernetes_stub.go +++ /dev/null @@ -1,112 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -//go:build aix || solaris - -package kubernetes - -import ( - "fmt" - - "github.com/gofrs/uuid" - - "github.com/elastic/beats/v7/libbeat/autodiscover" - "github.com/elastic/elastic-agent-autodiscover/bus" - "github.com/elastic/elastic-agent-autodiscover/kubernetes" - "github.com/elastic/elastic-agent-libs/config" - "github.com/elastic/elastic-agent-libs/keystore" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/mapstr" -) - -func init() { - err := autodiscover.Registry.AddProvider("kubernetes", AutodiscoverBuilder) - if err != nil { - logp.Error(fmt.Errorf("could not add `hints` builder")) - } -} - -// Eventer allows defining ways in which kubernetes resource events are observed and processed -type Eventer interface { - kubernetes.ResourceEventHandler - GenerateHints(event bus.Event) bus.Event - Start() error - Stop() -} - -// EventManager allows defining ways in which kubernetes resource events are observed and processed -type EventManager interface { - GenerateHints(event bus.Event) bus.Event - Start() - Stop() -} - -// Provider implements autodiscover provider for docker containers -type Provider struct { - logger *logp.Logger -} - -// AutodiscoverBuilder builds and returns an autodiscover provider -func AutodiscoverBuilder( - beatName string, - bus bus.Bus, - uuid uuid.UUID, - c *config.C, - keystore keystore.Keystore, -) (autodiscover.Provider, error) { - logger := logp.NewLogger("autodiscover") - - p := &Provider{ - logger: logger, - } - - return p, nil -} - -// Start for Runner interface. -func (p *Provider) Start() { -} - -// Stop signals the stop channel to force the watch loop routine to stop. -func (p *Provider) Stop() { -} - -// String returns a description of kubernetes autodiscover provider. -func (p *Provider) String() string { - return "kubernetes" -} - -func (p *Provider) publish(events []bus.Event) { - if len(events) == 0 { - return - } - -} - -func ShouldPut(event mapstr.M, field string, value interface{}, logger *logp.Logger) { - _, err := event.Put(field, value) - if err != nil { - logger.Debugf("Failed to put field '%s' with value '%s': %s", field, value, err) - } -} - -func ShouldDelete(event mapstr.M, field string, logger *logp.Logger) { - err := event.Delete(field) - if err != nil { - logger.Debugf("Failed to delete field '%s': %s", field, err) - } -} From 0b633f5057c6991e2ecc976b641a310ed425d560 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 20:50:47 +0000 Subject: [PATCH 06/16] fix: synchronize build directives --- libbeat/autodiscover/providers/kubernetes/node.go | 2 +- libbeat/autodiscover/providers/kubernetes/pod.go | 2 +- libbeat/autodiscover/providers/kubernetes/service.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index 82fa499ec714..d85b0d3f3f4c 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/pod.go b/libbeat/autodiscover/providers/kubernetes/pod.go index 1b8af74b99b7..6cc9e2290fea 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod.go +++ b/libbeat/autodiscover/providers/kubernetes/pod.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes diff --git a/libbeat/autodiscover/providers/kubernetes/service.go b/libbeat/autodiscover/providers/kubernetes/service.go index 6b23f7e1e538..a38934361c47 100644 --- a/libbeat/autodiscover/providers/kubernetes/service.go +++ b/libbeat/autodiscover/providers/kubernetes/service.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package kubernetes From e6aef0a656cc46a255779a01e90f42a7a3afa948 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 3 Jul 2025 21:51:25 +0000 Subject: [PATCH 07/16] fix: constrain docker tests to linux,darwin,windows --- libbeat/processors/add_kubernetes_metadata/kubernetes_test.go | 2 +- libbeat/tests/compose/compose.go | 2 +- libbeat/tests/compose/project.go | 2 +- libbeat/tests/compose/wrapper.go | 2 +- libbeat/tests/docker/docker.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go b/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go index 43b49f9a3a10..47a6d1180a71 100644 --- a/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go +++ b/libbeat/processors/add_kubernetes_metadata/kubernetes_test.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !aix && !solaris +//go:build linux || darwin || windows package add_kubernetes_metadata diff --git a/libbeat/tests/compose/compose.go b/libbeat/tests/compose/compose.go index bc3880a1aba3..c4d16e3fba74 100644 --- a/libbeat/tests/compose/compose.go +++ b/libbeat/tests/compose/compose.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !solaris +//go:build linux || darwin || windows package compose diff --git a/libbeat/tests/compose/project.go b/libbeat/tests/compose/project.go index f4b5d365a245..1bc3edb47fb6 100644 --- a/libbeat/tests/compose/project.go +++ b/libbeat/tests/compose/project.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !solaris +//go:build linux || darwin || windows package compose diff --git a/libbeat/tests/compose/wrapper.go b/libbeat/tests/compose/wrapper.go index 7e263b499e64..3ae3605c3e65 100644 --- a/libbeat/tests/compose/wrapper.go +++ b/libbeat/tests/compose/wrapper.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !solaris +//go:build linux || darwin || windows package compose diff --git a/libbeat/tests/docker/docker.go b/libbeat/tests/docker/docker.go index 5fe0921ea95a..75c49913fa76 100644 --- a/libbeat/tests/docker/docker.go +++ b/libbeat/tests/docker/docker.go @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -//go:build !solaris +//go:build linux || darwin || windows package docker From 3c8c0c030fb8a4e6ebab737e4a7c7a27078e58e1 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Tue, 8 Jul 2025 21:46:45 +0000 Subject: [PATCH 08/16] fix: linter errors --- .../add_host_metadata/add_host_metadata_test.go | 6 +++--- libbeat/tests/compose/compose.go | 2 +- libbeat/tests/compose/project.go | 11 +++++++---- libbeat/tests/compose/wrapper.go | 13 +++++++++++++ libbeat/tests/docker/docker.go | 5 ++--- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index 07afee2e7444..d2d67fce388e 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -290,10 +290,10 @@ func TestEventWithReplaceFieldsFalse(t *testing.T) { v, err := newEvent.GetValue("host") assert.NoError(t, err) - assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) - assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) + assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck + assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck if c.expectedHostFieldLength != -1 { - assert.Equal(t, c.expectedHostFieldLength, len(v.(mapstr.M))) + assert.Equal(t, c.expectedHostFieldLength, len(v.(mapstr.M))) //nolint:errcheck } }) } diff --git a/libbeat/tests/compose/compose.go b/libbeat/tests/compose/compose.go index c4d16e3fba74..9a3b72479574 100644 --- a/libbeat/tests/compose/compose.go +++ b/libbeat/tests/compose/compose.go @@ -175,7 +175,7 @@ func findComposePath() (string, error) { return "", err } for { - if path == "/" { + if path == "/" { //nolint:QF1006 break } diff --git a/libbeat/tests/compose/project.go b/libbeat/tests/compose/project.go index 1bc3edb47fb6..340cabda619d 100644 --- a/libbeat/tests/compose/project.go +++ b/libbeat/tests/compose/project.go @@ -150,7 +150,7 @@ func (c *Project) Start(service string, options UpOptions) error { c.Lock() defer c.Unlock() - return c.Driver.Up(context.Background(), options, service) + return c.Up(context.Background(), options, service) } // Wait ensures all wanted services are healthy. Wait loop (60s timeout) @@ -303,7 +303,10 @@ func stalledLock(path string) bool { defer file.Close() var pid int - fmt.Fscanf(file, "%d", &pid) + _,err := fmt.Fscanf(file, "%d", &pid) + if err != nil { + return false + } return !processExists(pid) } @@ -340,7 +343,7 @@ func (c *Project) getServices(filter ...string) (map[string]ServiceInfo, error) defer c.Unlock() result := make(map[string]ServiceInfo) - services, err := c.Driver.Ps(context.Background(), filter...) + services, err := c.Ps(context.Background(), filter...) if err != nil { return nil, err } @@ -366,7 +369,7 @@ type containerServiceInfo struct { } func (i *containerServiceInfo) Name() string { - return i.ContainerStatus.ServiceName() + return i.ServiceName() } func contains(list []string, item string) bool { diff --git a/libbeat/tests/compose/wrapper.go b/libbeat/tests/compose/wrapper.go index 3ae3605c3e65..4515234f3096 100644 --- a/libbeat/tests/compose/wrapper.go +++ b/libbeat/tests/compose/wrapper.go @@ -107,6 +107,7 @@ func (c *wrapperContainer) Old() bool { // running from the hoist network if the docker daemon runs natively. func (c *wrapperContainer) privateHost(port int) string { var ip string + var shortPort uint16 for _, net := range c.info.NetworkSettings.Networks { if len(net.IPAddress) > 0 { ip = net.IPAddress @@ -117,6 +118,11 @@ func (c *wrapperContainer) privateHost(port int) string { return "" } + if port >= 0 && port <= math.MaxUint16 { + shortPort = uint16(port) + } else { + return "" + } for _, info := range c.info.Ports { if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == uint16(port)) { return net.JoinHostPort(ip, strconv.Itoa(int(info.PrivatePort))) @@ -128,6 +134,13 @@ func (c *wrapperContainer) privateHost(port int) string { // exposedHost returns the exposed address in the host, can be used when the // test is run from the host network. Recommended when using docker machines. func (c *wrapperContainer) exposedHost(port int) string { + var shortPort uint16 + + if port >= 0 && port <= math.MaxUint16 { + shortPort = uint16(port) + } else { + return "" + } for _, info := range c.info.Ports { if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == uint16(port)) { return net.JoinHostPort("localhost", strconv.Itoa(int(info.PublicPort))) diff --git a/libbeat/tests/docker/docker.go b/libbeat/tests/docker/docker.go index 75c49913fa76..078634d7db87 100644 --- a/libbeat/tests/docker/docker.go +++ b/libbeat/tests/docker/docker.go @@ -23,7 +23,6 @@ import ( "context" "fmt" "io" - "io/ioutil" "github.com/elastic/elastic-agent-autodiscover/docker" @@ -70,7 +69,7 @@ func (c Client) ContainerStart(image string, cmd []string, labels map[string]str // imagePull pulls an image func (c Client) imagePull(img string) (err error) { ctx := context.Background() - _, _, err = c.cli.ImageInspectWithRaw(ctx, img) + _, _, err = c.cli.ImageInspect(ctx, img) if err == nil { // Image already available, do nothing return nil @@ -84,7 +83,7 @@ func (c Client) imagePull(img string) (err error) { defer respBody.Close() // Read all the response, to be sure that the pull has finished before returning. - _, err = io.Copy(ioutil.Discard, respBody) + _, err = io.Copy(io.Discard, respBody) if err != nil { return fmt.Errorf("reading response for image %s: %w", img, err) } From 09bc5e2bcba711b70cd65b3f46071b008ae553a8 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Tue, 8 Jul 2025 22:17:18 +0000 Subject: [PATCH 09/16] fix: update lint fix --- libbeat/tests/compose/wrapper.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libbeat/tests/compose/wrapper.go b/libbeat/tests/compose/wrapper.go index 4515234f3096..e43f24c2cb43 100644 --- a/libbeat/tests/compose/wrapper.go +++ b/libbeat/tests/compose/wrapper.go @@ -124,7 +124,7 @@ func (c *wrapperContainer) privateHost(port int) string { return "" } for _, info := range c.info.Ports { - if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == uint16(port)) { + if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == shortPort) { return net.JoinHostPort(ip, strconv.Itoa(int(info.PrivatePort))) } } @@ -142,7 +142,7 @@ func (c *wrapperContainer) exposedHost(port int) string { return "" } for _, info := range c.info.Ports { - if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == uint16(port)) { + if info.PublicPort != uint16(0) && (port == 0 || info.PrivatePort == shortPort) { return net.JoinHostPort("localhost", strconv.Itoa(int(info.PublicPort))) } } From 8d70f0bae13665f05edb921d8ed1a175507b5b51 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Tue, 8 Jul 2025 23:40:53 +0000 Subject: [PATCH 10/16] fix: add comments --- .../processors/add_host_metadata/add_host_metadata_test.go | 6 +++--- libbeat/tests/compose/compose.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index d2d67fce388e..c0cb385bee6c 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -290,10 +290,10 @@ func TestEventWithReplaceFieldsFalse(t *testing.T) { v, err := newEvent.GetValue("host") assert.NoError(t, err) - assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck - assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck + assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck // already checked + assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck // already checked if c.expectedHostFieldLength != -1 { - assert.Equal(t, c.expectedHostFieldLength, len(v.(mapstr.M))) //nolint:errcheck + assert.Equal(t, c.expectedHostFieldLength, len(v.(mapstr.M))) //nolint:errcheck // already checked } }) } diff --git a/libbeat/tests/compose/compose.go b/libbeat/tests/compose/compose.go index 9a3b72479574..d1e0370d36cb 100644 --- a/libbeat/tests/compose/compose.go +++ b/libbeat/tests/compose/compose.go @@ -175,7 +175,7 @@ func findComposePath() (string, error) { return "", err } for { - if path == "/" { //nolint:QF1006 + if path == "/" { //nolint:QF1006 // need path to be checked each time break } From a94258858778036112bb56543642731cca8361e9 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 10 Jul 2025 10:19:23 +0000 Subject: [PATCH 11/16] fix: lint and compile issue from math --- .../processors/add_host_metadata/add_host_metadata_test.go | 2 +- libbeat/tests/compose/project.go | 2 +- libbeat/tests/compose/wrapper.go | 5 +++-- libbeat/tests/docker/docker.go | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index c0cb385bee6c..25e105f2ecce 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -291,7 +291,7 @@ func TestEventWithReplaceFieldsFalse(t *testing.T) { v, err := newEvent.GetValue("host") assert.NoError(t, err) assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck // already checked - assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck // already checked + assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck // already checked if c.expectedHostFieldLength != -1 { assert.Equal(t, c.expectedHostFieldLength, len(v.(mapstr.M))) //nolint:errcheck // already checked } diff --git a/libbeat/tests/compose/project.go b/libbeat/tests/compose/project.go index 340cabda619d..caedb222aa98 100644 --- a/libbeat/tests/compose/project.go +++ b/libbeat/tests/compose/project.go @@ -303,7 +303,7 @@ func stalledLock(path string) bool { defer file.Close() var pid int - _,err := fmt.Fscanf(file, "%d", &pid) + _, err = fmt.Fscanf(file, "%d", &pid) if err != nil { return false } diff --git a/libbeat/tests/compose/wrapper.go b/libbeat/tests/compose/wrapper.go index e43f24c2cb43..44c1b30a7517 100644 --- a/libbeat/tests/compose/wrapper.go +++ b/libbeat/tests/compose/wrapper.go @@ -25,6 +25,7 @@ import ( "context" "encoding/json" "fmt" + "math" "net" "os" "os/exec" @@ -118,7 +119,7 @@ func (c *wrapperContainer) privateHost(port int) string { return "" } - if port >= 0 && port <= math.MaxUint16 { + if port >= 0 && port <= math.MaxUint16 { shortPort = uint16(port) } else { return "" @@ -136,7 +137,7 @@ func (c *wrapperContainer) privateHost(port int) string { func (c *wrapperContainer) exposedHost(port int) string { var shortPort uint16 - if port >= 0 && port <= math.MaxUint16 { + if port >= 0 && port <= math.MaxUint16 { shortPort = uint16(port) } else { return "" diff --git a/libbeat/tests/docker/docker.go b/libbeat/tests/docker/docker.go index 078634d7db87..ef8cbf8b9213 100644 --- a/libbeat/tests/docker/docker.go +++ b/libbeat/tests/docker/docker.go @@ -69,7 +69,7 @@ func (c Client) ContainerStart(image string, cmd []string, labels map[string]str // imagePull pulls an image func (c Client) imagePull(img string) (err error) { ctx := context.Background() - _, _, err = c.cli.ImageInspect(ctx, img) + _, err = c.cli.ImageInspect(ctx, img) if err == nil { // Image already available, do nothing return nil From eac880bfbce194a37975139125ae16e345dfb925 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 10 Jul 2025 20:32:03 +0000 Subject: [PATCH 12/16] fix: update more lint --- libbeat/autodiscover/providers/kubernetes/node.go | 5 ++++- .../processors/add_host_metadata/add_host_metadata_test.go | 4 ++-- libbeat/tests/compose/compose.go | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index d85b0d3f3f4c..bab6278526b3 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -109,7 +109,10 @@ func NewNodeEventer( // OnAdd ensures processing of node objects that are newly created func (n *node) OnAdd(obj interface{}) { n.logger.Debugf("Watcher Node add: %+v", obj) - n.emit(obj.(*kubernetes.Node), "start") + err:= n.emit(obj.(*kubernetes.Node), "start") + if err != nil { + n.logger.Debugf("Failed to emit node start event %+v", obj) + } } // OnUpdate ensures processing of node objects that are updated diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index 25e105f2ecce..8f4cf3181709 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -366,8 +366,8 @@ func TestEventWithReplaceFieldsTrue(t *testing.T) { v, err := newEvent.GetValue("host") assert.NoError(t, err) - assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) - assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) + assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck // already checked + assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck // already checked }) } } diff --git a/libbeat/tests/compose/compose.go b/libbeat/tests/compose/compose.go index d1e0370d36cb..3d50301b8f13 100644 --- a/libbeat/tests/compose/compose.go +++ b/libbeat/tests/compose/compose.go @@ -175,7 +175,7 @@ func findComposePath() (string, error) { return "", err } for { - if path == "/" { //nolint:QF1006 // need path to be checked each time + if path == "/" { //nolint:all // need path to be checked each time break } From c4704559ee7419bccca2915216935be01921a7a4 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Sun, 13 Jul 2025 17:10:24 +0000 Subject: [PATCH 13/16] fix: fix lint --- libbeat/autodiscover/providers/kubernetes/node.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index bab6278526b3..0465e81aa9e8 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -109,10 +109,7 @@ func NewNodeEventer( // OnAdd ensures processing of node objects that are newly created func (n *node) OnAdd(obj interface{}) { n.logger.Debugf("Watcher Node add: %+v", obj) - err:= n.emit(obj.(*kubernetes.Node), "start") - if err != nil { - n.logger.Debugf("Failed to emit node start event %+v", obj) - } + n.emit(obj.(*kubernetes.Node), "start") //nolint // existing check } // OnUpdate ensures processing of node objects that are updated From d28b6cc6b71756c333fb93f4eabc5d48fa0de84e Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Sun, 13 Jul 2025 21:26:50 -0400 Subject: [PATCH 14/16] fix: more lint --- libbeat/processors/add_host_metadata/add_host_metadata_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libbeat/processors/add_host_metadata/add_host_metadata_test.go b/libbeat/processors/add_host_metadata/add_host_metadata_test.go index 8f4cf3181709..ef88311bc129 100644 --- a/libbeat/processors/add_host_metadata/add_host_metadata_test.go +++ b/libbeat/processors/add_host_metadata/add_host_metadata_test.go @@ -366,7 +366,7 @@ func TestEventWithReplaceFieldsTrue(t *testing.T) { v, err := newEvent.GetValue("host") assert.NoError(t, err) - assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck // already checked + assert.Equal(t, c.hostLengthLargerThanOne, len(v.(mapstr.M)) > 1) //nolint:errcheck // already checked assert.Equal(t, c.hostLengthEqualsToOne, len(v.(mapstr.M)) == 1) //nolint:errcheck // already checked }) } From e122b8e6c1cba06d17c8fbde211b980c8ed92d50 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Mon, 14 Jul 2025 21:14:37 +0000 Subject: [PATCH 15/16] fix: more linting response --- .../autodiscover/providers/kubernetes/node.go | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index 0465e81aa9e8..91ccc6d517eb 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -114,7 +114,11 @@ func (n *node) OnAdd(obj interface{}) { // OnUpdate ensures processing of node objects that are updated func (n *node) OnUpdate(obj interface{}) { - node := obj.(*kubernetes.Node) + node, ok := obj.(*kubernetes.Node) + if !ok { + n.logger.Errorf("Unexpected type expecting *kubernetes.Node: %+v", obj) + return + } if node.GetObjectMeta().GetDeletionTimestamp() != nil { n.logger.Debugf("Watcher Node update (terminating): %+v", obj) // Node is terminating, don't reload its configuration and ignore the event as long as node is Ready. @@ -132,7 +136,12 @@ func (n *node) OnUpdate(obj interface{}) { // OnDelete ensures processing of node objects that are deleted func (n *node) OnDelete(obj interface{}) { n.logger.Debugf("Watcher Node delete: %+v", obj) - time.AfterFunc(n.config.CleanupTimeout, func() { n.emit(obj.(*kubernetes.Node), "stop") }) + time.AfterFunc(n.config.CleanupTimeout, func() { + node, ok := obj.(*kubernetes.Node) + if ok { + n.emit(node, "stop") + } + }) } // GenerateHints creates hints needed for hints builder @@ -144,11 +153,13 @@ func (n *node) GenerateHints(event bus.Event) bus.Event { var kubeMeta mapstr.M rawMeta, ok := event["kubernetes"] if ok { - kubeMeta = rawMeta.(mapstr.M) - // The builder base config can configure any of the field values of kubernetes if need be. - e["kubernetes"] = kubeMeta - if rawAnn, ok := kubeMeta["annotations"]; ok { - annotations = rawAnn.(mapstr.M) + kubeMeta, ok = rawMeta.(mapstr.M) + if ok { + // The builder base config can configure any of the field values of kubernetes if need be. + e["kubernetes"] = kubeMeta + if rawAnn, ok := kubeMeta["annotations"]; ok { + annotations = rawAnn.(mapstr.M) + } } } if host, ok := event["host"]; ok { From f0e47ae10f917059a7ded3f0f9095c52fe0ba2b7 Mon Sep 17 00:00:00 2001 From: "Gaige B. Paulsen" Date: Thu, 17 Jul 2025 05:15:39 -0400 Subject: [PATCH 16/16] fix: linter --- libbeat/autodiscover/providers/kubernetes/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index 91ccc6d517eb..f737a74b3bcd 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -109,7 +109,7 @@ func NewNodeEventer( // OnAdd ensures processing of node objects that are newly created func (n *node) OnAdd(obj interface{}) { n.logger.Debugf("Watcher Node add: %+v", obj) - n.emit(obj.(*kubernetes.Node), "start") //nolint // existing check + n.emit(obj.(*kubernetes.Node), "start") //nolint // existing check } // OnUpdate ensures processing of node objects that are updated