online-tenant-restore-tethered-namespaces-workaround.sh script

Use the following script to restore resources in tethered projects.

TENANT_BACKUP_NAME=$1
CPD_INSTANCE_NS=$2
CPD_OPERATOR_NS=$3
OPERATOR_NAMESPACE=$4

if [[ ! $TENANT_BACKUP_NAME || ! $CPD_INSTANCE_NS || ! $CPD_OPERATOR_NS || ! $OPERATOR_NAMESPACE ]]; then
  echo 'usage ./online-tenant-restore-service-orchestration-tethered-namespaces-workaround.sh TENANT_BACKUP_NAME CPD_INSTANCE_NS CPD_OPERATOR_NS OPERATOR_NAMESPACE'
  exit 1
fi

BACKUP_NAME=$(oc get backups.velero.io -n $OPERATOR_NAMESPACE -l cpdbr.cpd.ibm.com/tenant-backup-name=$TENANT_BACKUP_NAME | grep cpd-tenant | grep -Ev vol | awk '{print $1}')
cpd-cli oadp backup download $BACKUP_NAME
mkdir $BACKUP_NAME
tar xzf ${BACKUP_NAME}-data.tar.gz -C $BACKUP_NAME

pushd .
cd $BACKUP_NAME/resources/secrets/namespaces
# only restoring tethered namespaces resources
for secret in $(find . -type f | grep internal-tls | grep -Ev "$CPD_INSTANCE_NS|$CPD_OPERATOR_NS"); do
  echo "applying $secret"
  newSecret=$secret.new
  cat $secret | jq 'del(.status) | del(.metadata.creationTimestamp) | del(.metadata.resourceVersion) | del(.metadata.uid) | del(.metadata.ownerReferences) | del(.metadata.generation)' &> $newSecret
  oc apply -f $newSecret
done
popd


pushd .
cd $BACKUP_NAME/resources/serviceaccounts/namespaces
for sa in $(find . -type f | grep spark-hb-sa | grep -Ev "$CPD_INSTANCE_NS|$CPD_OPERATOR_NS"); do
  echo "applying $sa"
  newSa=$sa.new
  cat $sa | jq 'del(.status) | del(.metadata.creationTimestamp) | del(.metadata.resourceVersion) | del(.metadata.uid) | del(.metadata.ownerReferences) | del(.metadata.generation)' &> $newSa
  oc apply -f $newSa
done
popd