blob: 589427e25f1425f3b4bc3dc9393eb496e09bd648 [file] [log] [blame]
#!/bin/bash
set -e
set -o pipefail
REL=$(dirname "$0")
source ${REL}/config.sh
# name="chromium-swarm-bots@skia-swarming-bots.iam.gserviceaccount.com-sa-key"
# if [[ "$name" == *"iam.gserviceaccount.com"* ]]; then
# echo "match"
# exit 1
# fi
# exit 1
while read -r line; do
# Derive the GCP secret name.
srcSecretName="$(echo "$line" | awk '{print $1;}')"
srcSecretBaseName="$(echo $srcSecretName | cut -d "/" -f 2)"
dstSecretName="$(berglas_to_gcp_secret_name ${srcSecretName})"
# Skip skia-corp; it no longer exists.
cluster="$(echo $srcSecretName | cut -d "/" -f 1)"
if [[ "$cluster" == "skia-corp" ]]; then
echo "$srcSecretName is unused (skia-corp); skipping"
continue
fi
# Skip secrets that are full service account email addresses; I'm convinced
# they were created by accident.
if [[ "$dstSecretName" == *"iam.gserviceaccount.com"* ]]; then
echo "$srcSecretName looks like a full email; skipping"
continue
fi
# Skip secrets that already exist.
gcloud --project=skia-infra-public secrets describe ${dstSecretName} >> /dev/null 2>&1 && \
echo "$srcSecretName is already migrated; skipping" && \
continue
# Skip any secrets which aren't structured like service account keys.
value="$(berglas access ${BUCKET_ID}/$srcSecretName | base64 -d)"
fieldValue="$(echo "$value" | yq e '.data."key.json"')"
if [[ "$fieldValue" == "null" ]] || [[ "$fieldValue" == "" ]]; then
echo "$srcSecretName is not a service account key; skipping"
continue
fi
# Migrate the secret.
echo "Migrating: $srcSecretName to $dstSecretName"
${REL}/migrate-berglas-to-gcp.sh ${cluster} ${srcSecretBaseName} '.data."key.json"' ${dstSecretName}
#exit 0
done <<< "$(berglas list ${BUCKET_ID} | tail -n +2)"