Move AAF Poms to 2.1.16
[aaf/authz.git] / auth / docker / agent.sh
index aa3db66..575e21f 100644 (file)
@@ -1,21 +1,71 @@
 #!/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====================================================
+#
 
-CADI_VERSION=2.1.2-SNAPSHOT
 
 # Fill out "aaf.props" if not filled out already
 if [ ! -e aaf.props ]; then
   > ./aaf.props
 fi
-for V in VERSION AAF_FQDN DEPLOY_FQI APP_FQDN APP_FQI VOLUME DRIVER LATITUDE LONGITUDE; do
+. ./aaf.props
+
+DOCKER=${DOCKER:=docker}
+CADI_VERSION=${CADI_VERSION:=2.1.16}
+
+for V in VERSION DOCKER_REPOSITORY HOSTNAME CONTAINER_NS AAF_FQDN AAF_FQDN_IP DEPLOY_FQI APP_FQDN APP_FQI VOLUME DRIVER LATITUDE LONGITUDE; do
    if [ "$(grep $V ./aaf.props)" = "" ]; then
       unset DEF
       case $V in
+        DOCKER_REPOSITORY) 
+               PROMPT="Docker Repo"
+               DEF="nexus3.onap.org:10003"
+               ;;
+        HOSTNAME) 
+               PROMPT="HOSTNAME (blank for Default)"
+               DEF=""
+               ;;
          AAF_FQDN)   PROMPT="AAF's FQDN";;
          DEPLOY_FQI) PROMPT="Deployer's FQI";;
-         APP_FQI)    PROMPT="App's FQI";; 
-         APP_FQDN)   PROMPT="App's Root FQDN";; 
-         VOLUME)     PROMPT="APP's AAF Configuration Volume";;
+         AAF_FQDN_IP)
+               # Need AAF_FQDN's IP, because not might not be available in mini-container
+               PROMPT="AAF FQDN IP"
+               LOOKUP=$(host "${AAF_FQDN}" | grep "has address")
+               if [ -n "${LOOKUP}" ]; then
+                   DEF=$(echo ${LOOKUP} | tail -1 | cut -f 4 -d ' ')
+                fi
+                ;;
+         APP_FQDN)   PROMPT="App's Root FQDN";;
+         APP_FQI)    PROMPT="App's FQI"
+                    if [[ "${APP_FQDN}" != *"."* ]]; then
+                      DEF="${APP_FQDN}@${APP_FQDN}.onap.org"
+                     fi
+                    ;; 
+         VOLUME)     PROMPT="APP's AAF Configuration Volume"
+                    if [[ "${APP_FQDN}" != *"."* ]]; then
+                      DEF="${APP_FQDN}_config"
+                    fi
+                ;;
          DRIVER)     PROMPT=$V;DEF=local;;
+         CONTAINER_NS)     
+                     PROMPT=$V;DEF=onap;;
         VERSION)    PROMPT="CADI Version";DEF=$CADI_VERSION;;
          LATITUDE|LONGITUDE) PROMPT="$V of Node";;
          *)          PROMPT=$V;;
@@ -28,37 +78,40 @@ for V in VERSION AAF_FQDN DEPLOY_FQI APP_FQDN APP_FQI VOLUME DRIVER LATITUDE LON
       read -p "$PROMPT" VAR 
       if [ "$VAR" = "" ]; then
          if [ "$DEF" = "" ]; then
-            echo "agent.sh needs each value queried.  Please start again."
-            exit
+            if [ "$V" != "HOSTNAME" ]; then
+              echo "agent.sh needs each value queried.  Please start again."
+              exit
+            fi
          else
             VAR=$DEF
          fi
       fi
       echo "$V=$VAR" >> ./aaf.props
+      declare "$V"="$VAR"
    fi
 done
 . ./aaf.props
 
-# Need AAF_FQDN's IP, because not might not be available in mini-container
-if [ "$AAF_AAF_FQDN_IP" = "" ]; then
-  AAF_AAF_FQDN_IP=$(host $AAF_FQDN | grep "has address" | tail -1 | cut -f 4 -d ' ')
-  if [ "$AAF_AAF_FQDN_IP" = "" ]; then
-    read -p "IP of $AAF_FQDN: " AAF_AAF_FQDN_IP
-    echo "AAF_AAF_FQDN_IP=$AAF_AAF_FQDN_IP" >> ./aaf.props
-  fi
-fi
-
 # Make sure Container Volume exists
-if [ "$(docker volume ls | grep ${VOLUME})" = "" ]; then
+if [ "$($DOCKER volume ls | grep ${VOLUME})" = "" ]; then
   echo -n "Creating Volume: " 
-  docker volume create -d ${DRIVER} ${VOLUME}
+  $DOCKER volume create -d ${DRIVER} ${VOLUME}
 fi
 
-docker run \
-    -it \
-    --rm \
-    --mount 'type=volume,src='${VOLUME}',dst=/opt/app/osaaf,volume-driver='${DRIVER} \
-    --add-host="$AAF_FQDN:$AAF_AAF_FQDN_IP" \
+if [ -n "$DOCKER_REPOSITORY" ]; then
+  PREFIX="$DOCKER_REPOSITORY/"
+else
+  PREFIX=""
+fi 
+
+function run_it() {
+  if [ -n "${DUSER}" ]; then
+    USER_LINE="--user ${DUSER}"
+  fi
+  $DOCKER run  -it  --rm \
+    ${USER_LINE} \
+    -v "${VOLUME}:/opt/app/osaaf" \
+    --add-host="$AAF_FQDN:$AAF_FQDN_IP" \
     --env AAF_FQDN=${AAF_FQDN} \
     --env DEPLOY_FQI=${DEPLOY_FQI} \
     --env DEPLOY_PASSWORD=${DEPLOY_PASSWORD} \
@@ -66,6 +119,82 @@ docker run \
     --env APP_FQDN=${APP_FQDN} \
     --env LATITUDE=${LATITUDE} \
     --env LONGITUDE=${LONGITUDE} \
-    --name aaf_agent_$USER \
-    onap/aaf/aaf_agent:$VERSION \
-    /bin/bash "$@"
+    --env aaf_locator_container_ns=${CONTAINER_NS} \
+    --env aaf_locator_container=docker \
+    --link aaf-service --link aaf-locate --link aaf-oauth --link aaf-cm \
+    --name aaf-agent-$USER \
+    "$PREFIX"onap/aaf/aaf_agent:$VERSION \
+    bash -c "bash /opt/app/aaf_config/bin/agent.sh $PARAMS"
+}
+
+function sso {
+  if [ -n "$2" ]; then
+    echo "$1=$2" >> $HOME/.aaf/sso.props
+  fi
+}
+
+function reset_sso {
+    mkdir -p ~/.aaf
+    > $HOME/.aaf/sso.props
+    sso aaf_locate_url "https://$AAF_FQDN:8095"
+    sso cadi_latitude "$LATITUDE"
+    sso cadi_longitude "$LONGITUDE"
+    sso cadi_loglevel "DEBUG"
+    TRUSTSTORE="$(ls truststore*.jks | tail -1)"
+    if [ -z "$TRUSTSTORE" ]; then
+      echo "Place a truststore*.jar which has YOUR CA in it here"
+      exit
+    fi
+    sso cadi_truststore "${PWD}/${TRUSTSTORE}"
+    sso cadi_truststore_password changeit
+}
+
+PARAMS=$@
+case "$1" in 
+  bash)
+    PARAMS="&& cd /opt/app/osaaf/local && exec bash"
+    run_it -it --rm  
+    ;;
+  taillog)
+    run_it -it --rm 
+    ;;
+  aafcli) 
+    shift
+    reset_sso
+    if [ -f aaf-cadi-aaf-$VERSION-full.jar ]; then
+      java -Dcadi_prop_files="$HOME/.aaf/sso.props" -jar aaf-cadi-aaf-$VERSION-full.jar $@
+    else 
+      echo "For local use, you need to have 'aaf-cadi-aaf-$VERSION-full.jar' (or newer)"
+    fi
+    ;;
+  local) 
+    shift
+    CMD="$1"
+    if [ -z "$2" ]; then 
+       CMD="$CMD $APP_FQI $APP_FQDN"
+    else 
+      if [ "-" = "$2" ]; then
+         CMD="$CMD $APP_FQI"
+      else
+         CMD="$CMD $2"
+      fi
+      if [ "-" = "$3" ]; then
+         CMD="$CMD $APP_FQDN"
+      else
+         CMD="$CMD $3"
+      fi
+    fi
+    reset_sso
+    sso aaf_id "$DEPLOY_FQI"
+    sso aaf_password "$DEPLOY_PASSWORD"
+    if [ -f aaf-cadi-aaf-$VERSION-full.jar ]; then
+      java -Dcadi_prop_files="$HOME/.aaf/sso.props" -cp aaf-cadi-aaf-$VERSION-full.jar org.onap.aaf.cadi.configure.Agent $CMD 
+    else 
+      echo "For local use, you need to have 'aaf-cadi-aaf-$VERSION-full.jar' (or newer)"
+    fi
+    ;;
+  *)
+    run_it --rm 
+    ;;
+esac
+