From 2c598a0bdb231e558465406040e8092ce934c6d6 Mon Sep 17 00:00:00 2001
From: Pierre Ozoux <pierre@ozoux.net>
Date: Thu, 20 Jan 2022 18:28:58 +0100
Subject: [PATCH] Adds migraation of storage cluster.

---
 migrations/2022-01-19-sync-half-nc-1st-part.sh | 13 +++++++++++++
 migrations/2022-01-20-sync-half-nc-2nd-part.sh | 11 +++++++++++
 scripts/change_stockage_nuage_first_sync.sh    | 10 ++++++----
 scripts/change_stockage_nuage_second_sync.sh   | 14 ++++++--------
 4 files changed, 36 insertions(+), 12 deletions(-)
 create mode 100644 migrations/2022-01-19-sync-half-nc-1st-part.sh
 create mode 100644 migrations/2022-01-20-sync-half-nc-2nd-part.sh

diff --git a/migrations/2022-01-19-sync-half-nc-1st-part.sh b/migrations/2022-01-19-sync-half-nc-1st-part.sh
new file mode 100644
index 0000000..97a37f1
--- /dev/null
+++ b/migrations/2022-01-19-sync-half-nc-1st-part.sh
@@ -0,0 +1,13 @@
+#!/bin/bash -eu
+
+for nuage in `kubectl get ing -l app.kubernetes.io/name=nextcloud -A --no-headers -o custom-columns=":metadata.name" | sed s/-web//g | head -n 25`; do
+  export NS=`echo $nuage | cut -d"-" -f2-`
+  export SUBDOMAIN=`echo $nuage | cut -d"-" -f1`
+  export OBJECTSTORE_S3_HOST=`kubectl -n ${NS} get secrets ${SUBDOMAIN}-${NS}-app -o json | jq -r ".data.OBJECTSTORE_S3_HOST" | base64 -d`
+  if [ "$OBJECTSTORE_S3_HOST" = "s3.standard.indie.host" ]; then
+    if ! kubectl get secret -n ${NS}  | grep -q new; then
+      echo Syncing $nuage ...
+      /root/domains/common/scripts/change_stockage_nuage_first_sync.sh
+    fi
+  fi
+done
diff --git a/migrations/2022-01-20-sync-half-nc-2nd-part.sh b/migrations/2022-01-20-sync-half-nc-2nd-part.sh
new file mode 100644
index 0000000..65e2dd4
--- /dev/null
+++ b/migrations/2022-01-20-sync-half-nc-2nd-part.sh
@@ -0,0 +1,11 @@
+#!/bin/bash -eu
+
+for nuage in `kubectl get ing -l app.kubernetes.io/name=nextcloud -A --no-headers -o custom-columns=":metadata.name" | sed s/-web//g | head -n 25`; do
+  export NS=`echo $nuage | cut -d"-" -f2-`
+  export SUBDOMAIN=`echo $nuage | cut -d"-" -f1`
+  export OBJECTSTORE_S3_HOST=`kubectl -n ${NS} get secrets ${SUBDOMAIN}-${NS}-app -o json | jq -r ".data.OBJECTSTORE_S3_HOST" | base64 -d`
+  if [ "$OBJECTSTORE_S3_HOST" = "s3.standard.indie.host" ]; then
+    echo Syncing $nuage ...
+    /root/domains/common/scripts/change_stockage_nuage_second_sync.sh
+  fi
+done
diff --git a/scripts/change_stockage_nuage_first_sync.sh b/scripts/change_stockage_nuage_first_sync.sh
index b78113b..aa61266 100755
--- a/scripts/change_stockage_nuage_first_sync.sh
+++ b/scripts/change_stockage_nuage_first_sync.sh
@@ -1,9 +1,10 @@
 #!/bin/bash -eu
 
-source /root/domains/common/scripts/functions.sh
-
 #export NS=liiib-re
 #export SUBDOMAIN=nuage
+
+source /root/domains/common/scripts/functions.sh
+
 export APP=${SUBDOMAIN}-${NS}
 export S3_ENDPOINT=https://hot-objects.liiib.re
 export STORAGE_CLASS=hot
@@ -12,10 +13,11 @@ export STORAGE_CLASS=hot
 export AWS_ACCESS_KEY_ID=${APP}
 export SECRET_NAME=${APP}-s3-new
 create_bucket
-#mc version enable ${STORAGE_CLASS}/${AWS_ACCESS_KEY_ID}
+mc version enable ${STORAGE_CLASS}/${AWS_ACCESS_KEY_ID}
 
-kubectl -n liiib-re get secret ro-s3 --export -o yaml 2> /dev/null | kubectl -n ${NS} apply -f -
+kubectl -n liiib-re get secret s3-ro --export -o yaml 2> /dev/null | kubectl -n ${NS} apply -f -
 kubectl -n ${NS} get secret ${APP}-s3 --export -o yaml 2> /dev/null | sed "s/${APP}-s3/${APP}-backup/g" | kubectl -n ${NS} apply -f -
 
 cd ~/domains/${NS}/${SUBDOMAIN}
 libre apply ~/domains/common/nextcloud/other-manifests/sync-job.yml
+kubectl -n ${NS} wait --for=condition=complete --timeout=-1s job/${SUBDOMAIN}-${NS}-sync-buckets
diff --git a/scripts/change_stockage_nuage_second_sync.sh b/scripts/change_stockage_nuage_second_sync.sh
index b33a083..3fdbae2 100755
--- a/scripts/change_stockage_nuage_second_sync.sh
+++ b/scripts/change_stockage_nuage_second_sync.sh
@@ -1,21 +1,19 @@
 #!/bin/bash -eu
 
-source /root/domains/common/scripts/functions.sh
-
 #export NS=liiib-re
 #export SUBDOMAIN=nuage
 
+export APP=${SUBDOMAIN}-${NS}
+
+kubectl -n ${NS} scale --replicas=0 deployment/${APP}-app
 cd ~/domains/${NS}/${SUBDOMAIN}
+kubectl -n ${NS} delete job/${SUBDOMAIN}-${NS}-sync-buckets
 libre apply ~/domains/common/nextcloud/other-manifests/sync-job.yml
-
+kubectl -n ${NS} wait --for=condition=complete --timeout=-1s job/${SUBDOMAIN}-${NS}-sync-buckets
 
 kubectl -n ${NS} get secret ${APP}-app --export -o json 2> /dev/null | jq --arg value "$(echo -n hot-objects.liiib.re | base64 -w0)" '.data["OBJECTSTORE_S3_HOST"]=$value'  | kubectl -n ${NS} apply -f -
 
-
-kubectl -n ${NS} scale --replicas=0 deployment/${APP}-app
 kubectl -n ${NS} delete secret ${APP}-s3
 kubectl -n ${NS} get secret ${APP}-s3-new --export -o yaml 2> /dev/null | sed "s/${APP}-s3-new/${APP}-s3/g" | kubectl -n ${NS} apply -f -
 
-kubectl -n ${NS} scale --replicas=2 deployment/nuage-liiib-re-app
-PO=`k -n ${NS} get po  -l app.kubernetes.io/name=nextcloud,app.kubernetes.io/component=app --no-headers -o custom-columns=":metadata.name" | head -n1` # Get the first po
-kubectl -n ${NS} exec $PO -- php occ app:enable files_versions_s3
+kubectl -n ${NS} scale --replicas=2 deployment/${APP}-app
-- 
GitLab