Refine properties for non-root
[aaf/authz.git] / auth / auth-cass / cass_init / cmd.sh
1 #!/bin/bash 
2 #########
3 #  ============LICENSE_START====================================================
4 #  org.onap.aaf
5 #  ===========================================================================
6 #  Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
7 #  ===========================================================================
8 #  Licensed under the Apache License, Version 2.0 (the "License");
9 #  you may not use this file except in compliance with the License.
10 #  You may obtain a copy of the License at
11 #
12 #       http://www.apache.org/licenses/LICENSE-2.0
13 #
14 #  Unless required by applicable law or agreed to in writing, software
15 #  distributed under the License is distributed on an "AS IS" BASIS,
16 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 #  See the License for the specific language governing permissions and
18 #  limitations under the License.
19 #  ============LICENSE_END====================================================
20 #
21 #
22 # Engage normal Cass Init, then check for data installation
23 #
24 DIR="/opt/app/aaf/status"
25 INSTALLED_VERSION=/var/lib/cassandra/AAF_VERSION
26 AAF_INIT_DATA=/var/lib/cassandra/AAF_INIT_DATA
27
28 if [ ! -e /aaf_cmd ]; then
29   ln -s /opt/app/aaf/cass_init/cmd.sh /aaf_cmd
30   chmod u+x /aaf_cmd
31 fi
32
33 # Always need startup status...
34 if [ ! -e "$DIR" ]; then
35   mkdir -p "$DIR"
36   chmod 777 $DIR
37 fi
38
39 function status {
40      echo "$@"
41      echo "$@" > $DIR/aaf-cass
42 }
43
44 function wait_start {
45     sleep 10
46     status wait for cassandra to start
47     for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
48       if [ -z "$(grep 'listening for CQL clients' /var/log/cassandra/system.log)" ]; then
49         echo "Waiting for Cassandra to start... Sleep 10"
50         sleep 10
51       else
52          break
53       fi
54     done
55 }
56
57
58 function wait_cql {
59    status wait for keyspace to be initialized
60    for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
61      if [ -n "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)"  ]; then
62         break
63      else
64         echo "Waiting for Keyspaces to be loaded... Sleep 10"
65         sleep 10
66       fi
67     done
68 }
69
70 function wait_ready {
71    status wait for cassandra to be fully ready
72    for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
73        STATUS="$(cat $DIR/aaf-cass)"
74        if [ "$STATUS" = "ready" ]; then
75         break
76      else
77         echo "Waiting for Start, $STATUS... Sleep 10"
78         sleep 10
79       fi
80     done
81 }
82
83 function install_cql {
84     wait_start started   
85     # Now, make sure data exists
86     if [ ! -e $INSTALLED_VERSION ] && [ -n "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)" ]; then
87       /usr/bin/cqlsh -e 'DROP KEYSPACE authz' 
88     fi
89     if [ -z "`/usr/bin/cqlsh -e 'describe keyspaces' | grep authz`" ]; then
90         status install 
91         echo "Initializing Cassandra DB" 
92         echo "Docker Installed Basic Cassandra on aaf.cass.  Executing the following "
93         echo "NOTE: This creator provided is only a Single Instance. For more complex Cassandra, create independently"
94         echo ""
95         echo " cd /opt/app/aaf/cass_init"
96         cd /opt/app/aaf/cass_init
97         echo " cqlsh -f keyspace.cql"
98         /usr/bin/cqlsh -f keyspace.cql
99         status keyspace installed
100         echo " cqlsh -f init.cql"
101         /usr/bin/cqlsh -f init.cql
102         status data initialized
103         echo ""
104         echo "The following will give you a temporary identity with which to start working, or emergency"
105         echo " cqlsh -f temp_identity.cql"
106         echo "casablanca" > $INSTALLED_VERSION
107     else 
108       echo "Cassandra DB already includes 'authz' keyspace"
109     fi
110     status $1
111 }
112
113 function install_onap {
114     echo " cd /opt/app/aaf/cass_init"
115     install_cql initialized
116     if [ -e "$AAF_INIT_DATA" ]; then 
117        echo "AAF Data already initialized on this Cassandra"
118     else 
119       status prep data for bootstrapping
120       cd /opt/app/aaf/cass_init
121       status prep data 
122       bash prep.sh
123       status push data to cassandra
124       bash push.sh
125       cd -
126       echo $(date) > $AAF_INIT_DATA
127     fi
128     status ready
129 }
130
131 case "$1" in
132   start)
133     # start install_cql in background, waiting for process to start
134     install_cql ready &
135
136     # Startup like normal
137     echo "Cassandra Startup"
138     exec /usr/local/bin/docker-entrypoint.sh 
139   ;;
140   wait)
141     # Wait for initialization.  This can be called from Docker only as a check to make sure it is ready
142     wait_ready 
143
144   ;;
145   onap)
146     cd /opt/app/aaf/cass_init
147     # start install_onap (which calls install_cql first) in background, waiting for process to start
148     install_onap &
149
150     # Startup like normal
151     echo "Cassandra Startup"
152     exec /usr/local/bin/docker-entrypoint.sh 
153   ;;
154 esac
155