blob: ba55648e07f4b8574624bf19918eefa92206f0f2 [file] [log] [blame]
Instrumentalbc299c02018-09-25 06:42:31 -05001#!/bin/bash
Instrumental7a1817b2018-11-05 11:11:15 -06002#########
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#
Instrumentalbc299c02018-09-25 06:42:31 -050021#
22# Engage normal Cass Init, then check for data installation
23#
Instrumental08e93402018-10-03 08:38:52 -050024DIR="/opt/app/aaf/status"
Instrumental50c23cc2018-10-31 02:40:03 -050025INSTALLED_VERSION=/var/lib/cassandra/AAF_VERSION
26AAF_INIT_DATA=/var/lib/cassandra/AAF_INIT_DATA
Instrumental08e93402018-10-03 08:38:52 -050027
Instrumentalbc299c02018-09-25 06:42:31 -050028if [ ! -e /aaf_cmd ]; then
29 ln -s /opt/app/aaf/cass_init/cmd.sh /aaf_cmd
30 chmod u+x /aaf_cmd
31fi
32
Instrumentalf0ddaf22018-10-03 22:29:23 -050033# Always need startup status...
34if [ ! -e "$DIR" ]; then
35 mkdir -p "$DIR"
Instrumental27afb022019-02-07 16:36:56 -060036 chmod 777 $DIR
Instrumentalf0ddaf22018-10-03 22:29:23 -050037fi
38
Instrumental08e93402018-10-03 08:38:52 -050039function status {
Instrumental08e93402018-10-03 08:38:52 -050040 echo "$@"
Instrumental12414fe2019-01-22 10:27:32 -060041 echo "$@" > $DIR/aaf-cass
Instrumental08e93402018-10-03 08:38:52 -050042}
43
Instrumental1e3be602018-10-03 19:40:44 -050044function wait_start {
Instrumental08e93402018-10-03 08:38:52 -050045 sleep 10
46 status wait for cassandra to start
Instrumental1e3be602018-10-03 19:40:44 -050047 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
Instrumentalf0ddaf22018-10-03 22:29:23 -050057
Instrumental1e3be602018-10-03 19:40:44 -050058function 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
Instrumental235dd9a2018-10-03 21:36:44 -050061 if [ -n "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)" ]; then
Instrumental1e3be602018-10-03 19:40:44 -050062 break
63 else
64 echo "Waiting for Keyspaces to be loaded... Sleep 10"
65 sleep 10
66 fi
67 done
68}
69
Instrumentalf0ddaf22018-10-03 22:29:23 -050070function 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
Instrumental12414fe2019-01-22 10:27:32 -060073 STATUS="$(cat $DIR/aaf-cass)"
Instrumentalf0ddaf22018-10-03 22:29:23 -050074 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
Instrumental1e3be602018-10-03 19:40:44 -050083function install_cql {
84 wait_start started
Instrumentalbc299c02018-09-25 06:42:31 -050085 # Now, make sure data exists
Instrumentale66f4282018-10-16 14:09:31 -050086 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"
Instrumental12414fe2019-01-22 10:27:32 -060092 echo "Docker Installed Basic Cassandra on aaf.cass. Executing the following "
Instrumentalbc299c02018-09-25 06:42:31 -050093 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
Instrumental08e93402018-10-03 08:38:52 -050099 status keyspace installed
Instrumentalbc299c02018-09-25 06:42:31 -0500100 echo " cqlsh -f init.cql"
101 /usr/bin/cqlsh -f init.cql
Instrumental08e93402018-10-03 08:38:52 -0500102 status data initialized
Instrumentalbc299c02018-09-25 06:42:31 -0500103 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"
Instrumental2d18d8e2018-10-16 17:37:17 -0500106 echo "casablanca" > $INSTALLED_VERSION
Instrumentale66f4282018-10-16 14:09:31 -0500107 else
108 echo "Cassandra DB already includes 'authz' keyspace"
Instrumentalbc299c02018-09-25 06:42:31 -0500109 fi
Instrumental08e93402018-10-03 08:38:52 -0500110 status $1
Instrumentalbc299c02018-09-25 06:42:31 -0500111}
112
Instrumental08e93402018-10-03 08:38:52 -0500113function install_onap {
Instrumentala9391132018-10-16 12:34:12 -0500114 echo " cd /opt/app/aaf/cass_init"
Instrumental94053612018-10-08 11:27:18 -0500115 install_cql initialized
Instrumental50c23cc2018-10-31 02:40:03 -0500116 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
Instrumental08e93402018-10-03 08:38:52 -0500128 status ready
129}
130
131case "$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"
Instrumental27afb022019-02-07 16:36:56 -0600138 exec /usr/local/bin/docker-entrypoint.sh
Instrumental08e93402018-10-03 08:38:52 -0500139 ;;
Instrumental1e3be602018-10-03 19:40:44 -0500140 wait)
141 # Wait for initialization. This can be called from Docker only as a check to make sure it is ready
Instrumentalf0ddaf22018-10-03 22:29:23 -0500142 wait_ready
Instrumental1e3be602018-10-03 19:40:44 -0500143
Instrumental1e3be602018-10-03 19:40:44 -0500144 ;;
Instrumental08e93402018-10-03 08:38:52 -0500145 onap)
Instrumentale66f4282018-10-16 14:09:31 -0500146 cd /opt/app/aaf/cass_init
Instrumental08e93402018-10-03 08:38:52 -0500147 # start install_onap (which calls install_cql first) in background, waiting for process to start
Instrumental696d9dc2018-10-24 19:45:47 -0500148 install_onap &
Instrumental08e93402018-10-03 08:38:52 -0500149
150 # Startup like normal
151 echo "Cassandra Startup"
Instrumental27afb022019-02-07 16:36:56 -0600152 exec /usr/local/bin/docker-entrypoint.sh
Instrumentalbc299c02018-09-25 06:42:31 -0500153 ;;
154esac
155