Fixed initialization and teardown update issues
This commit is contained in:
parent
9cf5dc10d0
commit
ea03e9af62
@ -58,6 +58,7 @@ type BackupConfigurationReconciler struct {
|
|||||||
// +kubebuilder:rbac:groups=batch,resources=cronjobs/status,verbs=get
|
// +kubebuilder:rbac:groups=batch,resources=cronjobs/status,verbs=get
|
||||||
|
|
||||||
func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||||
|
var changed bool
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
log := r.Log.WithValues("backupconfiguration", req.NamespacedName)
|
log := r.Log.WithValues("backupconfiguration", req.NamespacedName)
|
||||||
//time.Sleep(300 * time.Millisecond)
|
//time.Sleep(300 * time.Millisecond)
|
||||||
@ -110,13 +111,12 @@ func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result
|
|||||||
Name: "backup-" + backupConf.Name,
|
Name: "backup-" + backupConf.Name,
|
||||||
}, cronjob); err == nil {
|
}, cronjob); err == nil {
|
||||||
log.V(0).Info("there is already a cronjob")
|
log.V(0).Info("there is already a cronjob")
|
||||||
var changed bool
|
|
||||||
if backupConf.Spec.Schedule != cronjob.Spec.Schedule {
|
if backupConf.Spec.Schedule != cronjob.Spec.Schedule {
|
||||||
log.V(0).Info("cronjob schedule has changed", "old schedule", cronjob.Spec.Schedule, "new schedule", backupConf.Spec.Schedule)
|
log.V(0).Info("cronjob schedule has changed", "old schedule", cronjob.Spec.Schedule, "new schedule", backupConf.Spec.Schedule)
|
||||||
cronjob.Spec.Schedule = backupConf.Spec.Schedule
|
cronjob.Spec.Schedule = backupConf.Spec.Schedule
|
||||||
changed = true
|
changed = true
|
||||||
}
|
}
|
||||||
if backupConf.Spec.Suspend != cronjob.Spec.Suspend {
|
if backupConf.Spec.Suspend != nil && backupConf.Spec.Suspend != cronjob.Spec.Suspend {
|
||||||
log.V(0).Info("cronjob suspend has changed", "before", cronjob.Spec.Suspend, "new", backupConf.Spec.Suspend)
|
log.V(0).Info("cronjob suspend has changed", "before", cronjob.Spec.Suspend, "new", backupConf.Spec.Suspend)
|
||||||
cronjob.Spec.Suspend = backupConf.Spec.Suspend
|
cronjob.Spec.Suspend = backupConf.Spec.Suspend
|
||||||
changed = true
|
changed = true
|
||||||
@ -175,9 +175,11 @@ func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result
|
|||||||
if err := r.Create(context.Background(), cronjob); err != nil {
|
if err := r.Create(context.Background(), cronjob); err != nil {
|
||||||
log.Error(err, "unable to create the cronjob", "cronjob", cronjob)
|
log.Error(err, "unable to create the cronjob", "cronjob", cronjob)
|
||||||
return err
|
return err
|
||||||
}
|
} else {
|
||||||
|
changed = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
deleteSidecarContainer := func(target formolv1alpha1.Target) error {
|
deleteSidecarContainer := func(target formolv1alpha1.Target) error {
|
||||||
deployment, err := getDeployment(backupConf.Namespace, target.Name)
|
deployment, err := getDeployment(backupConf.Namespace, target.Name)
|
||||||
@ -278,9 +280,11 @@ func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result
|
|||||||
if err := r.Update(context.Background(), deployment); err != nil {
|
if err := r.Update(context.Background(), deployment); err != nil {
|
||||||
log.Error(err, "unable to update the Deployment")
|
log.Error(err, "unable to update the Deployment")
|
||||||
return err
|
return err
|
||||||
}
|
} else {
|
||||||
|
changed = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
deleteExternalResources := func() error {
|
deleteExternalResources := func() error {
|
||||||
for _, target := range backupConf.Spec.Targets {
|
for _, target := range backupConf.Spec.Targets {
|
||||||
@ -300,17 +304,18 @@ func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result
|
|||||||
log.V(0).Info("backupconf being deleted", "backupconf", backupConf.Name)
|
log.V(0).Info("backupconf being deleted", "backupconf", backupConf.Name)
|
||||||
if formolutils.ContainsString(backupConf.ObjectMeta.Finalizers, finalizerName) {
|
if formolutils.ContainsString(backupConf.ObjectMeta.Finalizers, finalizerName) {
|
||||||
_ = deleteExternalResources()
|
_ = deleteExternalResources()
|
||||||
}
|
|
||||||
backupConf.ObjectMeta.Finalizers = formolutils.RemoveString(backupConf.ObjectMeta.Finalizers, finalizerName)
|
backupConf.ObjectMeta.Finalizers = formolutils.RemoveString(backupConf.ObjectMeta.Finalizers, finalizerName)
|
||||||
if err := r.Update(context.Background(), backupConf); err != nil {
|
if err := r.Update(context.Background(), backupConf); err != nil {
|
||||||
log.Error(err, "unable to remove finalizer")
|
log.Error(err, "unable to remove finalizer")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// We have been deleted. Return here
|
// We have been deleted. Return here
|
||||||
log.V(0).Info("backupconf deleted", "backupconf", backupConf.Name)
|
log.V(0).Info("backupconf deleted", "backupconf", backupConf.Name)
|
||||||
return ctrl.Result{}, nil
|
return ctrl.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add finalizer
|
||||||
if !formolutils.ContainsString(backupConf.ObjectMeta.Finalizers, finalizerName) {
|
if !formolutils.ContainsString(backupConf.ObjectMeta.Finalizers, finalizerName) {
|
||||||
backupConf.ObjectMeta.Finalizers = append(backupConf.ObjectMeta.Finalizers, finalizerName)
|
backupConf.ObjectMeta.Finalizers = append(backupConf.ObjectMeta.Finalizers, finalizerName)
|
||||||
err := r.Update(context.Background(), backupConf)
|
err := r.Update(context.Background(), backupConf)
|
||||||
@ -322,25 +327,29 @@ func (r *BackupConfigurationReconciler) Reconcile(req ctrl.Request) (ctrl.Result
|
|||||||
|
|
||||||
if err := addCronJob(); err != nil {
|
if err := addCronJob(); err != nil {
|
||||||
return ctrl.Result{}, nil
|
return ctrl.Result{}, nil
|
||||||
}
|
} else {
|
||||||
backupConf.Status.ActiveCronJob = true
|
backupConf.Status.ActiveCronJob = true
|
||||||
|
}
|
||||||
|
|
||||||
for _, target := range backupConf.Spec.Targets {
|
for _, target := range backupConf.Spec.Targets {
|
||||||
switch target.Kind {
|
switch target.Kind {
|
||||||
case formolv1alpha1.SidecarKind:
|
case formolv1alpha1.SidecarKind:
|
||||||
if err := addSidecarContainer(target); err != nil {
|
if err := addSidecarContainer(target); err != nil {
|
||||||
return ctrl.Result{}, client.IgnoreNotFound(err)
|
return ctrl.Result{}, client.IgnoreNotFound(err)
|
||||||
}
|
} else {
|
||||||
backupConf.Status.ActiveSidecar = true
|
backupConf.Status.ActiveSidecar = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
backupConf.Status.Suspended = false
|
//backupConf.Status.Suspended = false
|
||||||
|
if changed == true {
|
||||||
log.V(1).Info("updating backupconf")
|
log.V(1).Info("updating backupconf")
|
||||||
if err := r.Status().Update(ctx, backupConf); err != nil {
|
if err := r.Status().Update(ctx, backupConf); err != nil {
|
||||||
log.Error(err, "unable to update backupconf", "backupconf", backupConf)
|
log.Error(err, "unable to update backupconf", "backupconf", backupConf)
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ctrl.Result{}, nil
|
return ctrl.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user