mirror of
https://github.com/lukaszraczylo/jobs-manager-operator.git
synced 2026-06-06 22:39:22 +00:00
65 lines
1.6 KiB
Go
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
|
|
}
|