Files
capsule/pkg/api/meta/ownerreference.go
T
Oliver BählerandGitHub a6b830b1af feat: add ruleset api(#1844)
* fix(controller): decode old object for delete requests

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* fix(config): remove usergroups default

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* fix(config): remove usergroups default

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* sec(ghsa-2ww6-hf35-mfjm): intercept namespace subresource

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: conflicts

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* feat(api): add rulestatus api

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

---------

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
2026-01-27 14:28:48 +01:00

84 lines
1.7 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package meta
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)
// Adds an ownerreferences, which does not delete the object when the owner is deleted.
func SetLooseOwnerReference(obj client.Object, owner metav1.OwnerReference) error {
if obj == nil {
return nil
}
ownerRefs := obj.GetOwnerReferences()
// Overwrite existing entry with same UID
for i := range ownerRefs {
if ownerRefs[i].UID == owner.UID {
ownerRefs[i] = owner
obj.SetOwnerReferences(ownerRefs)
return nil
}
}
ownerRefs = append(ownerRefs, owner)
obj.SetOwnerReferences(ownerRefs)
return nil
}
// Removes a Loose Ownerreference based on UID.
func RemoveLooseOwnerReference(
obj client.Object,
owner metav1.OwnerReference,
) {
refs := []metav1.OwnerReference{}
for _, ownerRef := range obj.GetOwnerReferences() {
if ownerRef.UID == owner.UID {
continue
}
refs = append(refs, ownerRef)
}
obj.SetOwnerReferences(refs)
}
// If not returns false.
func HasLooseOwnerReference(
obj client.Object,
owner metav1.OwnerReference,
) bool {
for _, ownerRef := range obj.GetOwnerReferences() {
if ownerRef.UID == owner.UID {
return true
}
}
return false
}
func GetLooseOwnerReference(
obj client.Object,
) metav1.OwnerReference {
return metav1.OwnerReference{
APIVersion: obj.GetObjectKind().GroupVersionKind().GroupVersion().String(),
Kind: obj.GetObjectKind().GroupVersionKind().Kind,
Name: obj.GetName(),
UID: obj.GetUID(),
}
}
func LooseOwnerReferenceEqual(a, b metav1.OwnerReference) bool {
return a.APIVersion == b.APIVersion &&
a.Kind == b.Kind &&
a.Name == b.Name &&
a.UID == b.UID
}