chore: build
ci-api / test (push) Successful in 25m0s
ci-web / test (push) Successful in 15m18s

This commit is contained in:
Xor290
2026-08-19 15:05:08 +02:00
parent a278040545
commit f407bc3dd0
8 changed files with 102 additions and 30 deletions
@@ -813,8 +813,9 @@ func (h *HelmProvisioner) deleteNamespace(name string) error {
const veleroNamespace = "velero"
var (
veleroScheduleGVR = schema.GroupVersionResource{Group: "velero.io", Version: "v1", Resource: "schedules"}
veleroBackupGVR = schema.GroupVersionResource{Group: "velero.io", Version: "v1", Resource: "backups"}
veleroScheduleGVR = schema.GroupVersionResource{Group: "velero.io", Version: "v1", Resource: "schedules"}
veleroBackupGVR = schema.GroupVersionResource{Group: "velero.io", Version: "v1", Resource: "backups"}
veleroBackupRepoGVR = schema.GroupVersionResource{Group: "velero.io", Version: "v1", Resource: "backuprepositories"}
)
// demoBackupScheduleName : nom du Schedule Velero dédié à ce namespace de
@@ -857,14 +858,24 @@ func (h *HelmProvisioner) ensureDemoBackupSchedule(namespace string) error {
return nil
}
// deleteDemoBackups supprime le Schedule Velero de cette démo ainsi que
// toutes les sauvegardes déjà prises par ce planning (la suppression d'un
// Backup déclenche le nettoyage asynchrone des données Kopia associées côté
// Velero — pas de suppression directe dans le bucket S3, qui risquerait de
// casser le dépôt Kopia partagé par les autres démos). Appelée depuis
// Teardown (expiration TTL et destruction forcée passent toutes les deux
// par ce même chemin) et lors d'une migration premium réussie (l'ancien
// namespace disparaît, son planning de sauvegarde n'a plus de sens).
// deleteDemoBackups supprime le Schedule Velero de cette démo, toutes les
// sauvegardes déjà prises par ce planning, et le BackupRepository associé
// (la suppression d'un Backup déclenche le nettoyage asynchrone des données
// Kopia associées côté Velero — pas de suppression directe dans le bucket
// S3, qui risquerait de casser le dépôt Kopia partagé par les autres
// démos). Appelée depuis Teardown (expiration TTL et destruction forcée
// passent toutes les deux par ce même chemin) et lors d'une migration
// premium réussie (l'ancien namespace disparaît, son planning de sauvegarde
// n'a plus de sens).
//
// Le BackupRepository (l'objet qui référence le dépôt Kopia du namespace,
// nommé "<namespace>-default-kopia") n'est PAS supprimé automatiquement par
// Velero quand ses Backup disparaissent — sans ce nettoyage explicite, il
// reste indéfiniment et Velero continue de lancer des jobs de maintenance
// périodiques dessus (kopia-maintain-job) pour un dépôt qui ne sert plus à
// rien. Supprimer l'objet ne touche pas aux données déjà écrites dans le
// bucket S3 (même logique que pour les Backup ci-dessus), juste le
// bookkeeping Velero.
func (h *HelmProvisioner) deleteDemoBackups(namespace string) error {
name := demoBackupScheduleName(namespace)
@@ -886,6 +897,13 @@ func (h *HelmProvisioner) deleteDemoBackups(namespace string) error {
if err != nil && !k8sErrors.IsNotFound(err) {
return fmt.Errorf("suppression planning %s: %w", name, err)
}
repoName := namespace + "-default-kopia"
err = h.dynamicClient.Resource(veleroBackupRepoGVR).Namespace(veleroNamespace).
Delete(context.Background(), repoName, metav1.DeleteOptions{})
if err != nil && !k8sErrors.IsNotFound(err) {
return fmt.Errorf("suppression backuprepository %s: %w", repoName, err)
}
return nil
}