Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kor for openSUSE:Factory checked in at 2024-06-19 16:39:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kor (Old) and /work/SRC/openSUSE:Factory/.kor.new.18349 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kor" Wed Jun 19 16:39:03 2024 rev:19 rq:1181642 version:0.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/kor/kor.changes 2024-06-18 22:53:30.837969362 +0200 +++ /work/SRC/openSUSE:Factory/.kor.new.18349/kor.changes 2024-06-19 16:39:41.628030821 +0200 @@ -1,0 +2,7 @@ +Wed Jun 19 04:46:26 UTC 2024 - opensuse_buildserv...@ojkastl.de + +- Update to version 0.5.1: + * feat: Add OpenShift exceptions (#311) + * fix: remove reason shorthand (#314) + +------------------------------------------------------------------- Old: ---- kor-0.5.0.obscpio New: ---- kor-0.5.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kor.spec ++++++ --- /var/tmp/diff_new_pack.9jeStt/_old 2024-06-19 16:39:44.140120257 +0200 +++ /var/tmp/diff_new_pack.9jeStt/_new 2024-06-19 16:39:44.144120399 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: kor -Version: 0.5.0 +Version: 0.5.1 Release: 0 Summary: Tool to discover unused Kubernetes Resources License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9jeStt/_old 2024-06-19 16:39:44.180121681 +0200 +++ /var/tmp/diff_new_pack.9jeStt/_new 2024-06-19 16:39:44.184121823 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/yonahd/kor</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.5.0</param> + <param name="revision">v0.5.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.9jeStt/_old 2024-06-19 16:39:44.208122678 +0200 +++ /var/tmp/diff_new_pack.9jeStt/_new 2024-06-19 16:39:44.212122820 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/yonahd/kor</param> - <param name="changesrevision">a2f3629e7738e8013ddaa470da5f6cde434ebef3</param></service></servicedata> + <param name="changesrevision">ced2ef283271806d0102c102f21c28766344d423</param></service></servicedata> (No newline at EOF) ++++++ kor-0.5.0.obscpio -> kor-0.5.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/.github/pull_request_template.md new/kor-0.5.1/.github/pull_request_template.md --- old/kor-0.5.0/.github/pull_request_template.md 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/.github/pull_request_template.md 2024-06-18 20:44:31.000000000 +0200 @@ -22,7 +22,7 @@ ## GitHub Issue -[XX-XX] +Closes [XX-XX] <!-- Notes that may be helpful for anyone reviewing this PR --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/README.md new/kor-0.5.1/README.md --- old/kor-0.5.0/README.md 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/README.md 2024-06-18 20:44:31.000000000 +0200 @@ -136,7 +136,7 @@ --no-interactive Do not prompt for confirmation when deleting resources. Be careful using this flag! --older-than string The minimum age of the resources to be considered unused. This flag cannot be used together with newer-than flag. Example: --older-than=1h2m -o, --output string Output format (table, json or yaml) (default "table") - -r, --show-reason Print reason resource is considered unused + --show-reason Print reason resource is considered unused --slack-auth-token string Slack auth token to send notifications to. --slack-auth-token requires --slack-channel to be set. --slack-channel string Slack channel to send notifications to. --slack-channel requires --slack-auth-token to be set. --slack-webhook-url string Slack webhook URL to send notifications to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/cmd/kor/root.go new/kor-0.5.1/cmd/kor/root.go --- old/kor-0.5.0/cmd/kor/root.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/cmd/kor/root.go 2024-06-18 20:44:31.000000000 +0200 @@ -60,7 +60,7 @@ rootCmd.PersistentFlags().BoolVar(&opts.NoInteractive, "no-interactive", false, "Do not prompt for confirmation when deleting resources. Be careful using this flag!") rootCmd.PersistentFlags().BoolVarP(&opts.Verbose, "verbose", "v", false, "Verbose output (print empty namespaces)") rootCmd.PersistentFlags().StringVar(&opts.GroupBy, "group-by", "namespace", "Group output by (namespace, resource)") - rootCmd.PersistentFlags().BoolVarP(&opts.ShowReason, "show-reason", "r", false, "Print reason resource is considered unused") + rootCmd.PersistentFlags().BoolVar(&opts.ShowReason, "show-reason", false, "Print reason resource is considered unused") addFilterOptionsFlag(rootCmd, filterOptions) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/clusterroles.go new/kor-0.5.1/pkg/kor/clusterroles.go --- old/kor-0.5.0/pkg/kor/clusterroles.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/clusterroles.go 2024-06-18 20:44:31.000000000 +0200 @@ -124,6 +124,11 @@ return nil, nil, err } + config, err := unmarshalConfig(clusterRolesConfig) + if err != nil { + return nil, nil, err + } + var unusedClusterRoles []string names := make([]string, 0, len(clusterRoles.Items)) @@ -137,11 +142,6 @@ continue } - config, err := unmarshalConfig(clusterRolesConfig) - if err != nil { - return nil, nil, err - } - exceptionFound, err := isResourceException(clusterRole.Name, clusterRole.Namespace, config.ExceptionClusterRoles) if err != nil { return nil, nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/crds.go new/kor-0.5.1/pkg/kor/crds.go --- old/kor-0.5.0/pkg/kor/crds.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/crds.go 2024-06-18 20:44:31.000000000 +0200 @@ -29,16 +29,16 @@ return nil, err } + config, err := unmarshalConfig(crdsConfig) + if err != nil { + return nil, err + } + for _, crd := range crds.Items { if pass := filters.KorLabelFilter(&crd, &filters.Options{}); pass { continue } - config, err := unmarshalConfig(crdsConfig) - if err != nil { - return nil, err - } - exceptionFound, err := isResourceException(crd.Name, crd.Namespace, config.ExceptionCrds) if err != nil { return nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/daemonsets.go new/kor-0.5.1/pkg/kor/daemonsets.go --- old/kor-0.5.0/pkg/kor/daemonsets.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/daemonsets.go 2024-06-18 20:44:31.000000000 +0200 @@ -23,6 +23,11 @@ return nil, err } + config, err := unmarshalConfig(daemonsetsConfig) + if err != nil { + return nil, err + } + var daemonSetsWithoutReplicas []ResourceInfo for _, daemonSet := range daemonSetsList.Items { @@ -30,11 +35,6 @@ continue } - config, err := unmarshalConfig(daemonsetsConfig) - if err != nil { - return nil, err - } - exceptionFound, err := isResourceException(daemonSet.Name, daemonSet.Namespace, config.ExceptionDaemonSets) if err != nil { return nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/clusterroles/clusterroles.json new/kor-0.5.1/pkg/kor/exceptions/clusterroles/clusterroles.json --- old/kor-0.5.0/pkg/kor/exceptions/clusterroles/clusterroles.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/clusterroles/clusterroles.json 2024-06-18 20:44:31.000000000 +0200 @@ -6,14 +6,118 @@ }, { "Namespace": "", + "ResourceName": "alert-routing-edit" + }, + { + "Namespace": "", "ResourceName": "cloud-provider" }, { "Namespace": "", + "ResourceName": "cluster-debugger" + }, + { + "Namespace": "", "ResourceName": "edit" }, { "Namespace": "", + "ResourceName": "global-operators-admin" + }, + { + "Namespace": "", + "ResourceName": "global-operators-edit" + }, + { + "Namespace": "", + "ResourceName": "global-operators-view" + }, + { + "Namespace": "", + "ResourceName": "monitoring-edit" + }, + { + "Namespace": "", + "ResourceName": "monitoring-rules-edit" + }, + { + "Namespace": "", + "ResourceName": "monitoring-rules-view" + }, + { + "Namespace": "", + "ResourceName": "olm-operators-admin" + }, + { + "Namespace": "", + "ResourceName": "olm-operators-edit" + }, + { + "Namespace": "", + "ResourceName": "olm-operators-view" + }, + { + "Namespace": "", + "ResourceName": "openshift-cluster-monitoring-admin" + }, + { + "Namespace": "", + "ResourceName": "openshift-cluster-monitoring-edit" + }, + { + "Namespace": "", + "ResourceName": "openshift-cluster-monitoring-view" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-main-attacher-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-main-provisioner-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-main-resizer-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-main-snapshotter-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-provisioner-configmap-and-secret-reader-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-provisioner-volumeattachment-reader-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-provisioner-volumesnapshot-reader-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-resizer-infrastructure-reader-role" + }, + { + "Namespace": "", + "ResourceName": "openshift-csi-resizer-storageclass-reader-role" + }, + { + "Namespace": "", + "ResourceName": "resource-metrics-server-resources" + }, + { + "Namespace": "", + "ResourceName": "storage-admin" + }, + { + "Namespace": "", + "ResourceName": "sudoer" + }, + { + "Namespace": "", "ResourceName": "system:aggregate-to-admin" }, { @@ -38,6 +142,10 @@ }, { "Namespace": "", + "ResourceName": "system:build-strategy-custom" + }, + { + "Namespace": "", "ResourceName": "system:certificates.k8s.io:certificatesigningrequests:nodeclient" }, { @@ -74,6 +182,18 @@ }, { "Namespace": "", + "ResourceName": "system:image-auditor" + }, + { + "Namespace": "", + "ResourceName": "system:image-pusher" + }, + { + "Namespace": "", + "ResourceName": "system:image-signer" + }, + { + "Namespace": "", "ResourceName": "system:kube-aggregator" }, { @@ -94,10 +214,62 @@ }, { "Namespace": "", + "ResourceName": "system:node-reader" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:aggregate-snapshots-to-storage-admin" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:aggregate-to-storage-admin" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:hostaccess" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:hostmount" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:hostnetwork" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:nonroot" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:nonroot-v2" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:privileged" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:scc:restricted" + }, + { + "Namespace": "", + "ResourceName": "system:openshift:templateservicebroker-client" + }, + { + "Namespace": "", "ResourceName": "system:persistent-volume-provisioner" }, { "Namespace": "", + "ResourceName": "system:router" + }, + { + "Namespace": "", + "ResourceName": "system:sdn-manager" + }, + { + "Namespace": "", "ResourceName": "view" } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/configmaps/configmaps.json new/kor-0.5.1/pkg/kor/exceptions/configmaps/configmaps.json --- old/kor-0.5.0/pkg/kor/exceptions/configmaps/configmaps.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/configmaps/configmaps.json 2024-06-18 20:44:31.000000000 +0200 @@ -6,6 +6,11 @@ "MatchRegex": true }, { + "Namespace": ".*", + "ResourceName": "openshift-service-ca\\.crt", + "MatchRegex": true + }, + { "Namespace": "gmp-system", "ResourceName": "config-images" }, @@ -27,10 +32,18 @@ }, { "Namespace": "kube-system", + "ResourceName": "bootstrap" + }, + { + "Namespace": "kube-system", "ResourceName": "cluster-autoscaler-status" }, { "Namespace": "kube-system", + "ResourceName": "cluster-config-v1" + }, + { + "Namespace": "kube-system", "ResourceName": "cluster-dns" }, { @@ -98,8 +111,17 @@ "ResourceName": "overlay-upgrade-data" }, { + "Namespace": "kube-system", + "ResourceName": "root-ca" + }, + { "Namespace": "kubernetes-dashboard", "ResourceName": "kubernetes-dashboard-settings" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/crds/crds.json new/kor-0.5.1/pkg/kor/exceptions/crds/crds.json --- old/kor-0.5.0/pkg/kor/exceptions/crds/crds.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/crds/crds.json 2024-06-18 20:44:31.000000000 +0200 @@ -2,6 +2,22 @@ "exceptionCrds": [ { "Namespace": "", + "ResourceName": "adminpolicybasedexternalroutes.k8s.ovn.org" + }, + { + "Namespace": "", + "ResourceName": "alertingrules.monitoring.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "alertmanagerconfigs.monitoring.coreos.com" + }, + { + "Namespace": "", + "ResourceName": "alertrelabelconfigs.monitoring.openshift.io" + }, + { + "Namespace": "", "ResourceName": "allowlistedv2workloads.auto.gke.io" }, { @@ -14,14 +30,34 @@ }, { "Namespace": "", + "ResourceName": "baremetalhosts.metal3.io" + }, + { + "Namespace": "", + "ResourceName": "bmceventsubscriptions.metal3.io" + }, + { + "Namespace": "", "ResourceName": "capacityrequests.internal.autoscaling.gke.io" }, { "Namespace": "", + "ResourceName": "clusterautoscalers.autoscaling.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "clustercsidrivers.operator.openshift.io" + }, + { + "Namespace": "", "ResourceName": "clusterpodmonitorings.monitoring.googleapis.com" }, { "Namespace": "", + "ResourceName": "clusterresourcequotas.quota.openshift.io" + }, + { + "Namespace": "", "ResourceName": "clusterrules.monitoring.googleapis.com" }, { @@ -30,6 +66,58 @@ }, { "Namespace": "", + "ResourceName": "consoleexternalloglinks.console.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "consolelinks.console.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "consolenotifications.console.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "consolesamples.console.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "consoleyamlsamples.console.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "containerruntimeconfigs.machineconfiguration.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "controlplanemachinesets.machine.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "dnsrecords.ingress.operator.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "egressfirewalls.k8s.ovn.org" + }, + { + "Namespace": "", + "ResourceName": "egressips.k8s.ovn.org" + }, + { + "Namespace": "", + "ResourceName": "egressqoses.k8s.ovn.org" + }, + { + "Namespace": "", + "ResourceName": "egressrouters.network.operator.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "egressservices.k8s.ovn.org" + }, + { + "Namespace": "", "ResourceName": "eniconfigs.crd.k8s.amazonaws.com" }, { @@ -42,6 +130,10 @@ }, { "Namespace": "", + "ResourceName": "firmwareschemas.metal3.io" + }, + { + "Namespace": "", "ResourceName": "frontendconfigs.networking.gke.io" }, { @@ -54,6 +146,10 @@ }, { "Namespace": "", + "ResourceName": "hardwaredata.metal3.io" + }, + { + "Namespace": "", "ResourceName": "helmchartconfigs.helm.cattle.io" }, { @@ -62,6 +158,26 @@ }, { "Namespace": "", + "ResourceName": "hostfirmwaresettings.metal3.io" + }, + { + "Namespace": "", + "ResourceName": "imagecontentpolicies.config.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "imagecontentsourcepolicies.operator.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "imagedigestmirrorsets.config.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "imagetagmirrorsets.config.openshift.io" + }, + { + "Namespace": "", "ResourceName": "ingressroutes.traefik.containo.us" }, { @@ -102,6 +218,30 @@ }, { "Namespace": "", + "ResourceName": "installplans.operators.coreos.com" + }, + { + "Namespace": "", + "ResourceName": "ippools.whereabouts.cni.cncf.io" + }, + { + "Namespace": "", + "ResourceName": "kubeletconfigs.machineconfiguration.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "machineautoscalers.autoscaling.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "machines.machine.openshift.io" + }, + { + "Namespace": "", + "ResourceName": "machinesets.machine.openshift.io" + }, + { + "Namespace": "", "ResourceName": "managedcertificates.networking.gke.io" }, { @@ -110,6 +250,14 @@ }, { "Namespace": "", + "ResourceName": "metal3remediations.infrastructure.cluster.x-k8s.io" + }, + { + "Namespace": "", + "ResourceName": "metal3remediationtemplates.infrastructure.cluster.x-k8s.io" + }, + { + "Namespace": "", "ResourceName": "middlewares.traefik.containo.us" }, { @@ -142,22 +290,62 @@ }, { "Namespace": "", + "ResourceName": "network-attachment-definitions.k8s.cni.cncf.io" + }, + { + "Namespace": "", "ResourceName": "networks.networking.gke.io" }, { "Namespace": "", + "ResourceName": "operators.operators.coreos.com" + }, + { + "Namespace": "", + "ResourceName": "overlappingrangeipreservations.whereabouts.cni.cncf.io" + }, + { + "Namespace": "", + "ResourceName": "performanceprofiles.performance.openshift.io" + }, + { + "Namespace": "", "ResourceName": "podmonitorings.monitoring.googleapis.com" }, { "Namespace": "", + "ResourceName": "podmonitors.monitoring.coreos.com" + }, + { + "Namespace": "", "ResourceName": "policyendpoints.networking.k8s.aws" }, { "Namespace": "", + "ResourceName": "preprovisioningimages.metal3.io" + }, + { + "Namespace": "", + "ResourceName": "probes.monitoring.coreos.com" + }, + { + "Namespace": "", + "ResourceName": "projecthelmchartrepositories.helm.openshift.io" + }, + { + "Namespace": "", "ResourceName": "provisioningrequests.autoscaling.x-k8s.io" }, { "Namespace": "", + "ResourceName": "provisionings.metal3.io" + }, + { + "Namespace": "", + "ResourceName": "rolebindingrestrictions.authorization.openshift.io" + }, + { + "Namespace": "", "ResourceName": "rules.monitoring.googleapis.com" }, { @@ -198,6 +386,18 @@ }, { "Namespace": "", + "ResourceName": "storagestates.migration.k8s.io" + }, + { + "Namespace": "", + "ResourceName": "subscriptions.operators.coreos.com" + }, + { + "Namespace": "", + "ResourceName": "thanosrulers.monitoring.coreos.com" + }, + { + "Namespace": "", "ResourceName": "tlsoptions.traefik.containo.us" }, { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/jobs/jobs.json new/kor-0.5.1/pkg/kor/exceptions/jobs/jobs.json --- old/kor-0.5.0/pkg/kor/exceptions/jobs/jobs.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/jobs/jobs.json 2024-06-18 20:44:31.000000000 +0200 @@ -1,12 +1,21 @@ { "exceptionJobs": [ { + "Namespace": "assisted-installer", + "ResourceName": "assisted-installer-controller" + }, + { "Namespace": "kube-system", "ResourceName": "helm-install-traefik" }, { "Namespace": "kube-system", "ResourceName": "helm-install-traefik-crd" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/pdbs/pdbs.json new/kor-0.5.1/pkg/kor/exceptions/pdbs/pdbs.json --- old/kor-0.5.0/pkg/kor/exceptions/pdbs/pdbs.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kor-0.5.1/pkg/kor/exceptions/pdbs/pdbs.json 2024-06-18 20:44:31.000000000 +0200 @@ -0,0 +1,9 @@ +{ + "exceptionPdbs": [ + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true + } + ] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/roles/roles.json new/kor-0.5.1/pkg/kor/exceptions/roles/roles.json --- old/kor-0.5.0/pkg/kor/exceptions/roles/roles.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/roles/roles.json 2024-06-18 20:44:31.000000000 +0200 @@ -7,6 +7,11 @@ { "Namespace": "", "ResourceName": "system:controller:glbc" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/secrets/secrets.json new/kor-0.5.1/pkg/kor/exceptions/secrets/secrets.json --- old/kor-0.5.0/pkg/kor/exceptions/secrets/secrets.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/secrets/secrets.json 2024-06-18 20:44:31.000000000 +0200 @@ -15,6 +15,14 @@ "ResourceName": "k3s-serving" }, { + "Namespace": "kube-system", + "ResourceName": "kube-cloud-cfg" + }, + { + "Namespace": "kube-system", + "ResourceName": "kubeadmin" + }, + { "Namespace": "kubernetes-dashboard", "ResourceName": "kubernetes-dashboard-certs" }, @@ -25,6 +33,11 @@ { "Namespace": "kubernetes-dashboard", "ResourceName": "kubernetes-dashboard-key-holder" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/serviceaccounts/serviceaccounts.json new/kor-0.5.1/pkg/kor/exceptions/serviceaccounts/serviceaccounts.json --- old/kor-0.5.0/pkg/kor/exceptions/serviceaccounts/serviceaccounts.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/serviceaccounts/serviceaccounts.json 2024-06-18 20:44:31.000000000 +0200 @@ -12,6 +12,11 @@ { "Namespace": "kube-system", "ResourceName": "metadata-proxy" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/exceptions/services/services.json new/kor-0.5.1/pkg/kor/exceptions/services/services.json --- old/kor-0.5.0/pkg/kor/exceptions/services/services.json 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/exceptions/services/services.json 2024-06-18 20:44:31.000000000 +0200 @@ -15,6 +15,11 @@ { "Namespace": "kube-system", "ResourceName": "vpa-recommender" + }, + { + "Namespace": "openshift-.*", + "ResourceName": ".*", + "MatchRegex": true } ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/kor.go new/kor-0.5.1/pkg/kor/kor.go --- old/kor-0.5.0/pkg/kor/kor.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/kor.go 2024-06-18 20:44:31.000000000 +0200 @@ -37,6 +37,7 @@ ExceptionServices []ExceptionResource `json:"exceptionServices"` ExceptionStorageClasses []ExceptionResource `json:"exceptionStorageClasses"` ExceptionJobs []ExceptionResource `json:"exceptionJobs"` + ExceptionPdbs []ExceptionResource `json:"exceptionPdbs"` // Add other configurations if needed } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/kor_test.go new/kor-0.5.1/pkg/kor/kor_test.go --- old/kor-0.5.0/pkg/kor/kor_test.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/kor_test.go 2024-06-18 20:44:31.000000000 +0200 @@ -147,6 +147,11 @@ Namespace: ".*", MatchRegex: true, }, + { + ResourceName: ".*", + Namespace: "with-namespace-regex-prefix-.*", + MatchRegex: true, + }, } } @@ -178,6 +183,17 @@ if err != nil { t.Error(err) } + if !exceptionFound { + t.Error("Expected to find exception") + } +} + +func TestResourceExceptionWithRegexPrefixInNamespace(t *testing.T) { + exceptions := getFakeExceptions() + exceptionFound, err := isResourceException("default", "with-namespace-regex-prefix-extra-text", exceptions) + if err != nil { + t.Error(err) + } if !exceptionFound { t.Error("Expected to find exception") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/pdbs.go new/kor-0.5.1/pkg/kor/pdbs.go --- old/kor-0.5.0/pkg/kor/pdbs.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/pdbs.go 2024-06-18 20:44:31.000000000 +0200 @@ -3,6 +3,7 @@ import ( "bytes" "context" + _ "embed" "encoding/json" "fmt" "os" @@ -14,6 +15,9 @@ "github.com/yonahd/kor/pkg/filters" ) +//go:embed exceptions/pdbs/pdbs.json +var pdbsConfig []byte + func processNamespacePdbs(clientset kubernetes.Interface, namespace string, filterOpts *filters.Options) ([]ResourceInfo, error) { var unusedPdbs []ResourceInfo pdbs, err := clientset.PolicyV1().PodDisruptionBudgets(namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: filterOpts.IncludeLabels}) @@ -21,11 +25,25 @@ return nil, err } + config, err := unmarshalConfig(pdbsConfig) + if err != nil { + return nil, err + } + for _, pdb := range pdbs.Items { if pass, _ := filter.SetObject(&pdb).Run(filterOpts); pass { continue } + exceptionFound, err := isResourceException(pdb.Name, pdb.Namespace, config.ExceptionPdbs) + if err != nil { + return nil, err + } + + if exceptionFound { + continue + } + if pdb.Labels["kor/used"] == "false" { reason := "Marked with unused label" unusedPdbs = append(unusedPdbs, ResourceInfo{Name: pdb.Name, Reason: reason}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/roles.go new/kor-0.5.1/pkg/kor/roles.go --- old/kor-0.5.0/pkg/kor/roles.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/roles.go 2024-06-18 20:44:31.000000000 +0200 @@ -47,6 +47,12 @@ if err != nil { return nil, nil, err } + + config, err := unmarshalConfig(rolesConfig) + if err != nil { + return nil, nil, err + } + var unusedRoleNames []string names := make([]string, 0, len(roles.Items)) for _, role := range roles.Items { @@ -58,11 +64,6 @@ continue } - config, err := unmarshalConfig(rolesConfig) - if err != nil { - return nil, nil, err - } - exceptionFound, err := isResourceException(role.Name, role.Namespace, config.ExceptionRoles) if err != nil { return nil, nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/secrets.go new/kor-0.5.1/pkg/kor/secrets.go --- old/kor-0.5.0/pkg/kor/secrets.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/secrets.go 2024-06-18 20:44:31.000000000 +0200 @@ -19,6 +19,7 @@ var exceptionSecretTypes = []string{ `helm.sh/release.v1`, `kubernetes.io/dockerconfigjson`, + `kubernetes.io/dockercfg`, `kubernetes.io/service-account-token`, } @@ -113,6 +114,11 @@ return nil, nil, err } + config, err := unmarshalConfig(secretsConfig) + if err != nil { + return nil, nil, err + } + var unusedSecretNames []string names := make([]string, 0, len(secrets.Items)) for _, secret := range secrets.Items { @@ -125,11 +131,6 @@ continue } - config, err := unmarshalConfig(secretsConfig) - if err != nil { - return nil, nil, err - } - exceptionFound, err := isResourceException(secret.Name, secret.Namespace, config.ExceptionSecrets) if err != nil { return nil, nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/services.go new/kor-0.5.1/pkg/kor/services.go --- old/kor-0.5.0/pkg/kor/services.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/services.go 2024-06-18 20:44:31.000000000 +0200 @@ -23,6 +23,11 @@ return nil, err } + config, err := unmarshalConfig(servicesConfig) + if err != nil { + return nil, err + } + var endpointsWithoutSubsets []ResourceInfo for _, endpoints := range endpointsList.Items { @@ -30,11 +35,6 @@ continue } - config, err := unmarshalConfig(servicesConfig) - if err != nil { - return nil, err - } - exceptionFound, err := isResourceException(endpoints.Name, endpoints.Namespace, config.ExceptionServices) if err != nil { return nil, err diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kor-0.5.0/pkg/kor/storageclasses.go new/kor-0.5.1/pkg/kor/storageclasses.go --- old/kor-0.5.0/pkg/kor/storageclasses.go 2024-06-18 10:17:51.000000000 +0200 +++ new/kor-0.5.1/pkg/kor/storageclasses.go 2024-06-18 20:44:31.000000000 +0200 @@ -56,6 +56,11 @@ return nil, err } + config, err := unmarshalConfig(storageClassesConfig) + if err != nil { + return nil, err + } + var unusedStorageClasses []ResourceInfo storageClassNames := make([]string, 0, len(scs.Items)) @@ -69,11 +74,6 @@ continue } - config, err := unmarshalConfig(storageClassesConfig) - if err != nil { - return nil, err - } - exceptionFound, err := isResourceException(sc.Name, sc.Namespace, config.ExceptionStorageClasses) if err != nil { return nil, err ++++++ kor.obsinfo ++++++ --- /var/tmp/diff_new_pack.9jeStt/_old 2024-06-19 16:39:44.368128374 +0200 +++ /var/tmp/diff_new_pack.9jeStt/_new 2024-06-19 16:39:44.372128517 +0200 @@ -1,5 +1,5 @@ name: kor -version: 0.5.0 -mtime: 1718698671 -commit: a2f3629e7738e8013ddaa470da5f6cde434ebef3 +version: 0.5.1 +mtime: 1718736271 +commit: ced2ef283271806d0102c102f21c28766344d423 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/kor/vendor.tar.gz /work/SRC/openSUSE:Factory/.kor.new.18349/vendor.tar.gz differ: char 5, line 1