Missing Licenses
[aaf/authz.git] / auth / auth-cass / cass_init / cmd.sh
index 056faed..98194e0 100644 (file)
@@ -1,25 +1,93 @@
 #!/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
+
 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
-      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
-      echo "Initializing Cassandra DB" 
-      if [ "`/usr/bin/cqlsh -e 'describe keyspaces' | grep authz`" == "" ]; then
+    if [ ! -e $INSTALLED_VERSION ] && [ -n "$(/usr/bin/cqlsh -e 'describe keyspaces' | grep authz)" ]; then
+      /usr/bin/cqlsh -e 'DROP KEYSPACE authz' 
+    fi
+    if [ -z "`/usr/bin/cqlsh -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 ""
@@ -27,63 +95,60 @@ function install_cql {
         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
+        echo "casablanca" > $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
+      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"
     /usr/local/bin/docker-entrypoint.sh 
   ;;
-  onap)
-       install_cql
-
-       # Change date expiring dat files to more recent
-       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
+  wait)
+    # Wait for initialization.  This can be called from Docker only as a check to make sure it is ready
+    wait_ready 
 
-           # Change UserRole
-            mv dats/user_role.dat tmp
-            sed "s/\(^.*|\)\(.*|\)\(.*|\)\(.*\)/\1${DATE}|\3\4/" tmp > dats/user_role.dat
+  ;;
+  onap)
+    cd /opt/app/aaf/cass_init
+    # start install_onap (which calls install_cql first) in background, waiting for process to start
+    install_onap &
 
-           # Remove ID File, which is marker for initializing Creds
-            rm $ID_FILE
-        fi
-       bash push.sh
+    # Startup like normal
+    echo "Cassandra Startup"
+    /usr/local/bin/docker-entrypoint.sh 
   ;;
 esac