From 4bdf5315b6a8d05490070f07262c689d25af02e7 Mon Sep 17 00:00:00 2001 From: Vitor Rodrigo Vezani Date: Tue, 21 Jul 2026 13:19:25 -0300 Subject: [PATCH] Add pod support to ResourceProvider and update related tests (#1214) --- pkg/kube/resources.go | 12 ++++++++++++ pkg/kube/resources_test.go | 1 + pkg/validator/fullaudit.go | 1 + pkg/validator/fullaudit_test.go | 3 +++ 4 files changed, 17 insertions(+) diff --git a/pkg/kube/resources.go b/pkg/kube/resources.go index f8cc8219..40486650 100644 --- a/pkg/kube/resources.go +++ b/pkg/kube/resources.go @@ -52,6 +52,7 @@ type ResourceProvider struct { SourceType string Nodes []corev1.Node Namespaces []corev1.Namespace + Pods []corev1.Pod Resources resourceKindMap } @@ -127,6 +128,7 @@ func newResourceProvider(version, sourceType, sourceName string) ResourceProvide CreationTime: time.Now(), Nodes: make([]corev1.Node, 0), Namespaces: make([]corev1.Namespace, 0), + Pods: make([]corev1.Pod, 0), Resources: make(map[string][]GenericResource), } } @@ -304,6 +306,14 @@ func CreateResourceProviderFromAPI(ctx context.Context, kube kubernetes.Interfac } namespaces = nsList } + + logrus.Info("Loading pods") + pods, err := kube.CoreV1().Pods(c.Namespace).List(ctx, listOpts) + if err != nil { + logrus.Errorf("Error fetching Pods: %v", err) + return nil, err + } + logrus.Info("Setting up restmapper") resources, err := restmapper.GetAPIGroupResources(kube.Discovery()) if err != nil { @@ -383,6 +393,7 @@ func CreateResourceProviderFromAPI(ctx context.Context, kube kubernetes.Interfac provider.Nodes = nodes.Items provider.Namespaces = namespaces.Items + provider.Pods = pods.Items provider.Resources.addResources(kubernetesResources) logrus.Info("Done loading Kubernetes resources") return &provider, nil @@ -442,6 +453,7 @@ func (resources *ResourceProvider) addResourceFromString(contents string) error return err } workload.OriginalObjectYAML = contentBytes + resources.Pods = append(resources.Pods, pod) resources.Resources.addResource(workload) } else { newResource, err := NewGenericResourceFromBytes(contentBytes) diff --git a/pkg/kube/resources_test.go b/pkg/kube/resources_test.go index b8cdd6d1..341babb9 100644 --- a/pkg/kube/resources_test.go +++ b/pkg/kube/resources_test.go @@ -157,6 +157,7 @@ func TestGetResourceFromAPI(t *testing.T) { assert.Equal(t, tt.want.SourceName, resources.SourceName) assert.IsType(t, tt.want.CreationTime, resources.CreationTime) assert.Equal(t, 0, len(resources.Nodes), "Should not have any nodes") + assert.Equal(t, 5, len(resources.Pods), "Should have 5 pods") for k, v := range resources.Resources { fmt.Println("cont", k, v) } diff --git a/pkg/validator/fullaudit.go b/pkg/validator/fullaudit.go index 285d2ef0..562dd921 100644 --- a/pkg/validator/fullaudit.go +++ b/pkg/validator/fullaudit.go @@ -50,6 +50,7 @@ func RunAudit(ctx context.Context, config conf.Configuration, kubeResources *kub ClusterInfo: ClusterInfo{ Version: kubeResources.ServerVersion, Nodes: len(kubeResources.Nodes), + Pods: len(kubeResources.Pods), Namespaces: len(kubeResources.Namespaces), Controllers: kubeResources.Resources.GetNumberOfControllers(), }, diff --git a/pkg/validator/fullaudit_test.go b/pkg/validator/fullaudit_test.go index 20c4cf47..6fa6803d 100644 --- a/pkg/validator/fullaudit_test.go +++ b/pkg/validator/fullaudit_test.go @@ -51,6 +51,9 @@ func TestGetTemplateData(t *testing.T) { assert.EqualValues(t, sum, actualAudit.GetSummary()) assert.Equal(t, actualAudit.SourceType, "Cluster", "should be from a cluster") assert.Equal(t, actualAudit.SourceName, "test", "should be from a cluster") + assert.Equal(t, 5, actualAudit.ClusterInfo.Pods, "should report pod count from the cluster") + assert.Equal(t, 5, actualAudit.ClusterInfo.Controllers, "should report controller count from the cluster") + assert.Equal(t, 1, actualAudit.ClusterInfo.Namespaces, "should report namespace count from the cluster") expectedResults := []struct { kind string