mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-02-14 18:09:58 +00:00
* chore(refactor): project and api refactoring Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com> * chore(refactor): project and api refactoring Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com> --------- Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
// Copyright 2020-2025 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package meta
|
|
|
|
import (
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
|
)
|
|
|
|
// Adds an ownerreferences, which does not delete the object when the owner is deleted.
|
|
func SetLooseOwnerReference(
|
|
obj client.Object,
|
|
owner client.Object,
|
|
schema *runtime.Scheme,
|
|
) (err error) {
|
|
err = controllerutil.SetOwnerReference(owner, obj, schema)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
ownerRefs := obj.GetOwnerReferences()
|
|
for i, ownerRef := range ownerRefs {
|
|
if ownerRef.UID == owner.GetUID() {
|
|
if ownerRef.BlockOwnerDeletion != nil || ownerRef.Controller != nil {
|
|
ownerRefs[i].BlockOwnerDeletion = nil
|
|
ownerRefs[i].Controller = nil
|
|
}
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// Removes a Loose Ownerreference based on UID.
|
|
func RemoveLooseOwnerReference(
|
|
obj client.Object,
|
|
owner client.Object,
|
|
) {
|
|
refs := []metav1.OwnerReference{}
|
|
|
|
for _, ownerRef := range obj.GetOwnerReferences() {
|
|
if ownerRef.UID == owner.GetUID() {
|
|
continue
|
|
}
|
|
|
|
refs = append(refs, ownerRef)
|
|
}
|
|
|
|
obj.SetOwnerReferences(refs)
|
|
}
|
|
|
|
// If not returns false.
|
|
func HasLooseOwnerReference(
|
|
obj client.Object,
|
|
owner client.Object,
|
|
) bool {
|
|
for _, ownerRef := range obj.GetOwnerReferences() {
|
|
if ownerRef.UID == owner.GetUID() {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|