|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -eo pipefail |
| 4 | + |
| 5 | +function getToolConfigValue() { |
| 6 | + local var=$1 |
| 7 | + grep "$var" < "$TOOL_CONFIG" | awk '{print $NF}' |
| 8 | +} |
| 9 | + |
| 10 | +# shellcheck disable=SC2034 |
| 11 | +function setStorageConfig() { |
| 12 | + TOOL_CONFIG=/etc/datasafed/datasafed.conf |
| 13 | + |
| 14 | + ACCESS_KEY_ID=$(getToolConfigValue access_key_id) |
| 15 | + SECRET_ACCESS_KEY=$(getToolConfigValue secret_access_key) |
| 16 | + ENDPOINT=$(getToolConfigValue endpoint) |
| 17 | + BUCKET=$(getToolConfigValue "root =") |
| 18 | + PROVIDER=$(getToolConfigValue provider) |
| 19 | + |
| 20 | + if [[ "$PROVIDER" == "Alibaba" ]]; then |
| 21 | + ENDPOINT="https://${ENDPOINT}" |
| 22 | + fi |
| 23 | + |
| 24 | + export PATH="$PATH:$DP_DATASAFED_BIN_PATH" |
| 25 | + export DATASAFED_BACKEND_BASE_PATH=${DP_BACKUP_BASE_PATH} |
| 26 | + |
| 27 | + # only underscores are allowed in backup name |
| 28 | + BACKUP_NAME=${DP_BACKUP_NAME//-/_} |
| 29 | + |
| 30 | + BACKUP_CONFIG=configs/backup.yaml |
| 31 | + MILVUS_CONFIG=/milvus/configs/user.yaml |
| 32 | + |
| 33 | + if [[ -z $DP_DB_PORT ]]; then |
| 34 | + DP_DB_PORT=19530 |
| 35 | + fi |
| 36 | + |
| 37 | + # connection config |
| 38 | + yq -i ".milvus.address = \"$DP_DB_HOST\"" "$BACKUP_CONFIG" |
| 39 | + yq -i ".milvus.port = $DP_DB_PORT" "$BACKUP_CONFIG" |
| 40 | + yq -i ".milvus.user = \"\"" "$BACKUP_CONFIG" |
| 41 | + yq -i ".milvus.password = \"\"" "$BACKUP_CONFIG" |
| 42 | + yq -i ".backup.gcPause.address = \"http://$DP_DB_HOST:9091\"" "$BACKUP_CONFIG" |
| 43 | + |
| 44 | + # milvus storage config |
| 45 | + yq -i ".minio.address = \"$MINIO_HOST\"" "$BACKUP_CONFIG" |
| 46 | + yq -i ".minio.port = \"$MINIO_PORT\"" "$BACKUP_CONFIG" |
| 47 | + yq -i ".minio.accessKeyID = \"$MINIO_ACCESS_KEY\"" "$BACKUP_CONFIG" |
| 48 | + yq -i ".minio.secretAccessKey = \"$MINIO_SECRET_KEY\"" "$BACKUP_CONFIG" |
| 49 | + |
| 50 | + yq -i ".minio.bucketName = \"$MINIO_BUCKET\"" "$BACKUP_CONFIG" |
| 51 | + if [[ $MINIO_PORT == "443" ]]; then |
| 52 | + yq -i ".minio.useSSL = true" "$BACKUP_CONFIG" |
| 53 | + fi |
| 54 | + yq -i ".minio.rootPath = \"$MINIO_ROOT_PATH\"" "$BACKUP_CONFIG" |
| 55 | + # TODO: is this right? |
| 56 | + yq -i ".minio.storageType = (load(\"$MILVUS_CONFIG\") | .minio.cloudProvider)" "$BACKUP_CONFIG" |
| 57 | + |
| 58 | + # backup storage config |
| 59 | + without_scheme=${ENDPOINT#http://} |
| 60 | + IFS=":" read -r -a parts <<< "$without_scheme" |
| 61 | + yq -i ".minio.backupAddress = \"${parts[0]}\"" "$BACKUP_CONFIG" |
| 62 | + # FIXME: will backupPort be empty? |
| 63 | + yq -i ".minio.backupPort = \"${parts[1]}\"" "$BACKUP_CONFIG" |
| 64 | + yq -i ".minio.backupAccessKeyID = \"$ACCESS_KEY_ID\"" "$BACKUP_CONFIG" |
| 65 | + yq -i ".minio.backupSecretAccessKey = \"$SECRET_ACCESS_KEY\"" "$BACKUP_CONFIG" |
| 66 | + yq -i ".minio.backupBucketName = \"$BUCKET\"" "$BACKUP_CONFIG" |
| 67 | + # eliminate the leading slash, or go-minio will return an empty list when listing |
| 68 | + BACKUP_ROOT_PATH=${DP_BACKUP_BASE_PATH#/} |
| 69 | + yq -i ".minio.backupRootPath = \"$BACKUP_ROOT_PATH\"" "$BACKUP_CONFIG" |
| 70 | +} |
| 71 | + |
| 72 | +# Save backup status info file for syncing progress. |
| 73 | +# timeFormat: %Y-%m-%dT%H:%M:%SZ |
| 74 | +function DP_save_backup_status_info() { |
| 75 | + local totalSize=$1 |
| 76 | + local startTime=$2 |
| 77 | + local stopTime=$3 |
| 78 | + local timeZone=$4 |
| 79 | + local extras=$5 |
| 80 | + local timeZoneStr="" |
| 81 | + if [ -n "${timeZone}" ]; then |
| 82 | + timeZoneStr=$(printf ',"timeZone":"%s"' "${timeZone}") |
| 83 | + fi |
| 84 | + if [ -z "${stopTime}" ]; then |
| 85 | + printf '{"totalSize":"%s"}' "${totalSize}" > "${DP_BACKUP_INFO_FILE}" |
| 86 | + elif [ -z "${startTime}" ]; then |
| 87 | + printf '{"totalSize":"%s","extras":[%s],"timeRange":{"end":"%s"%s}}' "${totalSize}" "${extras}" "${stopTime}" "${timeZoneStr}" > "${DP_BACKUP_INFO_FILE}" |
| 88 | + else |
| 89 | + printf '{"totalSize":"%s","extras":[%s],"timeRange":{"start":"%s","end":"%s"%s}}' "${totalSize}" "${extras}" "${startTime}" "${stopTime}" "${timeZoneStr}" > "${DP_BACKUP_INFO_FILE}" |
| 90 | + fi |
| 91 | +} |
0 commit comments