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