diff options
Diffstat (limited to 'auth/auth-cass/cass_init/cmd.sh')
-rw-r--r-- | auth/auth-cass/cass_init/cmd.sh | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/auth/auth-cass/cass_init/cmd.sh b/auth/auth-cass/cass_init/cmd.sh new file mode 100644 index 00000000..d1e70515 --- /dev/null +++ b/auth/auth-cass/cass_init/cmd.sh @@ -0,0 +1,158 @@ +#!/bin/bash +# +# Engage normal Cass Init, then check for data installation +# +DIR="/opt/app/aaf/status" + +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" +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 + 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 "$(/usr/bin/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 started + # Now, make sure data exists + if [ "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)" = "" ]; then + status install + echo "Initializing Cassandra DB" + if [ "`/usr/bin/cqlsh -e 'describe keyspaces' | grep authz`" == "" ]; then + 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" + /usr/bin/cqlsh -f keyspace.cql + status keyspace installed + echo " cqlsh -f init.cql" + /usr/bin/cqlsh -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" + fi + fi + status $1 +} + +function install_onap { + install_cql initialized + + # Change date expiring dat files to more recent + status Creating ONAP Identities + ID_FILE=/opt/app/aaf/cass_init/sample.identities.dat + if [ -e $ID_FILE ]; then + DATE=$(date "+%Y-%m-%d %H:%M:%S.000+0000" -d "+6 months") + echo $DATE + CRED="/opt/app/aaf/cass_init/dats/cred.dat" + # Enter for People + echo "Default Passwords for Apps" + for ID in $(grep '|a|' $ID_FILE | sed -e "s/|.*//"); do + if [ "$ID" = "aaf" ]; then + DOMAIN="aaf.osaaf.org"; + else + DOMAIN="$ID.onap.org"; + fi + unset FIRST + for D in ${DOMAIN//./ }; do + if [ -z "$FIRST" ]; then + NS="$D" + FIRST="N" + else + NS="$D.$NS" + fi + done + echo "$ID@$DOMAIN|2|${DATE}|0xd993c5617486296f1b99d04de31633332b8ba1a550038e23860f9dbf0b2fcf95|Initial ID|$NS|53344|" >> $CRED + done + + # Enter for People + for ID in $(grep '|e|' $ID_FILE | sed -e "s/|.*//"); do + echo "$ID@people.osaaf.org|2|${DATE}|0xd993c5617486296f1b99d04de31633332b8ba1a550038e23860f9dbf0b2fcf95|Initial ID|org.osaaf.people|53344|" >> $CRED + done + + # Change UserRole + status Setting up User Roles + mv dats/user_role.dat tmp + sed "s/\(^.*|\)\(.*|\)\(.*|\)\(.*\)/\1${DATE}|\3\4/" tmp > dats/user_role.dat + + # Remove ID File, which is marker for initializing Creds + rm $ID_FILE + fi + status Pushing data to cassandra + bash push.sh + 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" + /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) + # start install_onap (which calls install_cql first) in background, waiting for process to start + install_onap & + + # Startup like normal + echo "Cassandra Startup" + /usr/local/bin/docker-entrypoint.sh + ;; +esac + |