Change AAF Certservice CSITs to send requests via HTTPS
[integration/csit.git] / plans / aaf / certservice / setup.sh
index 4911e47..b23b719 100644 (file)
 #
 
 # ------------------------------------
-# Resolve path to script's folder and cmp servers configuration
+# Resolve path to script's directory and cmp servers configuration
 
 SCRIPT=`realpath $0`
 CURRENT_WORKDIR_PATH=`dirname $SCRIPT`
+PROJECT_DIRECTORY="plans/aaf/certservice"
 
 SCRIPTS_DIRECTORY="scripts"
-if test -d "$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$SCRIPTS_DIRECTORY"; then
-    SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$SCRIPTS_DIRECTORY"
-else test -f "$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY";
-    SCRIPTS_PATH=$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY
+
+JENKINS_SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/$PROJECT_DIRECTORY/$SCRIPTS_DIRECTORY"
+LOCAL_SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY"
+
+# ------------------------------------
+#Prepare enviroment for client
+#install docker sdk
+echo "Uninstall docker-py and reinstall docker."
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+
+#reinstall pyopenssl library
+echo "Reinstall pyopenssl library."
+pip uninstall pyopenssl -y
+pip install pyopenssl==17.5.0
+
+#Disable proxy - for local run
+unset http_proxy https_proxy
+
+#export container name
+export ClientContainerName=CertServiceClient
+# ------------------------------------
+
+if test -d "$JENKINS_SCRIPTS_PATH"; then
+    SCRIPTS_PATH=$JENKINS_SCRIPTS_PATH
+else test -f "$LOCAL_SCRIPTS_PATH";
+    SCRIPTS_PATH=$LOCAL_SCRIPTS_PATH
 fi
 echo "Use scripts from: $SCRIPTS_PATH"
 
 CONFIGURATION_FILE="cmpServers.json"
-if test -f "$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$CONFIGURATION_FILE"; then
-    CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/plans/aaf/certservice/$CONFIGURATION_FILE"
-else test -f "$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE";
-    CONFIGURATION_PATH=$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE
+
+JENKINS_CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/$PROJECT_DIRECTORY/$CONFIGURATION_FILE"
+LOCAL_CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE"
+
+if test -f "$JENKINS_CONFIGURATION_PATH"; then
+    CONFIGURATION_PATH="$JENKINS_CONFIGURATION_PATH"
+else test -f "$LOCAL_CONFIGURATION_PATH";
+    CONFIGURATION_PATH=$LOCAL_CONFIGURATION_PATH
 fi
 echo "Use configuration from: $CONFIGURATION_PATH"
 
@@ -42,11 +71,36 @@ echo "Use configuration from: $CONFIGURATION_PATH"
 export CONFIGURATION_PATH=${CONFIGURATION_PATH}
 export SCRIPTS_PATH=${SCRIPTS_PATH}
 
-docker-compose up -d
+#Generate keystores, truststores, certificates and keys
+mkdir -p ${WORKSPACE}/tests/aaf/certservice/assets/certs/
+make all -C ./certs/
+cp ${WORKSPACE}/plans/aaf/certservice/certs/root.crt ${WORKSPACE}/tests/aaf/certservice/assets/certs/root.crt
+echo "Generated keystores"
+openssl pkcs12 -in ${WORKSPACE}/plans/aaf/certservice/certs/certServiceServer-keystore.p12 -clcerts -nokeys -password pass:secret | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${WORKSPACE}/tests/aaf/certservice/assets/certs/certServiceServer.crt
+echo "Generated server certificate"
+openssl pkcs12 -in ${WORKSPACE}/plans/aaf/certservice/certs/certServiceServer-keystore.p12 -nocerts -nodes -password pass:secret| sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > ${WORKSPACE}/tests/aaf/certservice/assets/certs/certServiceServer.key
+echo "Generated server key"
 
-AAFCERT_IP=`get-instance-ip.sh aafcert`
-export AAFCERT_IP=${AAFCERT_IP}
+docker-compose up -d
 
+AAFCERT_IP='none'
 # Wait container ready
-sleep 10
+for i in {1..9}
+do
+   AAFCERT_IP=`get-instance-ip.sh aafcert-service`
+   RESP_CODE=$(curl -s https://localhost:8443/actuator/health --cacert ./certs/root.crt --cert-type p12 --cert ./certs/certServiceServer-keystore.p12 --pass secret | \
+   python2 -c 'import json,sys;obj=json.load(sys.stdin);print obj["status"]')
+   if [[ "$RESP_CODE" == "UP" ]]; then
+       echo 'AAF Cert Service is ready'
+       export AAFCERT_IP=${AAFCERT_IP}
+       docker exec aafcert-ejbca /opt/primekey/scripts/ejbca-configuration.sh
+       break
+   fi
+   echo 'Waiting for AAF Cert Service to start up...'
+   sleep 30s
+done
 
+if [ "$AAFCERT_IP" == 'none' -o "$AAFCERT_IP" == '' ]; then
+    echo "AAF Cert Service is not ready!"
+    exit 1 # Return error code
+fi