Files
jobs-manager-operator/controllers/helpers.go
T

65 lines
1.6 KiB
Go

package controllers
import (
"context"
"strings"
"sync"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"raczylo.com/jobs-manager-operator/api/v1beta1"
jobsmanagerv1beta1 "raczylo.com/jobs-manager-operator/api/v1beta1"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/log"
)
func jobNameGenerator(name ...string) string {
// join name parts with "-" and convert to lowercase
return strings.ToLower(strings.Join(name, "-"))
}
type jobStatusUpdate struct {
Job *jobsmanagerv1beta1.ManagedJob
PatchedResource string
Status string
}
type connPackage struct {
r *ManagedJobReconciler
ctx context.Context
req ctrl.Request
mtx sync.Mutex
mj *jobsmanagerv1beta1.ManagedJob
dependencyTree Tree
}
func (cp *connPackage) getOwnerReference() (metav1.OwnerReference, error) {
mj := &jobsmanagerv1beta1.ManagedJob{}
err := cp.r.Client.Get(cp.ctx, cp.req.NamespacedName, mj)
if err != nil {
return metav1.OwnerReference{}, err
}
t := true
return metav1.OwnerReference{
APIVersion: v1beta1.GroupVersion.String(),
Kind: "ManagedJob",
Name: mj.Name,
UID: mj.UID,
Controller: &t,
}, nil
}
func (cp *connPackage) updateCRDStatusDirectly() error {
cp.mtx.Lock()
err := cp.r.Update(cp.ctx, cp.mj)
if err != nil {
// log.Log.Info("Error", err.Error(), "more", "Unable to update ManagedJob status directly")
}
// get updated ManagedJob
err = cp.r.Client.Get(cp.ctx, cp.req.NamespacedName, cp.mj)
if err != nil {
log.Log.Error(err, "Unable to get updated ManagedJob")
}
cp.mtx.Unlock()
return err
}