Change to 2.1.5
[aaf/authz.git] / auth / auth-cass / cass_init / cmd.sh
1 #!/bin/bash 
2 #
3 # Engage normal Cass Init, then check for data installation
4 #
5 DIR="/opt/app/aaf/status"
6
7 if [ ! -e /aaf_cmd ]; then
8   ln -s /opt/app/aaf/cass_init/cmd.sh /aaf_cmd
9   chmod u+x /aaf_cmd
10 fi
11
12 # Always need startup status...
13 if [ ! -e "$DIR" ]; then
14   mkdir -p "$DIR"
15 fi
16
17 function status {
18      echo "$@"
19      echo "$@" > $DIR/aaf_cass
20 }
21
22 function wait_start {
23     sleep 10
24     status wait for cassandra to start
25     for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
26       if [ -z "$(grep 'listening for CQL clients' /var/log/cassandra/system.log)" ]; then
27         echo "Waiting for Cassandra to start... Sleep 10"
28         sleep 10
29       else
30          break
31       fi
32     done
33 }
34
35
36 function wait_cql {
37    status wait for keyspace to be initialized
38    for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
39      if [ -n "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)"  ]; then
40         break
41      else
42         echo "Waiting for Keyspaces to be loaded... Sleep 10"
43         sleep 10
44       fi
45     done
46 }
47
48 function wait_ready {
49    status wait for cassandra to be fully ready
50    for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
51        STATUS="$(cat $DIR/aaf_cass)"
52        if [ "$STATUS" = "ready" ]; then
53         break
54      else
55         echo "Waiting for Start, $STATUS... Sleep 10"
56         sleep 10
57       fi
58     done
59 }
60
61 function install_cql {
62     wait_start started   
63     # Now, make sure data exists
64     if [ "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)" = "" ]; then
65       status install 
66       echo "Initializing Cassandra DB" 
67       if [ "`/usr/bin/cqlsh -e 'describe keyspaces' | grep authz`" == "" ]; then
68         echo "Docker Installed Basic Cassandra on aaf_cass.  Executing the following "
69         echo "NOTE: This creator provided is only a Single Instance. For more complex Cassandra, create independently"
70         echo ""
71         echo " cd /opt/app/aaf/cass_init"
72         cd /opt/app/aaf/cass_init
73         echo " cqlsh -f keyspace.cql"
74         /usr/bin/cqlsh -f keyspace.cql
75         status keyspace installed
76         echo " cqlsh -f init.cql"
77         /usr/bin/cqlsh -f init.cql
78         status data initialized
79         echo ""
80         echo "The following will give you a temporary identity with which to start working, or emergency"
81         echo " cqlsh -f temp_identity.cql"
82       fi
83     fi
84     status $1
85 }
86
87 function install_onap {
88     echo " cd /opt/app/aaf/cass_init"
89     cd /opt/app/aaf/cass_init
90     install_cql initialized
91     status prep data for bootstrapping
92     bash prep.sh
93     status push data to cassandra
94     bash push.sh
95     cd -
96     status ready
97 }
98
99 case "$1" in
100   start)
101     # start install_cql in background, waiting for process to start
102     install_cql ready &
103
104     # Startup like normal
105     echo "Cassandra Startup"
106     /usr/local/bin/docker-entrypoint.sh 
107   ;;
108   wait)
109     # Wait for initialization.  This can be called from Docker only as a check to make sure it is ready
110     wait_ready 
111
112   ;;
113   onap)
114     # start install_onap (which calls install_cql first) in background, waiting for process to start
115     install_onap &
116
117     # Startup like normal
118     echo "Cassandra Startup"
119     /usr/local/bin/docker-entrypoint.sh 
120   ;;
121 esac
122