diff options
Diffstat (limited to 'auth/auth-cass')
21 files changed, 283 insertions, 135 deletions
diff --git a/auth/auth-cass/src/main/cql/.gitignore b/auth/auth-cass/cass_init/.gitignore index ce22752c..ce22752c 100644 --- a/auth/auth-cass/src/main/cql/.gitignore +++ b/auth/auth-cass/cass_init/.gitignore diff --git a/auth/auth-cass/src/main/cql/build.sh b/auth/auth-cass/cass_init/build.sh index caa07494..caa07494 100644 --- a/auth/auth-cass/src/main/cql/build.sh +++ b/auth/auth-cass/cass_init/build.sh diff --git a/auth/auth-cass/cass_init/cmd.sh b/auth/auth-cass/cass_init/cmd.sh new file mode 100644 index 00000000..056faed7 --- /dev/null +++ b/auth/auth-cass/cass_init/cmd.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# +# Engage normal Cass Init, then check for data installation +# +if [ ! -e /aaf_cmd ]; then + ln -s /opt/app/aaf/cass_init/cmd.sh /aaf_cmd + chmod u+x /aaf_cmd +fi + +function install_cql { + # 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 + 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 + echo " cqlsh -f init.cql" + /usr/bin/cqlsh -f init.cql + 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 +} + +case "$1" in + start) + # 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 + + # Change UserRole + 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 + bash push.sh + ;; +esac + diff --git a/auth/auth-cass/src/main/cql/config.dat b/auth/auth-cass/cass_init/config.dat index 7eba23e1..0e705b92 100644 --- a/auth/auth-cass/src/main/cql/config.dat +++ b/auth/auth-cass/cass_init/config.dat @@ -1,6 +1,5 @@ aaf|aaf_env|DEV
-aaf|aaf_locate_url|https://meriadoc.mithril.sbc.com:8095
-aaf|cadi_x509_issuers|CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US
+aaf|cadi_x509_issuers|CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
aaf|aaf_oauth2_introspect_url|https://AAF_LOCATE_URL/AAF_NS.introspect:2.1/introspect
aaf|aaf_oauth2_token_url|https://AAF_LOCATE_URL/AAF_NS.token:2.1/token
aaf|aaf_url|https://AAF_LOCATE_URL/AAF_NS.service:2.1
diff --git a/auth/auth-cass/cass_init/data.sh b/auth/auth-cass/cass_init/data.sh new file mode 100644 index 00000000..0374e619 --- /dev/null +++ b/auth/auth-cass/cass_init/data.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# +# Copies of Repo data need to be added to "dats" dir for loading by push.sh +# +# Further, repo data has dates that are out of date. We need to update reasonable +# expiration dates +# + +DIR=/opt/app/aaf/cass_init +cd $DIR/dats +ID_FILE=$DIR/opt/app/aaf/cass_init/ + + if [ -e $ID_FILE ]; then + if [ "$(uname -s)" = "Darwin" ]; then + DATE=$(date "+%Y-%m-%d %H:%M:%S.000+0000" -v "+6m") + else + DATE=$(date "+%Y-%m-%d %H:%M:%S.000+0000" -d "+6 months") + fi + echo $DATE + CRED="cred.dat" + # Enter for People + echo "Default Passwords for People" + 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 + + 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 + + mv user_role.dat tmp + sed "s/\(^.*|\)\(.*|\)\(.*|\)\(.*\)/\1${DATE}|\3\4/" tmp > user_role.dat + + for DAT in ns perm role ns_attrib user_role cred; do + $DOCKER container cp $DAT.dat aaf_cass:/tmp/$DAT.dat + $DOCKER exec aaf_cass bash /usr/bin/cqlsh -k authz -e "COPY authz.$DAT FROM '/tmp/$DAT.dat' WITH DELIMITER='|'" + $DOCKER exec -t aaf_cass rm /tmp/$DAT.dat + done + rm $CRED + mv tmp user_role.dat + else + echo DInstall requires access to 'identities.dat' + fi + cd - + diff --git a/auth/auth-cass/cass_init/extract.sh b/auth/auth-cass/cass_init/extract.sh new file mode 100644 index 00000000..cdebbc8d --- /dev/null +++ b/auth/auth-cass/cass_init/extract.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cd /opt/app/cass_init +if [ -e dat.gz ]; then + tar -xvf dat.gz +else + echo "No data files" +fi diff --git a/auth/auth-cass/src/main/cql/init.cql b/auth/auth-cass/cass_init/init.cql index bf75998d..bf75998d 100644 --- a/auth/auth-cass/src/main/cql/init.cql +++ b/auth/auth-cass/cass_init/init.cql diff --git a/auth/auth-cass/src/main/cql/init2_1.cql b/auth/auth-cass/cass_init/init2_1.cql index 701dd774..701dd774 100644 --- a/auth/auth-cass/src/main/cql/init2_1.cql +++ b/auth/auth-cass/cass_init/init2_1.cql diff --git a/auth/auth-cass/src/main/cql/keyspace.cql b/auth/auth-cass/cass_init/keyspace.cql index 52dc5ea7..52dc5ea7 100644 --- a/auth/auth-cass/src/main/cql/keyspace.cql +++ b/auth/auth-cass/cass_init/keyspace.cql diff --git a/auth/auth-cass/src/main/cql/osaaf.cql b/auth/auth-cass/cass_init/osaaf.cql index 51e6b908..51e6b908 100644 --- a/auth/auth-cass/src/main/cql/osaaf.cql +++ b/auth/auth-cass/cass_init/osaaf.cql diff --git a/auth/auth-cass/cass_init/pull.sh b/auth/auth-cass/cass_init/pull.sh new file mode 100644 index 00000000..94695ed1 --- /dev/null +++ b/auth/auth-cass/cass_init/pull.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# +# Pull data from Cassandra into ".dat" files, and "gzip" them +# +DIR=/opt/app/aaf/cass_init +cd $DIR +mkdir -p dats +cd dats +TABLES="$(cqlsh -e "use authz; describe tables")" +for T in $TABLES ; do + cqlsh -e "use authz; COPY $T TO '$T.dat' WITH DELIMITER='|';" +done +cd $DIR +tar -cvzf dat.gz dats/*.dat +rm -Rf dats + diff --git a/auth/auth-cass/cass_init/push.sh b/auth/auth-cass/cass_init/push.sh new file mode 100644 index 00000000..48521699 --- /dev/null +++ b/auth/auth-cass/cass_init/push.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Push data from Cassandra ".dat" files +# These are obtained from "gzipped" files, or pre-placed (i.e. initialization) +# in the "dats" directory +# +DIR=/opt/app/aaf/cass_init +cd $DIR +if [ ! -e dats ]; then + if [ -e dat.gz ]; then + tar -xvf dat.gz + else + echo "No Data to push for Cassandra" + exit + fi +fi +cd dats +for T in $(ls *.dat); do + if [ -s $T ]; then + cqlsh -e "use authz; COPY ${T%.dat} FROM '$T' WITH DELIMITER='|';" + fi +done +cd $DIR +#rm -Rf dats diff --git a/auth/auth-cass/src/main/cql/temp_identity.cql b/auth/auth-cass/cass_init/temp_identity.cql index 3032372b..3032372b 100644 --- a/auth/auth-cass/src/main/cql/temp_identity.cql +++ b/auth/auth-cass/cass_init/temp_identity.cql diff --git a/auth/auth-cass/docker/Dockerfile.cass b/auth/auth-cass/docker/Dockerfile.cass new file mode 100644 index 00000000..1f2b2b13 --- /dev/null +++ b/auth/auth-cass/docker/Dockerfile.cass @@ -0,0 +1,17 @@ +FROM nexus3.onap.org:10001/cassandra:3.11 +MAINTAINER AAF Team, AT&T 2018 +ENV VERSION=${AAF_VERSION} + +LABEL description="aaf_cass" +LABEL version=${AAF_VERSION} + +COPY cass_init/*.cql /opt/app/aaf/cass_init/ +COPY cass_init/*.sh /opt/app/aaf/cass_init/ +COPY cass_init/*.dat /opt/app/aaf/cass_init/ +COPY cass_data /opt/app/aaf/cass_init/dats/ +COPY sample.identities.dat /opt/app/aaf/cass_init/ + +ENTRYPOINT ["/bin/bash","/opt/app/aaf/cass_init/cmd.sh"] +CMD ["start"] +# Default is to start up like normal + diff --git a/auth/auth-cass/docker/cbackup.sh b/auth/auth-cass/docker/cbackup.sh deleted file mode 100644 index 9c91d0c6..00000000 --- a/auth/auth-cass/docker/cbackup.sh +++ /dev/null @@ -1,8 +0,0 @@ -cd /opt/app/cass_backup -DATA="ns role perm ns_attrib user_role cred cert x509 delegate approval approved future notify artifact health history" -PWD=cassandra -CQLSH="cqlsh -u cassandra -k authz -p $PWD" -for T in $DATA ; do - echo "Creating $T.dat" - $CQLSH -e "COPY authz.$T TO '$T.dat' WITH DELIMITER='|'" -done diff --git a/auth/auth-cass/docker/dbuild.sh b/auth/auth-cass/docker/dbuild.sh new file mode 100644 index 00000000..df58144d --- /dev/null +++ b/auth/auth-cass/docker/dbuild.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Build AAF Cass Docker Script +# +# Pull in AAF Env Variables from AAF install +if [ -e ../../docker/d.props ]; then + . ../../docker/d.props +else + . ../../docker/d.props.init +fi + +echo "Building Container for aaf_cass:$VERSION" + +DIR=$(pwd) +cd .. +sed -e 's/${AAF_VERSION}/'${VERSION}'/g' $DIR/Dockerfile.cass > Dockerfile +cd .. +cp -Rf sample/cass_data auth-cass/cass_data +cp sample/data/sample.identities.dat auth-cass + +docker build -t ${ORG}/${PROJECT}/aaf_cass:${VERSION} auth-cass +cd - +rm Dockerfile +rm -Rf cass_data +rm sample.identities.dat +cd $DIR + diff --git a/auth/auth-cass/docker/dcqlsh.sh b/auth/auth-cass/docker/dcqlsh.sh new file mode 100644 index 00000000..a6c08643 --- /dev/null +++ b/auth/auth-cass/docker/dcqlsh.sh @@ -0,0 +1,3 @@ +#!/bin/bash +docker exec -it aaf_cass /usr/bin/cqlsh -k authz + diff --git a/auth/auth-cass/docker/dinstall.sh b/auth/auth-cass/docker/dinstall.sh index 6d7f949e..045d5f2f 100644 --- a/auth/auth-cass/docker/dinstall.sh +++ b/auth/auth-cass/docker/dinstall.sh @@ -1,111 +1,7 @@ #!/bin/bash -if [ -e /usr/bin/docker ]; then - DOCKER=/usr/bin/docker -elif [ -e /usr/local/bin/docker ]; then - DOCKER=/usr/local/bin/docker -else - echo Docker not available in /usr/bin or /usr/local/bin - exit -fi -if [ "$($DOCKER volume ls | grep aaf_cass_data)" = "" ]; then - $DOCKER volume create aaf_cass_data - echo "Created Cassandra Volume aaf_cass_data" -fi +. drun.sh -echo "Running DInstall" -if [ "`$DOCKER ps -a | grep aaf_cass`" == "" ]; then - echo "starting Cass from 'run'" - # NOTE: These HEAP Sizes are minimal. Not set for full organizations. - $DOCKER run \ - --name aaf_cass \ - -e HEAP_NEWSIZE=512M \ - -e MAX_HEAP_SIZE=1024M \ - -e CASSANDRA_DC=dc1 \ - -e CASSANDRA_CLUSTER_NAME=osaaf \ - --mount 'type=volume,src=aaf_cass_data,dst=/var/lib/cassandra,volume-driver=local' \ - -d cassandra:3.11 - # Set on local Disk - # -v /opt/app/cass:/var/lib/cassandra - echo "aaf_cass Starting" - for CNT in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do - if [ "`$DOCKER container logs aaf_cass | grep 'listening for CQL clients'`" == "" ]; then - echo "Sleep 10" - sleep 10 - else - break - fi - done - - echo "Running Phase 2 DInstall" - $DOCKER container ps - - echo "Creating /opt/app/cass_init dir on aaf_cass" - $DOCKER exec aaf_cass mkdir -p /opt/app/cass_init - echo "cp the following files to /opt/app/cass_init dir on aaf_cass" - $DOCKER cp "../src/main/cql/." aaf_cass:/opt/app/cass_init - echo "The following files are on /opt/app/cass_init dir on aaf_cass" - $DOCKER exec aaf_cass ls /opt/app/cass_init - - if [ "`$DOCKER exec aaf_cass /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/cass_init" - echo " cqlsh -f keyspace.cql" - echo " cqlsh -f init.cql" - echo "" - echo "The following will give you a temporary identity with which to start working, or emergency" - echo " cqlsh -f temp_identity.cql" - echo "Create Keyspaces and Tables" - $DOCKER exec aaf_cass bash /usr/bin/cqlsh -f /opt/app/cass_init/keyspace.cql - $DOCKER exec aaf_cass bash /usr/bin/cqlsh -e 'describe keyspaces' - $DOCKER exec aaf_cass bash /usr/bin/cqlsh -f /opt/app/cass_init/init.cql - cd ../../sample/cass_data - ID_FILE=../data/identities.dat - if [ -e $ID_FILE ]; then - DATE=$(date "+%Y-%m-%d %H:%M:%S.000+0000" -d "+6 months") - echo $DATE - CRED="cred.dat" - # Enter for People - echo "Default Passwords for People" - 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 - - 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 - - mv user_role.dat tmp - sed "s/\(^.*|\)\(.*|\)\(.*|\)\(.*\)/\1${DATE}|\3\4/" tmp > user_role.dat +echo $DOCKER +docker exec -it aaf_cass bash aaf_cmd onap - for DAT in ns perm role ns_attrib user_role cred; do - $DOCKER container cp $DAT.dat aaf_cass:/tmp/$DAT.dat - $DOCKER exec aaf_cass bash /usr/bin/cqlsh -k authz -e "COPY authz.$DAT FROM '/tmp/$DAT.dat' WITH DELIMITER='|'" - $DOCKER exec -t aaf_cass rm /tmp/$DAT.dat - done - rm $CRED - mv tmp user_role.dat - else - echo DInstall requires access to 'identities.dat' - fi - cd - - fi -else - $DOCKER start aaf_cass -fi diff --git a/auth/auth-cass/docker/drun.sh b/auth/auth-cass/docker/drun.sh new file mode 100644 index 00000000..4f2499c7 --- /dev/null +++ b/auth/auth-cass/docker/drun.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Pull in AAF Env Variables from AAF install +if [ -e ../../docker/d.props ]; then + . ../../docker/d.props +else + . ../../docker/d.props.init +fi + +if [ -e /usr/bin/docker ]; then + DOCKER=/usr/bin/docker +elif [ -e /usr/local/bin/docker ]; then + DOCKER=/usr/local/bin/docker +else + echo Docker not available in /usr/bin or /usr/local/bin + exit +fi + +if [ "$($DOCKER volume ls | grep aaf_cass_data)" = "" ]; then + $DOCKER volume create aaf_cass_data + echo "Created Cassandra Volume aaf_cass_data" +fi + +if [ "`$DOCKER ps -a | grep aaf_cass`" == "" ]; then + echo "starting Cass from 'run'" + # NOTE: These HEAP Sizes are minimal. Not set for full organizations. + $DOCKER run \ + --name aaf_cass \ + -e HEAP_NEWSIZE=512M \ + -e MAX_HEAP_SIZE=1024M \ + -e CASSANDRA_DC=dc1 \ + -e CASSANDRA_CLUSTER_NAME=osaaf \ + --mount 'type=volume,src=aaf_cass_data,dst=/var/lib/cassandra,volume-driver=local' \ + -d ${ORG}/${PROJECT}/aaf_cass:${VERSION} +else + $DOCKER start aaf_cass +fi diff --git a/auth/auth-cass/src/main/cql/pull.sh b/auth/auth-cass/src/main/cql/pull.sh deleted file mode 100644 index 01fa52bf..00000000 --- a/auth/auth-cass/src/main/cql/pull.sh +++ /dev/null @@ -1,10 +0,0 @@ -mkdir -p dats -cd dats -for T in ns ns_attrib cred user_role perm role config artifact ; do - cqlsh -e "use authz; COPY $T TO '$T.dat' WITH DELIMITER='|';" -done -tar -cvzf ../dat.gz *.dat -rm *.dat -cd - -rmdir dats - diff --git a/auth/auth-cass/src/main/cql/push.sh b/auth/auth-cass/src/main/cql/push.sh deleted file mode 100644 index 330326d5..00000000 --- a/auth/auth-cass/src/main/cql/push.sh +++ /dev/null @@ -1,8 +0,0 @@ -mkdir -p dats -cd dats -tar -xvf ../dat.gz -for T in $(ls *.dat); do - cqlsh -e "use authz; COPY ${T%.dat} FROM '$T' WITH DELIMITER='|';" -done -cd - -rm -Rf dats |