Compare commits

..

No commits in common. "72390d9564504c8455aa3cf4fb8ea80954dca56a" and "915b48d2b0f5cffb0a4a7e4b07afcbc4e318ff45" have entirely different histories.

5 changed files with 5 additions and 29 deletions

2
.gitmodules vendored
View File

@ -1,5 +1,3 @@
[submodule "formol"]
path = formol
url = ../formol
# url = ssh://git@git.desmojim.fr:2222/jandre/formol.git
# url = git@github.com:desmo999r/formol.git

View File

@ -41,7 +41,7 @@ func (r *BackupSessionReconciler) backupJob(target formolv1alpha1.Target) (resul
}
func (r *BackupSessionReconciler) backupSnapshot(target formolv1alpha1.Target) (e error) {
targetObject, targetPodSpec, _ := formolv1alpha1.GetTargetObjects(target.TargetKind)
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
if err := r.Get(r.Context, client.ObjectKey{
Namespace: r.Namespace,
Name: target.TargetName,
@ -81,25 +81,6 @@ func (r *BackupSessionReconciler) backupSnapshot(target formolv1alpha1.Target) (
Name: formolv1alpha1.BACKUP_PATHS,
Value: strings.Join(paths, string(os.PathListSeparator)),
})
// This is to make sure the backup job pod won't be scheduled on the same host as the target
// Some filesystem don't accept to be mounted twice on the same node (XFS for instance).
affinity := corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
PreferredDuringSchedulingIgnoredDuringExecution: []corev1.WeightedPodAffinityTerm{
corev1.WeightedPodAffinityTerm{
Weight: 50,
PodAffinityTerm: corev1.PodAffinityTerm{
LabelSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{
formolv1alpha1.FORMOL_LABEL: target.TargetName,
},
},
TopologyKey: "kubernetes.io/hostname",
},
},
},
},
}
job := batchv1.Job{
ObjectMeta: metav1.ObjectMeta{
Namespace: r.Namespace,
@ -114,7 +95,6 @@ func (r *BackupSessionReconciler) backupSnapshot(target formolv1alpha1.Target) (
sidecar,
},
RestartPolicy: corev1.RestartPolicyNever,
Affinity: &affinity,
},
},
},
@ -277,10 +257,9 @@ func (r *BackupSessionReconciler) createVolumeFromSnapshot(vs *volumesnapshotv1.
func (r *BackupSessionReconciler) snapshotVolumes(vms []corev1.VolumeMount, podSpec *corev1.PodSpec) (err error) {
// We snapshot/check all the volumes. If at least one of the snapshot is not ready to use. We reschedule.
alreadySnapshoted := make(map[string]struct{})
for _, vm := range vms {
for i, volume := range podSpec.Volumes {
if _, done := alreadySnapshoted[volume.Name]; done == false && vm.Name == volume.Name {
if vm.Name == volume.Name {
var vs *volumesnapshotv1.VolumeSnapshot
vs, err = r.snapshotVolume(volume)
if IsNotReadyToUse(err) {
@ -294,7 +273,6 @@ func (r *BackupSessionReconciler) snapshotVolumes(vms []corev1.VolumeMount, podS
}
if vs != nil {
// The snapshot is ready. We create a PVC from it.
alreadySnapshoted[volume.Name] = struct{}{}
backupPVCName, err := r.createVolumeFromSnapshot(vs)
if err != nil {
r.Log.Error(err, "unable to create volume from snapshot", "vs", vs)

View File

@ -11,7 +11,7 @@ func (r *RestoreSessionReconciler) restoreInitContainer(target formolv1alpha1.Ta
// The restore has to be done by an initContainer since the data is mounted RO
// We create the initContainer here
// Once the the container has rebooted and the initContainer has done its job, it will change the restoreTargetStatus to Waiting.
targetObject, targetPodSpec, _ := formolv1alpha1.GetTargetObjects(target.TargetKind)
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
if err := r.Get(r.Context, client.ObjectKey{
Namespace: r.backupConf.Namespace,
Name: target.TargetName,

2
formol

@ -1 +1 @@
Subproject commit 9ed5e3aea7453389ccf648c9fea4b748b85c611d
Subproject commit ea1c1bd2e31cc6f67621ed71659e738ca5f5d8c8

View File

@ -154,7 +154,7 @@ func StartRestore(
return
}
log.V(0).Info("restore over. removing the initContainer")
targetObject, targetPodSpec, _ := formolv1alpha1.GetTargetObjects(target.TargetKind)
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
if err := session.Get(session.Context, client.ObjectKey{
Namespace: restoreSessionNamespace,
Name: target.TargetName,