Change AAF Certservice CSITs to send requests via HTTPS
[integration/csit.git] / plans / aaf / certservice / setup.sh
1 #!/bin/bash
2 #
3 # Copyright 2020 Nokia.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17
18 # ------------------------------------
19 # Resolve path to script's directory and cmp servers configuration
20
21 SCRIPT=`realpath $0`
22 CURRENT_WORKDIR_PATH=`dirname $SCRIPT`
23 PROJECT_DIRECTORY="plans/aaf/certservice"
24
25 SCRIPTS_DIRECTORY="scripts"
26
27 JENKINS_SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/$PROJECT_DIRECTORY/$SCRIPTS_DIRECTORY"
28 LOCAL_SCRIPTS_PATH="$CURRENT_WORKDIR_PATH/$SCRIPTS_DIRECTORY"
29
30 # ------------------------------------
31 #Prepare enviroment for client
32 #install docker sdk
33 echo "Uninstall docker-py and reinstall docker."
34 pip uninstall -y docker-py
35 pip uninstall -y docker
36 pip install -U docker==2.7.0
37
38 #reinstall pyopenssl library
39 echo "Reinstall pyopenssl library."
40 pip uninstall pyopenssl -y
41 pip install pyopenssl==17.5.0
42
43 #Disable proxy - for local run
44 unset http_proxy https_proxy
45
46 #export container name
47 export ClientContainerName=CertServiceClient
48 # ------------------------------------
49
50 if test -d "$JENKINS_SCRIPTS_PATH"; then
51     SCRIPTS_PATH=$JENKINS_SCRIPTS_PATH
52 else test -f "$LOCAL_SCRIPTS_PATH";
53     SCRIPTS_PATH=$LOCAL_SCRIPTS_PATH
54 fi
55 echo "Use scripts from: $SCRIPTS_PATH"
56
57 CONFIGURATION_FILE="cmpServers.json"
58
59 JENKINS_CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/$PROJECT_DIRECTORY/$CONFIGURATION_FILE"
60 LOCAL_CONFIGURATION_PATH="$CURRENT_WORKDIR_PATH/$CONFIGURATION_FILE"
61
62 if test -f "$JENKINS_CONFIGURATION_PATH"; then
63     CONFIGURATION_PATH="$JENKINS_CONFIGURATION_PATH"
64 else test -f "$LOCAL_CONFIGURATION_PATH";
65     CONFIGURATION_PATH=$LOCAL_CONFIGURATION_PATH
66 fi
67 echo "Use configuration from: $CONFIGURATION_PATH"
68
69 # -------------------------------------
70
71 export CONFIGURATION_PATH=${CONFIGURATION_PATH}
72 export SCRIPTS_PATH=${SCRIPTS_PATH}
73
74 #Generate keystores, truststores, certificates and keys
75 mkdir -p ${WORKSPACE}/tests/aaf/certservice/assets/certs/
76 make all -C ./certs/
77 cp ${WORKSPACE}/plans/aaf/certservice/certs/root.crt ${WORKSPACE}/tests/aaf/certservice/assets/certs/root.crt
78 echo "Generated keystores"
79 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
80 echo "Generated server certificate"
81 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
82 echo "Generated server key"
83
84 docker-compose up -d
85
86 AAFCERT_IP='none'
87 # Wait container ready
88 for i in {1..9}
89 do
90    AAFCERT_IP=`get-instance-ip.sh aafcert-service`
91    RESP_CODE=$(curl -s https://localhost:8443/actuator/health --cacert ./certs/root.crt --cert-type p12 --cert ./certs/certServiceServer-keystore.p12 --pass secret | \
92    python2 -c 'import json,sys;obj=json.load(sys.stdin);print obj["status"]')
93    if [[ "$RESP_CODE" == "UP" ]]; then
94        echo 'AAF Cert Service is ready'
95        export AAFCERT_IP=${AAFCERT_IP}
96        docker exec aafcert-ejbca /opt/primekey/scripts/ejbca-configuration.sh
97        break
98    fi
99    echo 'Waiting for AAF Cert Service to start up...'
100    sleep 30s
101 done
102
103 if [ "$AAFCERT_IP" == 'none' -o "$AAFCERT_IP" == '' ]; then
104     echo "AAF Cert Service is not ready!"
105     exit 1 # Return error code
106 fi