#!/bin/sh
# Migration 21 --> 22

set -euo pipefail

# Disable pruning on Flux CRDs
for crd in $(kubectl get crd -o name | grep 'fluxcd.io$'); do
  kubectl annotate $crd fluxcd.controlplane.io/prune=disabled
done

# Remove flux instance
if kubectl get fluxinstance flux -n cozy-fluxcd >/dev/null 2>&1; then
  kubectl annotate fluxinstance flux -n cozy-fluxcd fluxcd.controlplane.io/reconcile=disabled
  kubectl delete fluxinstance flux -n cozy-fluxcd
fi
kubectl delete deploy -n cozy-fluxcd -l app.kubernetes.io/part-of=flux --ignore-not-found
kubectl delete hr -n cozy-fluxcd fluxcd --ignore-not-found --wait=false

# Remove fluxcd-operator
kubectl delete hr -n cozy-fluxcd fluxcd-operator --ignore-not-found --wait=false
kubectl delete deploy -n cozy-fluxcd flux-operator --ignore-not-found

# Remove labels from CRDs
for crd in $(kubectl get crd -o name | grep 'fluxcd\.io$'); do
  kubectl label $crd fluxcd.controlplane.io/name- fluxcd.controlplane.io/namespace-
done

# Stamp version
kubectl create configmap -n cozy-system cozystack-version \
  --from-literal=version=22 --dry-run=client -o yaml | kubectl apply -f-
