Moved some part of the code to limnit the number of updates
This commit is contained in:
parent
145209b051
commit
0f65f114f6
@ -55,6 +55,14 @@ type BackupSessionReconciler struct {
|
|||||||
func (r *BackupSessionReconciler) StatusUpdate() error {
|
func (r *BackupSessionReconciler) StatusUpdate() error {
|
||||||
log := r.Log.WithValues("backupsession-statusupdate", r.BackupSession)
|
log := r.Log.WithValues("backupsession-statusupdate", r.BackupSession)
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
r.BackupConf = &formolv1alpha1.BackupConfiguration{}
|
||||||
|
if err := r.Get(ctx, client.ObjectKey{
|
||||||
|
Namespace: r.BackupSession.Namespace,
|
||||||
|
Name: r.BackupSession.Spec.Ref.Name}, r.BackupConf); err != nil {
|
||||||
|
log.Error(err, "unable to get backupConfiguration")
|
||||||
|
return client.IgnoreNotFound(err)
|
||||||
|
}
|
||||||
|
|
||||||
// start the next task
|
// start the next task
|
||||||
startNextTask := func() (*formolv1alpha1.TargetStatus, error) {
|
startNextTask := func() (*formolv1alpha1.TargetStatus, error) {
|
||||||
nextTarget := len(r.BackupSession.Status.Targets)
|
nextTarget := len(r.BackupSession.Status.Targets)
|
||||||
@ -258,7 +266,7 @@ func (r *BackupSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
|
|||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
// your logic here
|
// your logic here
|
||||||
time.Sleep(300 * time.Millisecond)
|
//time.Sleep(300 * time.Millisecond)
|
||||||
r.BackupSession = &formolv1alpha1.BackupSession{}
|
r.BackupSession = &formolv1alpha1.BackupSession{}
|
||||||
if err := r.Get(ctx, req.NamespacedName, r.BackupSession); err != nil {
|
if err := r.Get(ctx, req.NamespacedName, r.BackupSession); err != nil {
|
||||||
log.Error(err, "unable to get backupsession")
|
log.Error(err, "unable to get backupsession")
|
||||||
@ -270,32 +278,33 @@ func (r *BackupSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
|
|||||||
log.V(0).Info("status update")
|
log.V(0).Info("status update")
|
||||||
return ctrl.Result{}, r.StatusUpdate()
|
return ctrl.Result{}, r.StatusUpdate()
|
||||||
}
|
}
|
||||||
r.BackupSession.Status.ObservedGeneration = r.BackupSession.ObjectMeta.Generation
|
|
||||||
r.BackupSession.Status.SessionState = formolv1alpha1.New
|
|
||||||
// Prepare the next schedule to start the first task
|
|
||||||
reschedule := ctrl.Result{RequeueAfter: 5 * time.Second}
|
|
||||||
|
|
||||||
r.BackupSession.Status.StartTime = &metav1.Time{Time: time.Now()}
|
|
||||||
r.BackupConf = &formolv1alpha1.BackupConfiguration{}
|
|
||||||
if err := r.Get(ctx, client.ObjectKey{
|
|
||||||
Namespace: r.BackupSession.Namespace,
|
|
||||||
Name: r.BackupSession.Spec.Ref.Name}, r.BackupConf); err != nil {
|
|
||||||
log.Error(err, "unable to get backupConfiguration")
|
|
||||||
return ctrl.Result{}, client.IgnoreNotFound(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if r.IsBackupOngoing() {
|
if r.IsBackupOngoing() {
|
||||||
// There is already a backup ongoing. We don't do anything and we reschedule
|
// There is already a backup ongoing. We don't do anything and we reschedule
|
||||||
log.V(0).Info("there is an ongoing backup. let's reschedule this operation")
|
log.V(0).Info("there is an ongoing backup. let's reschedule this operation")
|
||||||
return ctrl.Result{RequeueAfter: 30 * time.Second}, nil
|
return ctrl.Result{RequeueAfter: 30 * time.Second}, nil
|
||||||
} else if r.BackupSession.ObjectMeta.DeletionTimestamp.IsZero() {
|
} else if r.BackupSession.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||||
|
// Check if the finalizer has been registered
|
||||||
if !controllerutil.ContainsFinalizer(r.BackupSession, finalizerName) {
|
if !controllerutil.ContainsFinalizer(r.BackupSession, finalizerName) {
|
||||||
controllerutil.AddFinalizer(r.BackupSession, finalizerName)
|
controllerutil.AddFinalizer(r.BackupSession, finalizerName)
|
||||||
if err := r.Update(ctx, r.BackupSession); err != nil {
|
// We update the BackupSession to add the finalizer
|
||||||
|
// Reconcile will be called again
|
||||||
|
// return now
|
||||||
|
err := r.Update(ctx, r.BackupSession)
|
||||||
|
if err != nil {
|
||||||
log.Error(err, "unable to add finalizer")
|
log.Error(err, "unable to add finalizer")
|
||||||
|
}
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
// All signals are green
|
||||||
|
// We start the backup process
|
||||||
|
r.BackupSession.Status.ObservedGeneration = r.BackupSession.ObjectMeta.Generation
|
||||||
|
r.BackupSession.Status.SessionState = formolv1alpha1.New
|
||||||
|
r.BackupSession.Status.StartTime = &metav1.Time{Time: time.Now()}
|
||||||
|
if err := r.Status().Update(ctx, r.BackupSession); err != nil {
|
||||||
|
log.Error(err, "unable to update backupSession")
|
||||||
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.V(0).Info("backupsession being deleted", "backupsession", r.BackupSession.Name)
|
log.V(0).Info("backupsession being deleted", "backupsession", r.BackupSession.Name)
|
||||||
if controllerutil.ContainsFinalizer(r.BackupSession, finalizerName) {
|
if controllerutil.ContainsFinalizer(r.BackupSession, finalizerName) {
|
||||||
@ -311,13 +320,7 @@ func (r *BackupSessionReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
|
|||||||
// We have been deleted. Return here
|
// We have been deleted. Return here
|
||||||
return ctrl.Result{}, nil
|
return ctrl.Result{}, nil
|
||||||
}
|
}
|
||||||
|
return ctrl.Result{}, nil
|
||||||
if err := r.Status().Update(ctx, r.BackupSession); err != nil {
|
|
||||||
log.Error(err, "unable to update backupSession")
|
|
||||||
return ctrl.Result{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return reschedule, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *BackupSessionReconciler) CreateBackupJob(target formolv1alpha1.Target) error {
|
func (r *BackupSessionReconciler) CreateBackupJob(target formolv1alpha1.Target) error {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user