94 lines
2.1 KiB
Bash
Executable File
94 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
here=$(dirname "$0")
|
|
# shellcheck source=net/common.sh
|
|
source "$here"/common.sh
|
|
|
|
usage() {
|
|
exitcode=0
|
|
if [[ -n "$1" ]]; then
|
|
exitcode=1
|
|
echo "Error: $*"
|
|
fi
|
|
cat <<EOF
|
|
usage: $0 [-e] [-d] [-c database_name] [username]
|
|
|
|
Creates a testnet dev metrics database
|
|
|
|
username InfluxDB user with access to create a new database
|
|
-c Manually specify a database to create, rather than read from config file
|
|
-d Delete the database instead of creating it
|
|
-e Assume database already exists and SOLANA_METRICS_CONFIG is
|
|
defined in the environment already
|
|
|
|
EOF
|
|
exit $exitcode
|
|
}
|
|
|
|
useEnv=false
|
|
delete=false
|
|
createWithoutConfig=false
|
|
host="https://internal-metrics.solana.com:8086"
|
|
while getopts ":hdec:" opt; do
|
|
case $opt in
|
|
h)
|
|
usage
|
|
exit 0
|
|
;;
|
|
c)
|
|
createWithoutConfig=true
|
|
netBasename=$OPTARG
|
|
;;
|
|
d)
|
|
delete=true
|
|
;;
|
|
e)
|
|
useEnv=true
|
|
;;
|
|
*)
|
|
usage "unhandled option: $OPTARG"
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
if $useEnv; then
|
|
[[ -n $SOLANA_METRICS_CONFIG ]] ||
|
|
usage "SOLANA_METRICS_CONFIG is not defined in the environment"
|
|
else
|
|
username=$1
|
|
[[ -n "$username" ]] || usage "username not specified"
|
|
|
|
read -rs -p "InfluxDB password for $username: " password
|
|
[[ -n $password ]] || { echo "Password not specified"; exit 1; }
|
|
echo
|
|
|
|
password="$(urlencode "$password")"
|
|
|
|
if ! $createWithoutConfig; then
|
|
loadConfigFile
|
|
fi
|
|
|
|
query() {
|
|
echo "$*"
|
|
set -x
|
|
curl -XPOST \
|
|
"$host/query?u=${username}&p=${password}" \
|
|
--data-urlencode "q=$*"
|
|
}
|
|
|
|
query "DROP DATABASE \"$netBasename\""
|
|
! $delete || exit 0
|
|
query "CREATE DATABASE \"$netBasename\""
|
|
query "ALTER RETENTION POLICY autogen ON \"$netBasename\" DURATION 7d"
|
|
query "GRANT READ ON \"$netBasename\" TO \"ro\""
|
|
query "GRANT WRITE ON \"$netBasename\" TO \"scratch_writer\""
|
|
|
|
SOLANA_METRICS_CONFIG="host=$host,db=$netBasename,u=scratch_writer,p=topsecret"
|
|
fi
|
|
|
|
echo "export SOLANA_METRICS_CONFIG=\"$SOLANA_METRICS_CONFIG\"" >> "$configFile"
|
|
|
|
exit 0
|