Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

POP-186 fix pdb rev #186 #187

Merged
merged 1 commit into from Jul 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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