| 
									
										
										
										
											2018-11-11 08:19:04 -08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | set -e | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  | usage: $0 [-e] [-d] [-c] [username] | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | Creates a testnet dev metrics database | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   username        InfluxDB user with access to create a new database | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  |   -c              Use Influx Cloud instance | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |   -d              Delete the database instead of creating it | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  |   -e              Assume database already exists and SOLANA_METRICS_CONFIG is | 
					
						
							|  |  |  |                   defined in the environment already | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | EOF | 
					
						
							|  |  |  |   exit $exitcode | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  | loadConfigFile | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  | useEnv=false | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | delete=false | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  | host="https://metrics.solana.com:8086" | 
					
						
							|  |  |  | while getopts "hcde" opt; do | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |   case $opt in | 
					
						
							|  |  |  |   h|\?) | 
					
						
							|  |  |  |     usage | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  |   c) | 
					
						
							|  |  |  |     host="https://clocktower-f1d56615.influxcloud.net:8086" | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |   d) | 
					
						
							| 
									
										
										
										
											2018-09-03 18:15:55 -10:00
										 |  |  |     delete=true | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  |   e) | 
					
						
							|  |  |  |     useEnv=true | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |   *) | 
					
						
							| 
									
										
										
										
											2018-11-07 10:35:08 -08:00
										 |  |  |     usage "unhandled option: $opt" | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  |     ;; | 
					
						
							|  |  |  |   esac | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | shift $((OPTIND - 1)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  | if $useEnv; then | 
					
						
							|  |  |  |   [[ -n $SOLANA_METRICS_CONFIG ]] || | 
					
						
							| 
									
										
										
										
											2018-11-07 10:35:08 -08:00
										 |  |  |     usage "SOLANA_METRICS_CONFIG is not defined in the environment" | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  | else | 
					
						
							|  |  |  |   username=$1 | 
					
						
							|  |  |  |   [[ -n "$username" ]] || usage "username not specified" | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  |   read -rs -p "InfluxDB password for $username: " password | 
					
						
							|  |  |  |   [[ -n $password ]] || { echo "Password not specified"; exit 1; } | 
					
						
							|  |  |  |   echo | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  |   query() { | 
					
						
							|  |  |  |     echo "$*" | 
					
						
							|  |  |  |     curl -XPOST \
 | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  |       "$host/query?u=${username}&p=${password}" \
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  |       --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\"" | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-25 23:27:59 +00:00
										 |  |  |   SOLANA_METRICS_CONFIG="host=$host,db=$netBasename,u=scratch_writer,p=topsecret" | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 09:29:56 -07:00
										 |  |  | echo "export SOLANA_METRICS_CONFIG=\"$SOLANA_METRICS_CONFIG\"" >> "$configFile" | 
					
						
							| 
									
										
										
										
											2018-08-28 10:19:33 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | exit 0 |