Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package polaris for openSUSE:Factory checked in at 2023-11-02 20:21:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/polaris (Old) and /work/SRC/openSUSE:Factory/.polaris.new.17445 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "polaris" Thu Nov 2 20:21:21 2023 rev:23 rq:1121699 version:8.5.2 Changes: -------- --- /work/SRC/openSUSE:Factory/polaris/polaris.changes 2023-09-06 19:02:05.247887895 +0200 +++ /work/SRC/openSUSE:Factory/.polaris.new.17445/polaris.changes 2023-11-02 20:21:35.052088006 +0100 @@ -1,0 +2,6 @@ +Wed Nov 01 19:21:58 UTC 2023 - [email protected] + +- Update to version 8.5.2: + * Using controller-utils to get workloads (#1012) + +------------------------------------------------------------------- Old: ---- polaris-8.5.1.obscpio New: ---- polaris-8.5.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ polaris.spec ++++++ --- /var/tmp/diff_new_pack.9H7WUk/_old 2023-11-02 20:21:36.100126569 +0100 +++ /var/tmp/diff_new_pack.9H7WUk/_new 2023-11-02 20:21:36.100126569 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: polaris -Version: 8.5.1 +Version: 8.5.2 Release: 0 Summary: Validation of best practices in your Kubernetes clusters License: Apache-2.0 @@ -39,8 +39,7 @@ * As a command-line tool, so you can test local YAML files, e.g. as part of a CI/CD process. %prep -%setup -q -%setup -q -T -D -a 1 +%autosetup -p 1 -a 1 %build go build \ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9H7WUk/_old 2023-11-02 20:21:36.132127747 +0100 +++ /var/tmp/diff_new_pack.9H7WUk/_new 2023-11-02 20:21:36.136127893 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/FairwindsOps/polaris</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">8.5.1</param> + <param name="revision">8.5.2</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> </service> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.9H7WUk/_old 2023-11-02 20:21:36.156128630 +0100 +++ /var/tmp/diff_new_pack.9H7WUk/_new 2023-11-02 20:21:36.160128776 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/FairwindsOps/polaris</param> - <param name="changesrevision">97687761a78388a3d00ad875601a19f48a0999ae</param></service></servicedata> + <param name="changesrevision">f295dd0fb5df11439243d13e633ebb47eb9503cf</param></service></servicedata> (No newline at EOF) ++++++ polaris-8.5.1.obscpio -> polaris-8.5.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/polaris-8.5.1/pkg/kube/resources.go new/polaris-8.5.2/pkg/kube/resources.go --- old/polaris-8.5.1/pkg/kube/resources.go 2023-09-05 19:15:45.000000000 +0200 +++ new/polaris-8.5.2/pkg/kube/resources.go 2023-11-01 19:59:46.000000000 +0100 @@ -26,6 +26,7 @@ "strings" "time" + "github.com/fairwindsops/controller-utils/pkg/controller" conf "github.com/fairwindsops/polaris/pkg/config" "github.com/sirupsen/logrus" @@ -33,7 +34,6 @@ corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" k8sYaml "k8s.io/apimachinery/pkg/util/yaml" "k8s.io/client-go/dynamic" @@ -297,13 +297,6 @@ } 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 { @@ -358,17 +351,24 @@ kubernetesResources = append(kubernetesResources, res) } } - - objectCache := map[string]unstructured.Unstructured{} - logrus.Info("Loading controllers") - controllers, err := LoadControllers(ctx, pods.Items, dynamic, restMapper, objectCache) - if err != nil { - logrus.Errorf("Error loading controllers from pods: %v", err) - return nil, err + client := controller.Client{ + Context: ctx, + Dynamic: dynamic, + RESTMapper: restMapper, + } + topControllers, err := client.GetAllTopControllersSummary("") + if err != nil { + return nil, fmt.Errorf("error while getting all TopControllers: %v", err) + } + for _, workload := range topControllers { + topController := workload.TopController + workloadObj, err := NewGenericResourceFromUnstructured(topController, nil) + if err != nil { + return nil, fmt.Errorf("could not parse workload %v: %w", workload, err) + } + kubernetesResources = append(kubernetesResources, workloadObj) } - // resources loaded from custom checks can also contain controllers and thus would be added twice to the provider - kubernetesResources = deduplicateControllers(append(kubernetesResources, controllers...)) provider.Nodes = nodes.Items provider.Namespaces = namespaces.Items @@ -377,49 +377,6 @@ return &provider, nil } -// LoadControllers loads a list of controllers from the kubeResources Pods -func LoadControllers(ctx context.Context, pods []corev1.Pod, dynamicClient dynamic.Interface, restMapperPointer meta.RESTMapper, objectCache map[string]unstructured.Unstructured) ([]GenericResource, error) { - interfaces := []GenericResource{} - deduped := map[string]*corev1.Pod{} - for idx, pod := range pods { - owners := pod.ObjectMeta.OwnerReferences - if len(owners) == 0 { - deduped[pod.ObjectMeta.Namespace+"/Pod/"+pod.ObjectMeta.Name] = &pods[idx] - continue - } - deduped[pod.ObjectMeta.Namespace+"/"+owners[0].Kind+"/"+owners[0].Name] = &pods[idx] - } - for key, pod := range deduped { - logrus.Debugf("Resolving controller from pod %s", key) - workload, err := ResolveControllerFromPod(ctx, *pod, dynamicClient, restMapperPointer, objectCache) - if err != nil { - return nil, err - } - interfaces = append(interfaces, workload) - } - return interfaces, nil -} - -// Because the controllers with an Owner take on the name of the Owner, this eliminates any duplicates. -// In cases like CronJobs older children can hang around, so this takes the most recent. -func deduplicateControllers(inputResources []GenericResource) []GenericResource { - controllerMap := make(map[string]GenericResource) - for _, controller := range inputResources { - key := controller.ObjectMeta.GetNamespace() + "/" + controller.Kind + "/" + controller.ObjectMeta.GetName() - oldController, ok := controllerMap[key] - if !ok || controller.ObjectMeta.GetCreationTimestamp().Time.After(oldController.ObjectMeta.GetCreationTimestamp().Time) { - controllerMap[key] = controller - } - } - results := make([]GenericResource, len(controllerMap)) - idx := 0 - for _, controller := range controllerMap { - results[idx] = controller - idx++ - } - return results -} - func (resources *ResourceProvider) addResourcesFromReader(reader io.Reader) error { contents, err := io.ReadAll(reader) if err != nil { ++++++ polaris.obsinfo ++++++ --- /var/tmp/diff_new_pack.9H7WUk/_old 2023-11-02 20:21:36.436138932 +0100 +++ /var/tmp/diff_new_pack.9H7WUk/_new 2023-11-02 20:21:36.440139080 +0100 @@ -1,5 +1,5 @@ name: polaris -version: 8.5.1 -mtime: 1693934145 -commit: 97687761a78388a3d00ad875601a19f48a0999ae +version: 8.5.2 +mtime: 1698865186 +commit: f295dd0fb5df11439243d13e633ebb47eb9503cf ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/polaris/vendor.tar.gz /work/SRC/openSUSE:Factory/.polaris.new.17445/vendor.tar.gz differ: char 5, line 1
