Merge "JUnit test case coverage for Condition.java, JsonLock.java, MusicLockState...
[music.git] / distribution / cassandra / docker-entrypoint.sh
1 #!/bin/bash
2 set -e
3
4 # first arg is `-f` or `--some-option`
5 # or there are no args
6 if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
7         set -- cassandra -f "$@"
8 fi
9
10 # allow the container to be started with `--user`
11 if [ "$1" = 'cassandra' -a "$(id -u)" = '0' ]; then
12         chown -R cassandra /var/lib/cassandra /var/log/cassandra "$CASSANDRA_CONFIG"
13         exec gosu cassandra "$BASH_SOURCE" "$@"
14 fi
15
16 _ip_address() {
17     # scrape the first non-localhost IP address of the container
18     # in Swarm Mode, we often get two IPs -- the container IP, and the (shared) VIP, and the container IP should always be first
19     ip address | awk '
20         $1 == "inet" && $NF != "lo" {
21             gsub(/\/.+$/, "", $2)
22             print $2
23             exit
24         }
25     '
26 }
27
28 if [ "$1" = 'cassandra' ]; then
29     : ${CASSANDRA_RPC_ADDRESS='0.0.0.0'}
30
31     : ${CASSANDRA_LISTEN_ADDRESS='auto'}
32     if [ "$CASSANDRA_LISTEN_ADDRESS" = 'auto' ]; then
33         CASSANDRA_LISTEN_ADDRESS="$(_ip_address)"
34     fi
35
36 echo "#############################################"
37 echo "############## Update music.cql #############"
38 echo "#############################################"
39
40     if [ "$CASSANDRA_BROADCAST_ADDRESS" = 'auto' ]; then
41         CASSANDRA_BROADCAST_ADDRESS="$(_ip_address)"
42     fi
43     if [ "${MUSIC_REPLICATION_FACTOR}" ]; then
44         sed -ri 's/REPLICATION_FACTOR/'${MUSIC_REPLICATION_FACTOR}'/' "$f"
45     fi
46 done
47
48 echo "#############################################"
49 echo "############## Update music.cql #############"
50 echo "#############################################"
51
52 for f in /docker-entrypoint-initdb.d/a_music.cql; do
53     if [ "${MUSIC_REPLICATION_CLASS}" ]; then
54         sed -ri 's/REPLICATION_CLASS/'${MUSIC_REPLICATION_CLASS}'/' "$f"
55     fi
56     if [ "${MUSIC_REPLICATION_FACTOR}" ]; then
57         sed -ri 's/REPLICATION_FACTOR/'${MUSIC_REPLICATION_FACTOR}'/' "$f"
58     fi
59 done
60
61 echo "#############################################"
62 echo "######Updating username and password  #######"
63 echo "#############################################"
64 for f in /docker-entrypoint-initdb.d/b_pw.cql; do
65     if [ "${CASSUSER}" ]; then
66         sed -ri 's/CASSUSER/'${CASSUSER}'/' "$f"
67     fi
68     if [ "${CASSPASS}" ]; then
69         sed -ri 's/CASSPASS/'${CASSPASS}'/' "$f"
70     fi
71 done
72
73 echo "#############################################"
74 echo "############## Let run cql's ################"
75 echo "#############################################"
76 for f in /docker-entrypoint-initdb.d/*; do
77     case "$f" in
78         *zzz*.cql)
79             echo "$0: running $f" && until $AM && cqlsh -u ${CASSUSER} -p ${CASSPASS} -f "$f"; 
80             do >&2 echo "Cassandra is unavailable - sleeping [${f}] $C";let C=C+1; sleep 5; done & ;;
81         *a_music.cql)
82             echo "$0: running $f" && until $PW && cqlsh -u ${CASSUSER} -p ${CASSPASS} -f "$f" && AM=true; 
83             do >&2 echo "Cassandra is unavailable - sleeping [${f}] $D";let D=D+1; sleep 5; done & ;;
84         *b_pw.cql)
85             echo "$0: running $f" && until cqlsh -u cassandra -p cassandra -f "$f" && PW=true;
86             do >&2 echo "Cassandra is unavailable - sleeping [${f}] $E";let E=E+1; sleep 5; done & ;;
87         *)        echo "$0: ignoring $f" ;;
88     esac
89
90     echo
91 done
92
93
94 echo "#############################################"
95 echo "########### Running Password CQL ############"
96 echo "#############################################"
97
98 #echo "$0: running $f" && 
99 #until cqlsh -u cassandra -p cassandra -f /pw.cql; 
100 #do >&2 echo "Cassandra is unavailable - sleeping"; sleep 10; done
101
102 echo "#############################################"
103 echo "########### Cassandra Running ###############"
104 echo "#############################################"
105
106
107 exec "$@"