From 39063815c8697b0a75e7d3845ac9fa9b75eaa778 Mon Sep 17 00:00:00 2001 From: derailed Date: Thu, 15 Jul 2021 16:31:25 -0600 Subject: [PATCH] fix #186 --- internal/cache/pdb.go | 10 +++++----- internal/dag/pdb.go | 16 ++++++++-------- internal/sanitize/pdb.go | 8 ++++---- internal/sanitize/pdb_test.go | 12 ++++++------ internal/sanitize/pod.go | 6 +++--- internal/sanitize/pod_test.go | 8 ++++---- pkg/popeye.go | 10 ++++++---- 7 files changed, 36 insertions(+), 34 deletions(-) diff --git a/internal/cache/pdb.go b/internal/cache/pdb.go index f1bd86e1..447b34ef 100644 --- a/internal/cache/pdb.go +++ b/internal/cache/pdb.go @@ -1,7 +1,7 @@ package cache import ( - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -10,21 +10,21 @@ const PodDisruptionBudgetKey = "pdb" // PodDisruptionBudget represents PodDisruptionBudget cache. type PodDisruptionBudget struct { - cms map[string]*polv1.PodDisruptionBudget + cms map[string]*polv1beta1.PodDisruptionBudget } // NewPodDisruptionBudget returns a new PodDisruptionBudget cache. -func NewPodDisruptionBudget(cms map[string]*polv1.PodDisruptionBudget) *PodDisruptionBudget { +func NewPodDisruptionBudget(cms map[string]*polv1beta1.PodDisruptionBudget) *PodDisruptionBudget { return &PodDisruptionBudget{cms: cms} } // ListPodDisruptionBudgets returns all available PodDisruptionBudgets on the cluster. -func (c *PodDisruptionBudget) ListPodDisruptionBudgets() map[string]*polv1.PodDisruptionBudget { +func (c *PodDisruptionBudget) ListPodDisruptionBudgets() map[string]*polv1beta1.PodDisruptionBudget { return c.cms } // ForLabels returns a pdb whose selector match the given labels. Returns nil if no match. -func (c *PodDisruptionBudget) ForLabels(labels map[string]string) *polv1.PodDisruptionBudget { +func (c *PodDisruptionBudget) ForLabels(labels map[string]string) *polv1beta1.PodDisruptionBudget { for _, pdb := range c.ListPodDisruptionBudgets() { m, err := metav1.LabelSelectorAsMap(pdb.Spec.Selector) if err != nil { diff --git a/internal/dag/pdb.go b/internal/dag/pdb.go index aaa42b9a..0ebe2668 100644 --- a/internal/dag/pdb.go +++ b/internal/dag/pdb.go @@ -6,24 +6,24 @@ import ( "github.com/derailed/popeye/internal/client" "github.com/derailed/popeye/internal/dao" - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" ) // ListPodDisruptionBudgets list all included PodDisruptionBudgets. -func ListPodDisruptionBudgets(ctx context.Context) (map[string]*polv1.PodDisruptionBudget, error) { +func ListPodDisruptionBudgets(ctx context.Context) (map[string]*polv1beta1.PodDisruptionBudget, error) { return listAllPodDisruptionBudgets(ctx) } // ListAllPodDisruptionBudgets fetch all PodDisruptionBudgets on the cluster. -func listAllPodDisruptionBudgets(ctx context.Context) (map[string]*polv1.PodDisruptionBudget, error) { +func listAllPodDisruptionBudgets(ctx context.Context) (map[string]*polv1beta1.PodDisruptionBudget, error) { ll, err := fetchPodDisruptionBudgets(ctx) if err != nil { return nil, err } - pdbs := make(map[string]*polv1.PodDisruptionBudget, len(ll.Items)) + pdbs := make(map[string]*polv1beta1.PodDisruptionBudget, len(ll.Items)) for i := range ll.Items { pdbs[metaFQN(ll.Items[i].ObjectMeta)] = &ll.Items[i] } @@ -32,14 +32,14 @@ func listAllPodDisruptionBudgets(ctx context.Context) (map[string]*polv1.PodDisr } // fetchPodDisruptionBudgets retrieves all PodDisruptionBudgets on the cluster. -func fetchPodDisruptionBudgets(ctx context.Context) (*polv1.PodDisruptionBudgetList, error) { +func fetchPodDisruptionBudgets(ctx context.Context) (*polv1beta1.PodDisruptionBudgetList, error) { f, cfg := mustExtractFactory(ctx), mustExtractConfig(ctx) if cfg.Flags.StandAlone { dial, err := f.Client().Dial() if err != nil { return nil, err } - return dial.PolicyV1().PodDisruptionBudgets(f.Client().ActiveNamespace()).List(ctx, metav1.ListOptions{}) + return dial.PolicyV1beta1().PodDisruptionBudgets(f.Client().ActiveNamespace()).List(ctx, metav1.ListOptions{}) } var res dao.Resource @@ -48,9 +48,9 @@ func fetchPodDisruptionBudgets(ctx context.Context) (*polv1.PodDisruptionBudgetL if err != nil { return nil, err } - var ll polv1.PodDisruptionBudgetList + var ll polv1beta1.PodDisruptionBudgetList for _, o := range oo { - var pdb polv1.PodDisruptionBudget + var pdb polv1beta1.PodDisruptionBudget err = runtime.DefaultUnstructuredConverter.FromUnstructured(o.(*unstructured.Unstructured).Object, &pdb) if err != nil { return nil, errors.New("expecting pdb resource") diff --git a/internal/sanitize/pdb.go b/internal/sanitize/pdb.go index 5e78e1dd..e883d71b 100644 --- a/internal/sanitize/pdb.go +++ b/internal/sanitize/pdb.go @@ -7,7 +7,7 @@ import ( "github.com/derailed/popeye/internal" "github.com/derailed/popeye/internal/issues" "github.com/rs/zerolog/log" - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/endpoints/deprecation" ) @@ -22,7 +22,7 @@ type ( // PodDisruptionBudgetLister list available PodDisruptionBudgets on a cluster. PodDisruptionBudgetLister interface { PodLister - ListPodDisruptionBudgets() map[string]*polv1.PodDisruptionBudget + ListPodDisruptionBudgets() map[string]*polv1beta1.PodDisruptionBudget } ) @@ -51,7 +51,7 @@ func (p *PodDisruptionBudget) Sanitize(ctx context.Context) error { return nil } -func (p *PodDisruptionBudget) checkDeprecation(ctx context.Context, pdb *polv1.PodDisruptionBudget) { +func (p *PodDisruptionBudget) checkDeprecation(ctx context.Context, pdb *polv1beta1.PodDisruptionBudget) { const current = "policy/v1beta1" fmt.Println("VERSION", pdb.GetObjectKind().GroupVersionKind()) @@ -70,7 +70,7 @@ func (p *PodDisruptionBudget) checkDeprecation(ctx context.Context, pdb *polv1.P } } -func (p *PodDisruptionBudget) checkInUse(ctx context.Context, pdb *polv1.PodDisruptionBudget) { +func (p *PodDisruptionBudget) checkInUse(ctx context.Context, pdb *polv1beta1.PodDisruptionBudget) { m, err := metav1.LabelSelectorAsMap(pdb.Spec.Selector) if err != nil { log.Error().Err(err).Msg("No selectors found") diff --git a/internal/sanitize/pdb_test.go b/internal/sanitize/pdb_test.go index 4a484919..c7cf05b0 100644 --- a/internal/sanitize/pdb_test.go +++ b/internal/sanitize/pdb_test.go @@ -7,7 +7,7 @@ import ( "github.com/derailed/popeye/internal/issues" "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -65,8 +65,8 @@ func makePDBLister(opts pdbOpts) *pdb { } } -func (r *pdb) ListPodDisruptionBudgets() map[string]*polv1.PodDisruptionBudget { - return map[string]*polv1.PodDisruptionBudget{ +func (r *pdb) ListPodDisruptionBudgets() map[string]*polv1beta1.PodDisruptionBudget { + return map[string]*polv1beta1.PodDisruptionBudget{ cache.FQN("default", r.name): makePDB(r.name), } } @@ -84,14 +84,14 @@ func (r *pdb) GetPod(ns string, sel map[string]string) *v1.Pod { return makePod("p1") } -func makePDB(n string) *polv1.PodDisruptionBudget { +func makePDB(n string) *polv1beta1.PodDisruptionBudget { min, max := intstr.FromInt(1), intstr.FromInt(1) - return &polv1.PodDisruptionBudget{ + return &polv1beta1.PodDisruptionBudget{ ObjectMeta: metav1.ObjectMeta{ Name: n, Namespace: "default", }, - Spec: polv1.PodDisruptionBudgetSpec{ + Spec: polv1beta1.PodDisruptionBudgetSpec{ Selector: &metav1.LabelSelector{}, MinAvailable: &min, MaxUnavailable: &max, diff --git a/internal/sanitize/pod.go b/internal/sanitize/pod.go index d9726b71..16b0aec4 100644 --- a/internal/sanitize/pod.go +++ b/internal/sanitize/pod.go @@ -8,7 +8,7 @@ import ( "github.com/derailed/popeye/internal/client" "github.com/derailed/popeye/internal/issues" v1 "k8s.io/api/core/v1" - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" mv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1" ) @@ -34,8 +34,8 @@ type ( // PdbLister list pdb matching a given selector PdbLister interface { - ListPodDisruptionBudgets() map[string]*polv1.PodDisruptionBudget - ForLabels(labels map[string]string) *polv1.PodDisruptionBudget + ListPodDisruptionBudgets() map[string]*polv1beta1.PodDisruptionBudget + ForLabels(labels map[string]string) *polv1beta1.PodDisruptionBudget } // PodLister lists available pods. diff --git a/internal/sanitize/pod_test.go b/internal/sanitize/pod_test.go index c4929a76..a08f0c45 100644 --- a/internal/sanitize/pod_test.go +++ b/internal/sanitize/pod_test.go @@ -8,7 +8,7 @@ import ( "github.com/derailed/popeye/pkg/config" "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" - polv1 "k8s.io/api/policy/v1" + polv1beta1 "k8s.io/api/policy/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1" ) @@ -231,11 +231,11 @@ func (p *pod) ListPodsMetrics() map[string]*v1beta1.PodMetrics { } } -func (p *pod) ForLabels(l map[string]string) *polv1.PodDisruptionBudget { - return &polv1.PodDisruptionBudget{} +func (p *pod) ForLabels(l map[string]string) *polv1beta1.PodDisruptionBudget { + return &polv1beta1.PodDisruptionBudget{} } -func (p *pod) ListPodDisruptionBudgets() map[string]*polv1.PodDisruptionBudget { +func (p *pod) ListPodDisruptionBudgets() map[string]*polv1beta1.PodDisruptionBudget { return nil } diff --git a/pkg/popeye.go b/pkg/popeye.go index 1c2ca2c7..17f2036f 100644 --- a/pkg/popeye.go +++ b/pkg/popeye.go @@ -137,12 +137,15 @@ func (p *Popeye) scannedGVRs(rev *version.Info) []string { "rbac.authorization.k8s.io/v1/rolebindings", } - if rev.Minor == "18+" || rev.Minor == "17+" { + if rev.Minor == "18" || rev.Minor == "17" { mm = append(mm, "networking.k8s.io/v1beta1/ingresses") - mm = append(mm, "policy/v1beta1/poddisruptionbudgets") } else { mm = append(mm, "networking.k8s.io/v1/ingresses") + } + if rev.Minor == "21" { mm = append(mm, "policy/v1/poddisruptionbudgets") + } else { + mm = append(mm, "policy/v1beta1/poddisruptionbudgets") } return mm @@ -210,10 +213,9 @@ func (p *Popeye) sanitizers(rev *version.Info) map[string]scrubFn { "rbac.authorization.k8s.io/v1/rolebindings": scrub.NewRoleBinding, } - if rev.Minor == "18+" || rev.Minor == "17+" { + if rev.Minor == "18" || rev.Minor == "17" { mm["networking.k8s.io/v1beta1/ingresses"] = scrub.NewIngress } - if rev.Minor == "21" { mm["policy/v1/poddisruptionbudgets"] = scrub.NewPodDisruptionBudget }