summaryrefslogtreecommitdiffstats
path: root/auth/auth-cass/cass_init/cmd.sh
blob: d1e7051588c9669309ab37c0e7dea22f96a1d322 (plain)
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
#!/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