Skip to content

Commit

Permalink
fix #186
Browse files Browse the repository at this point in the history
  • Loading branch information
derailed committed Jul 15, 2021
1 parent 75db894 commit 3906381
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 34 deletions.
10 changes: 5 additions & 5 deletions 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"
)

Expand All @@ -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 {
Expand Down
16 changes: 8 additions & 8 deletions internal/dag/pdb.go
Expand Up @@ -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]
}
Expand All @@ -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
Expand All @@ -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")
Expand Down
8 changes: 4 additions & 4 deletions internal/sanitize/pdb.go
Expand Up @@ -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"
)
Expand All @@ -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
}
)

Expand Down Expand Up @@ -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())
Expand All @@ -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")
Expand Down
12 changes: 6 additions & 6 deletions internal/sanitize/pdb_test.go
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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),
}
}
Expand All @@ -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,
Expand Down
6 changes: 3 additions & 3 deletions internal/sanitize/pod.go
Expand Up @@ -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"
)
Expand All @@ -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.
Expand Down
8 changes: 4 additions & 4 deletions internal/sanitize/pod_test.go
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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
}

Expand Down
10 changes: 6 additions & 4 deletions pkg/popeye.go
Expand Up @@ -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
Expand Down Expand Up @@ -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
}
Expand Down

0 comments on commit 3906381

Please sign in to comment.