Skip to content

Commit

Permalink
chore(refactor): implement gvks for all static modules
Browse files Browse the repository at this point in the history
Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
  • Loading branch information
oliverbaehler committed Oct 20, 2024
1 parent 4705a99 commit f505ba5
Show file tree
Hide file tree
Showing 27 changed files with 261 additions and 234 deletions.
2 changes: 1 addition & 1 deletion internal/controllers/watchdog/crds_watcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ func (c *CRDWatcher) SetupWithManager(ctx context.Context, mgr manager.Manager)
}

return ctrl.NewControllerManagedBy(mgr).
WatchesRawSource(&source.Channel{Source: c.requeue}, &handler.EnqueueRequestForObject{}).
WatchesRawSource(source.Channel(c.requeue, &handler.EnqueueRequestForObject{})).
For(&apiextensionsv1.CustomResourceDefinition{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
crd := object.(*apiextensionsv1.CustomResourceDefinition)

Expand Down
6 changes: 5 additions & 1 deletion internal/modules/clusterscoped/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ func Get(discovery *discovery.DiscoveryClient, client client.Reader, writer clie
}
}

func (g get) GroupVersionKind() schema.GroupVersionKind {
return schema.GroupVersionKind{}
}

func (g get) GroupKind() schema.GroupKind {
return schema.GroupKind{}
}
Expand All @@ -58,7 +62,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req

gvk := utils.GetGVKFromURL(proxyRequest.GetHTTPRequest().URL.Path)

operations, requirements := getRequirements(gvk, proxyTenants)
operations, requirements := utils.GetClusterScopeRequirements(gvk, proxyTenants)
if len(requirements) > 0 {
// Verify if the list operation is allowed
if slices.Contains(operations, v1beta1.ClusterResourceOperationList) {
Expand Down
6 changes: 5 additions & 1 deletion internal/modules/clusterscoped/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ func List(client client.Reader, writer client.Writer, path string) modules.Modul
}
}

func (l list) GroupVersionKind() schema.GroupVersionKind {
return schema.GroupVersionKind{}
}

func (l list) GroupKind() schema.GroupKind {
return schema.GroupKind{}
}
Expand All @@ -49,7 +53,7 @@ func (l list) Methods() []string {
func (l list) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Request) (selector labels.Selector, err error) {
gvk := utils.GetGVKFromURL(proxyRequest.GetHTTPRequest().URL.Path)

operations, requirements := getRequirements(gvk, proxyTenants)
operations, requirements := utils.GetClusterScopeRequirements(gvk, proxyTenants)
if len(requirements) > 0 {
// Verify if the list operation is allowed
if slices.Contains(operations, v1beta1.ClusterResourceOperationList) {
Expand Down
92 changes: 0 additions & 92 deletions internal/modules/clusterscoped/utils.go

This file was deleted.

25 changes: 15 additions & 10 deletions internal/modules/ingressclass/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,29 @@ import (
type get struct {
client client.Reader
log logr.Logger
gk schema.GroupKind
gk schema.GroupVersionKind
}

func Get(client client.Reader) modules.Module {
return &get{
client: client,
log: ctrl.Log.WithName("ingressclass_get"),
gk: schema.GroupKind{
Group: networkingv1.GroupName,
Kind: "ingressclasses",
gk: schema.GroupVersionKind{
Group: networkingv1.GroupName,
Version: "*",
Kind: "ingressclasses",
},
}
}

func (g get) GroupKind() schema.GroupKind {
func (g get) GroupVersionKind() schema.GroupVersionKind {
return g.gk
}

func (g get) GroupKind() schema.GroupKind {
return g.gk.GroupKind()
}

func (g get) Path() string {
return "/apis/networking.k8s.io/{version}/{endpoint:ingressclasses}/{name}"
}
Expand All @@ -60,19 +65,19 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req
if len(requirements) > 0 {
ic, errIc := getIngressClassFromRequest(httpRequest)
if errIc != nil {
return nil, errors.NewBadRequest(errIc, g.gk)
return nil, errors.NewBadRequest(errIc, g.GroupKind())
}

return utils.HandleGetSelector(httpRequest.Context(), ic, g.client, requirements, name, g.gk)
return utils.HandleGetSelector(httpRequest.Context(), ic, g.client, requirements, name, g.GroupKind())
}

icl, err := getIngressClassListFromRequest(httpRequest)
if err != nil {
return nil, errors.NewBadRequest(err, g.gk)
return nil, errors.NewBadRequest(err, g.GroupKind())
}

if err = g.client.List(httpRequest.Context(), icl, client.MatchingLabels{corev1.LabelMetadataName: name}); err != nil {
return nil, errors.NewBadRequest(err, g.gk)
return nil, errors.NewBadRequest(err, g.GroupKind())
}

var r *labels.Requirement
Expand All @@ -83,7 +88,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req

switch httpRequest.Method {
case http.MethodGet:
return nil, errors.NewNotFoundError(name, g.gk)
return nil, errors.NewNotFoundError(name, g.GroupKind())
default:
return nil, nil
}
Expand Down
21 changes: 13 additions & 8 deletions internal/modules/ingressclass/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,29 @@ import (
type list struct {
client client.Reader
log logr.Logger
gk schema.GroupKind
gk schema.GroupVersionKind
}

func List(client client.Reader) modules.Module {
return &list{
client: client,
log: ctrl.Log.WithName("ingressclass_list"),
gk: schema.GroupKind{
Group: networkingv1.GroupName,
Kind: "ingressclasses",
gk: schema.GroupVersionKind{
Group: networkingv1.GroupName,
Version: "*",
Kind: "ingressclasses",
},
}
}

func (l list) GroupKind() schema.GroupKind {
func (l list) GroupVersionKind() schema.GroupVersionKind {
return l.gk
}

func (l list) GroupKind() schema.GroupKind {
return l.gk.GroupKind()
}

func (l list) Path() string {
return "/apis/networking.k8s.io/{version}/{endpoint:ingressclasses/?}"
}
Expand All @@ -58,18 +63,18 @@ func (l list) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Re

icl, err := getIngressClassListFromRequest(httpRequest)
if err != nil {
return nil, errors.NewBadRequest(err, l.gk)
return nil, errors.NewBadRequest(err, l.GroupKind())
}

if err = l.client.List(httpRequest.Context(), icl); err != nil {
return nil, errors.NewBadRequest(err, l.gk)
return nil, errors.NewBadRequest(err, l.GroupKind())
}

var r *labels.Requirement

if r, err = getIngressClassSelector(icl, exactMatch, regexMatch); err != nil {
if !allowed {
return nil, errors.NewNotAllowed(l.gk)
return nil, errors.NewNotAllowed(l.GroupKind())
}

r, _ = labels.NewRequirement("dontexistsignoreme", selection.Exists, []string{})
Expand Down
15 changes: 10 additions & 5 deletions internal/modules/lease/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,29 @@ import (
type get struct {
client client.Reader
log logr.Logger
gk schema.GroupKind
gk schema.GroupVersionKind
}

func Get(client client.Reader) modules.Module {
return &get{
client: client,
log: ctrl.Log.WithName("node_get"),
gk: schema.GroupKind{
Group: corev1.GroupName,
Kind: "nodes",
gk: schema.GroupVersionKind{
Group: corev1.GroupName,
Version: "*",
Kind: "nodes",
},
}
}

func (g get) GroupKind() schema.GroupKind {
func (g get) GroupVersionKind() schema.GroupVersionKind {
return g.gk
}

func (g get) GroupKind() schema.GroupKind {
return g.gk.GroupKind()
}

func (g get) Path() string {
return "/apis/coordination.k8s.io/v1/namespaces/kube-node-lease/leases/{name}"
}
Expand Down
19 changes: 12 additions & 7 deletions internal/modules/metric/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,29 @@ import (
type get struct {
client client.Reader
log logr.Logger
gk schema.GroupKind
gk schema.GroupVersionKind
}

func Get(client client.Reader) modules.Module {
return &get{
client: client,
log: ctrl.Log.WithName("metric_get"),
gk: schema.GroupKind{
Group: "metrics.k8s.io",
Kind: "nodes",
gk: schema.GroupVersionKind{
Group: "metrics.k8s.io",
Version: "*",
Kind: "nodes",
},
}
}

func (g get) GroupKind() schema.GroupKind {
func (g get) GroupVersionKind() schema.GroupVersionKind {
return g.gk
}

func (g get) GroupKind() schema.GroupKind {
return g.gk.GroupKind()
}

func (g get) Path() string {
return "/apis/metrics.k8s.io/{version}/nodes/{name}"
}
Expand All @@ -59,7 +64,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req

nl := &corev1.NodeList{}
if err = g.client.List(httpRequest.Context(), nl, client.MatchingLabels{"kubernetes.io/hostname": name}); err != nil {
return nil, errors.NewBadRequest(err, g.gk)
return nil, errors.NewBadRequest(err, g.GroupKind())
}

var r *labels.Requirement
Expand All @@ -69,7 +74,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req
}

if httpRequest.Method == http.MethodGet {
return nil, errors.NewNotFoundError(name, g.gk)
return nil, errors.NewNotFoundError(name, g.GroupKind())
}

return nil, nil
Expand Down
17 changes: 11 additions & 6 deletions internal/modules/metric/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,29 @@ import (
type list struct {
client client.Reader
log logr.Logger
gk schema.GroupKind
gk schema.GroupVersionKind
}

func List(client client.Reader) modules.Module {
return &list{
client: client,
log: ctrl.Log.WithName("metric_list"),
gk: schema.GroupKind{
Group: "metrics.k8s.io",
Kind: "nodes",
gk: schema.GroupVersionKind{
Group: "metrics.k8s.io",
Version: "*",
Kind: "nodes",
},
}
}

func (l list) GroupKind() schema.GroupKind {
func (l list) GroupVersionKind() schema.GroupVersionKind {
return l.gk
}

func (l list) GroupKind() schema.GroupKind {
return l.gk.GroupKind()
}

func (l list) Path() string {
return "/apis/metrics.k8s.io/{version}/{endpoint:nodes/?}"
}
Expand All @@ -55,7 +60,7 @@ func (l list) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Re

nl := &corev1.NodeList{}
if err = l.client.List(httpRequest.Context(), nl); err != nil {
return nil, errors.NewBadRequest(err, l.gk)
return nil, errors.NewBadRequest(err, l.GroupKind())
}

var r *labels.Requirement
Expand Down
Loading

0 comments on commit f505ba5

Please sign in to comment.