Reorganized files one more time
This commit is contained in:
parent
854f290a02
commit
9ed45d8528
@ -28,7 +28,6 @@ import (
|
|||||||
"sigs.k8s.io/controller-runtime/pkg/log"
|
"sigs.k8s.io/controller-runtime/pkg/log"
|
||||||
|
|
||||||
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
|
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
|
||||||
//formolutils "github.com/desmo999r/formol/pkg/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// BackupConfigurationReconciler reconciles a BackupConfiguration object
|
// BackupConfigurationReconciler reconciles a BackupConfiguration object
|
||||||
@ -43,15 +42,6 @@ type BackupConfigurationReconciler struct {
|
|||||||
//+kubebuilder:rbac:groups=formol.desmojim.fr,resources=backupconfigurations/status,verbs=get;update;patch
|
//+kubebuilder:rbac:groups=formol.desmojim.fr,resources=backupconfigurations/status,verbs=get;update;patch
|
||||||
//+kubebuilder:rbac:groups=formol.desmojim.fr,resources=backupconfigurations/finalizers,verbs=update
|
//+kubebuilder:rbac:groups=formol.desmojim.fr,resources=backupconfigurations/finalizers,verbs=update
|
||||||
|
|
||||||
// Reconcile is part of the main kubernetes reconciliation loop which aims to
|
|
||||||
// move the current state of the cluster closer to the desired state.
|
|
||||||
// TODO(user): Modify the Reconcile function to compare the state specified by
|
|
||||||
// the BackupConfiguration object against the actual cluster state, and then
|
|
||||||
// perform operations to make the cluster state reflect the state specified by
|
|
||||||
// the user.
|
|
||||||
//
|
|
||||||
// For more details, check Reconcile and its Result here:
|
|
||||||
// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.13.1/pkg/reconcile
|
|
||||||
func (r *BackupConfigurationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
func (r *BackupConfigurationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
||||||
r.Context = ctx
|
r.Context = ctx
|
||||||
r.Log = log.FromContext(ctx)
|
r.Log = log.FromContext(ctx)
|
||||||
|
|||||||
@ -1,103 +0,0 @@
|
|||||||
package controllers
|
|
||||||
|
|
||||||
import (
|
|
||||||
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
|
|
||||||
batchv1 "k8s.io/api/batch/v1"
|
|
||||||
corev1 "k8s.io/api/core/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
ctrl "sigs.k8s.io/controller-runtime"
|
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (r *BackupConfigurationReconciler) DeleteCronJob(backupConf formolv1alpha1.BackupConfiguration) error {
|
|
||||||
cronjob := &batchv1.CronJob{}
|
|
||||||
if err := r.Get(r.Context, client.ObjectKey{
|
|
||||||
Namespace: backupConf.Namespace,
|
|
||||||
Name: "backup-" + backupConf.Name,
|
|
||||||
}, cronjob); err == nil {
|
|
||||||
r.Log.V(0).Info("Deleting cronjob", "cronjob", cronjob.Name)
|
|
||||||
return r.Delete(r.Context, cronjob)
|
|
||||||
} else {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *BackupConfigurationReconciler) AddCronJob(backupConf formolv1alpha1.BackupConfiguration) error {
|
|
||||||
cronjob := &batchv1.CronJob{}
|
|
||||||
if err := r.Get(r.Context, client.ObjectKey{
|
|
||||||
Namespace: backupConf.Namespace,
|
|
||||||
Name: "backup-" + backupConf.Name,
|
|
||||||
}, cronjob); err == nil {
|
|
||||||
r.Log.V(0).Info("there is already a cronjob")
|
|
||||||
var changed bool
|
|
||||||
if backupConf.Spec.Schedule != cronjob.Spec.Schedule {
|
|
||||||
r.Log.V(0).Info("cronjob schedule has changed", "old schedule", cronjob.Spec.Schedule, "new schedule", backupConf.Spec.Schedule)
|
|
||||||
cronjob.Spec.Schedule = backupConf.Spec.Schedule
|
|
||||||
changed = true
|
|
||||||
}
|
|
||||||
if backupConf.Spec.Suspend != nil && backupConf.Spec.Suspend != cronjob.Spec.Suspend {
|
|
||||||
r.Log.V(0).Info("cronjob suspend has changed", "before", cronjob.Spec.Suspend, "new", backupConf.Spec.Suspend)
|
|
||||||
cronjob.Spec.Suspend = backupConf.Spec.Suspend
|
|
||||||
changed = true
|
|
||||||
}
|
|
||||||
if changed == true {
|
|
||||||
if err := r.Update(r.Context, cronjob); err != nil {
|
|
||||||
r.Log.Error(err, "unable to update cronjob definition")
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
backupConf.Status.Suspended = *backupConf.Spec.Suspend
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
} else if errors.IsNotFound(err) == false {
|
|
||||||
r.Log.Error(err, "something went wrong")
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
cronjob = &batchv1.CronJob{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "backup-" + backupConf.Name,
|
|
||||||
Namespace: backupConf.Namespace,
|
|
||||||
},
|
|
||||||
Spec: batchv1.CronJobSpec{
|
|
||||||
Suspend: backupConf.Spec.Suspend,
|
|
||||||
Schedule: backupConf.Spec.Schedule,
|
|
||||||
JobTemplate: batchv1.JobTemplateSpec{
|
|
||||||
Spec: batchv1.JobSpec{
|
|
||||||
Template: corev1.PodTemplateSpec{
|
|
||||||
Spec: corev1.PodSpec{
|
|
||||||
RestartPolicy: corev1.RestartPolicyOnFailure,
|
|
||||||
ServiceAccountName: "backupsession-creator",
|
|
||||||
Containers: []corev1.Container{
|
|
||||||
corev1.Container{
|
|
||||||
Name: "job-createbackupsession-" + backupConf.Name,
|
|
||||||
Image: backupConf.Spec.Image,
|
|
||||||
Args: []string{
|
|
||||||
"backupsession",
|
|
||||||
"create",
|
|
||||||
"--namespace",
|
|
||||||
backupConf.Namespace,
|
|
||||||
"--name",
|
|
||||||
backupConf.Name,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
if err := ctrl.SetControllerReference(&backupConf, cronjob, r.Scheme); err != nil {
|
|
||||||
r.Log.Error(err, "unable to set controller on job", "cronjob", cronjob, "backupconf", backupConf)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
r.Log.V(0).Info("creating the cronjob")
|
|
||||||
if err := r.Create(r.Context, cronjob); err != nil {
|
|
||||||
r.Log.Error(err, "unable to create the cronjob", "cronjob", cronjob)
|
|
||||||
return err
|
|
||||||
} else {
|
|
||||||
backupConf.Status.Suspended = *backupConf.Spec.Suspend
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -2,12 +2,108 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
appsv1 "k8s.io/api/apps/v1"
|
appsv1 "k8s.io/api/apps/v1"
|
||||||
|
batchv1 "k8s.io/api/batch/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
ctrl "sigs.k8s.io/controller-runtime"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||||
|
|
||||||
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
|
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (r *BackupConfigurationReconciler) DeleteCronJob(backupConf formolv1alpha1.BackupConfiguration) error {
|
||||||
|
cronjob := &batchv1.CronJob{}
|
||||||
|
if err := r.Get(r.Context, client.ObjectKey{
|
||||||
|
Namespace: backupConf.Namespace,
|
||||||
|
Name: "backup-" + backupConf.Name,
|
||||||
|
}, cronjob); err == nil {
|
||||||
|
r.Log.V(0).Info("Deleting cronjob", "cronjob", cronjob.Name)
|
||||||
|
return r.Delete(r.Context, cronjob)
|
||||||
|
} else {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *BackupConfigurationReconciler) AddCronJob(backupConf formolv1alpha1.BackupConfiguration) error {
|
||||||
|
cronjob := &batchv1.CronJob{}
|
||||||
|
if err := r.Get(r.Context, client.ObjectKey{
|
||||||
|
Namespace: backupConf.Namespace,
|
||||||
|
Name: "backup-" + backupConf.Name,
|
||||||
|
}, cronjob); err == nil {
|
||||||
|
r.Log.V(0).Info("there is already a cronjob")
|
||||||
|
var changed bool
|
||||||
|
if backupConf.Spec.Schedule != cronjob.Spec.Schedule {
|
||||||
|
r.Log.V(0).Info("cronjob schedule has changed", "old schedule", cronjob.Spec.Schedule, "new schedule", backupConf.Spec.Schedule)
|
||||||
|
cronjob.Spec.Schedule = backupConf.Spec.Schedule
|
||||||
|
changed = true
|
||||||
|
}
|
||||||
|
if backupConf.Spec.Suspend != nil && backupConf.Spec.Suspend != cronjob.Spec.Suspend {
|
||||||
|
r.Log.V(0).Info("cronjob suspend has changed", "before", cronjob.Spec.Suspend, "new", backupConf.Spec.Suspend)
|
||||||
|
cronjob.Spec.Suspend = backupConf.Spec.Suspend
|
||||||
|
changed = true
|
||||||
|
}
|
||||||
|
if changed == true {
|
||||||
|
if err := r.Update(r.Context, cronjob); err != nil {
|
||||||
|
r.Log.Error(err, "unable to update cronjob definition")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
backupConf.Status.Suspended = *backupConf.Spec.Suspend
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
} else if errors.IsNotFound(err) == false {
|
||||||
|
r.Log.Error(err, "something went wrong")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cronjob = &batchv1.CronJob{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "backup-" + backupConf.Name,
|
||||||
|
Namespace: backupConf.Namespace,
|
||||||
|
},
|
||||||
|
Spec: batchv1.CronJobSpec{
|
||||||
|
Suspend: backupConf.Spec.Suspend,
|
||||||
|
Schedule: backupConf.Spec.Schedule,
|
||||||
|
JobTemplate: batchv1.JobTemplateSpec{
|
||||||
|
Spec: batchv1.JobSpec{
|
||||||
|
Template: corev1.PodTemplateSpec{
|
||||||
|
Spec: corev1.PodSpec{
|
||||||
|
RestartPolicy: corev1.RestartPolicyOnFailure,
|
||||||
|
ServiceAccountName: "backupsession-creator",
|
||||||
|
Containers: []corev1.Container{
|
||||||
|
corev1.Container{
|
||||||
|
Name: "job-createbackupsession-" + backupConf.Name,
|
||||||
|
Image: backupConf.Spec.Image,
|
||||||
|
Args: []string{
|
||||||
|
"backupsession",
|
||||||
|
"create",
|
||||||
|
"--namespace",
|
||||||
|
backupConf.Namespace,
|
||||||
|
"--name",
|
||||||
|
backupConf.Name,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if err := ctrl.SetControllerReference(&backupConf, cronjob, r.Scheme); err != nil {
|
||||||
|
r.Log.Error(err, "unable to set controller on job", "cronjob", cronjob, "backupconf", backupConf)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
r.Log.V(0).Info("creating the cronjob")
|
||||||
|
if err := r.Create(r.Context, cronjob); err != nil {
|
||||||
|
r.Log.Error(err, "unable to create the cronjob", "cronjob", cronjob)
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
backupConf.Status.Suspended = *backupConf.Spec.Suspend
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.BackupConfiguration) error {
|
func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.BackupConfiguration) error {
|
||||||
removeTags := func(podSpec *corev1.PodSpec, target formolv1alpha1.Target) {
|
removeTags := func(podSpec *corev1.PodSpec, target formolv1alpha1.Target) {
|
||||||
for i, container := range podSpec.Containers {
|
for i, container := range podSpec.Containers {
|
||||||
Loading…
Reference in New Issue
Block a user