ca114f7812
This patch adds etcd storage implementation. This should be useful in environments where - we dont want to depends on a separate, hard to maintain SQL cluster - we dont want to incur the overhead of talking to kubernetes apiservers - kubernetes is not available yet, or if kubernetes depends on dex to perform authentication and the operator would like to remove any circular dependency if possible.
110 lines
2.0 KiB
Bash
Executable File
110 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "Please run as root"
|
|
exit
|
|
fi
|
|
|
|
function usage {
|
|
cat << EOF >> /dev/stderr
|
|
Usage: sudo ./standup.sh [create|destroy] [etcd]
|
|
|
|
This is a script for standing up test databases. It uses systemd to daemonize
|
|
rkt containers running on a local loopback IP.
|
|
|
|
The general workflow is to create a daemonized container, use the output to set
|
|
the test environment variables, run the tests, then destroy the container.
|
|
|
|
sudo ./standup.sh create etcd
|
|
# Copy environment variables and run tests.
|
|
go test -v -i # always install test dependencies
|
|
go test -v
|
|
sudo ./standup.sh destroy etcd
|
|
|
|
EOF
|
|
exit 2
|
|
}
|
|
|
|
function main {
|
|
if [ "$#" -ne 2 ]; then
|
|
usage
|
|
exit 2
|
|
fi
|
|
|
|
case "$1" in
|
|
"create")
|
|
case "$2" in
|
|
"etcd")
|
|
create_etcd;;
|
|
*)
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|
|
;;
|
|
"destroy")
|
|
case "$2" in
|
|
"etcd")
|
|
destroy_etcd;;
|
|
*)
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
usage
|
|
exit 2
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function wait_for_file {
|
|
while [ ! -f $1 ]; do
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
function wait_for_container {
|
|
while [ -z "$( rkt list --full | grep $1 | grep running )" ]; do
|
|
sleep 1
|
|
done
|
|
}
|
|
|
|
function create_etcd {
|
|
UUID_FILE=/tmp/dex-etcd-uuid
|
|
if [ -f $UUID_FILE ]; then
|
|
echo "etcd database already exists, try ./standup.sh destroy etcd"
|
|
exit 2
|
|
fi
|
|
|
|
echo "Starting etcd . To view progress run:"
|
|
echo ""
|
|
echo " journalctl -fu dex-etcd"
|
|
echo ""
|
|
UNIFIED_CGROUP_HIERARCHY=no \
|
|
systemd-run --unit=dex-etcd \
|
|
rkt run --uuid-file-save=$UUID_FILE --insecure-options=image \
|
|
--net=host \
|
|
docker://quay.io/coreos/etcd:v3.2.9
|
|
|
|
wait_for_file $UUID_FILE
|
|
|
|
UUID=$( cat $UUID_FILE )
|
|
wait_for_container $UUID
|
|
echo "To run tests export the following environment variables:"
|
|
echo ""
|
|
echo " export DEX_ETCD_ENDPOINTS=http://localhost:2379"
|
|
echo ""
|
|
}
|
|
|
|
function destroy_etcd {
|
|
UUID_FILE=/tmp/dex-etcd-uuid
|
|
systemctl stop dex-etcd
|
|
rkt rm --uuid-file=$UUID_FILE
|
|
rm $UUID_FILE
|
|
}
|
|
|
|
|
|
main $@
|