mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-02-14 18:09:58 +00:00
fix(controller): ensure iteration on capsule ownerreferences (#1059)
Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
This commit is contained in:
@@ -35,6 +35,10 @@ func (r *freezedHandler) OnCreate(client client.Client, decoder *admission.Decod
|
||||
}
|
||||
|
||||
for _, objectRef := range ns.ObjectMeta.OwnerReferences {
|
||||
if !isTenantOwnerReference(objectRef) {
|
||||
continue
|
||||
}
|
||||
|
||||
// retrieving the selected Tenant
|
||||
tnt := &capsulev1beta2.Tenant{}
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: objectRef.Name}, tnt); err != nil {
|
||||
|
||||
@@ -49,6 +49,10 @@ func (r *prefixHandler) OnCreate(clt client.Client, decoder *admission.Decoder,
|
||||
tnt := &capsulev1beta2.Tenant{}
|
||||
|
||||
for _, or := range ns.ObjectMeta.OwnerReferences {
|
||||
if !isTenantOwnerReference(or) {
|
||||
continue
|
||||
}
|
||||
|
||||
// retrieving the selected Tenant
|
||||
if err := clt.Get(ctx, types.NamespacedName{Name: or.Name}, tnt); err != nil {
|
||||
return utils.ErroredResponse(err)
|
||||
|
||||
@@ -31,6 +31,10 @@ func (r *quotaHandler) OnCreate(client client.Client, decoder *admission.Decoder
|
||||
}
|
||||
|
||||
for _, objectRef := range ns.ObjectMeta.OwnerReferences {
|
||||
if !isTenantOwnerReference(objectRef) {
|
||||
continue
|
||||
}
|
||||
|
||||
// retrieving the selected Tenant
|
||||
tnt := &capsulev1beta2.Tenant{}
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: objectRef.Name}, tnt); err != nil {
|
||||
|
||||
@@ -33,7 +33,12 @@ func (r *userMetadataHandler) OnCreate(client client.Client, decoder *admission.
|
||||
}
|
||||
|
||||
tnt := &capsulev1beta2.Tenant{}
|
||||
|
||||
for _, objectRef := range ns.ObjectMeta.OwnerReferences {
|
||||
if !isTenantOwnerReference(objectRef) {
|
||||
continue
|
||||
}
|
||||
|
||||
// retrieving the selected Tenant
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: objectRef.Name}, tnt); err != nil {
|
||||
return utils.ErroredResponse(err)
|
||||
@@ -83,7 +88,12 @@ func (r *userMetadataHandler) OnUpdate(client client.Client, decoder *admission.
|
||||
}
|
||||
|
||||
tnt := &capsulev1beta2.Tenant{}
|
||||
|
||||
for _, objectRef := range newNs.ObjectMeta.OwnerReferences {
|
||||
if !isTenantOwnerReference(objectRef) {
|
||||
continue
|
||||
}
|
||||
|
||||
// retrieving the selected Tenant
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: objectRef.Name}, tnt); err != nil {
|
||||
return utils.ErroredResponse(err)
|
||||
|
||||
27
pkg/webhook/namespace/utils.go
Normal file
27
pkg/webhook/namespace/utils.go
Normal file
@@ -0,0 +1,27 @@
|
||||
// Copyright 2020-2023 Project Capsule Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package namespace
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
|
||||
)
|
||||
|
||||
const (
|
||||
ObjectReferenceTenantKind = "Tenant"
|
||||
)
|
||||
|
||||
func isTenantOwnerReference(or metav1.OwnerReference) bool {
|
||||
parts := strings.Split(or.APIVersion, "/")
|
||||
if len(parts) != 2 {
|
||||
return false
|
||||
}
|
||||
|
||||
group := parts[0]
|
||||
|
||||
return group == capsulev1beta2.GroupVersion.Group && or.Kind == ObjectReferenceTenantKind
|
||||
}
|
||||
Reference in New Issue
Block a user