Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 1 | #!/bin/bash |
Fatih Degirmenci | f5e2b33 | 2019-10-02 07:38:02 +0200 | [diff] [blame] | 2 | set -o errexit |
| 3 | set -o nounset |
| 4 | set -o pipefail |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 5 | |
| 6 | cd $WORKSPACE |
| 7 | |
| 8 | # install dependencies |
Fatih Degirmenci | 346bfa8 | 2019-10-01 20:13:47 +0200 | [diff] [blame] | 9 | sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse" > /dev/null |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 10 | sudo apt install -y virtualenv jq > /dev/null |
| 11 | /bin/rm -rf $NOLABS_VENV && mkdir -p $NOLABS_VENV |
| 12 | virtualenv -p python3 $NOLABS_VENV > /dev/null |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 13 | set +u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 14 | source $NOLABS_VENV/bin/activate > /dev/null |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 15 | set -u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 16 | pip install httpie > /dev/null |
| 17 | |
| 18 | # check if the booking is cancelled or not |
Fatih Degirmenci | c4e4549 | 2019-10-01 18:30:27 +0200 | [diff] [blame] | 19 | echo "API Request: http --ignore-stdin GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.status_text'" |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 20 | BOOKING_STATUS=$(http --ignore-stdin GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.status_text') |
| 21 | if [[ $BOOKING_STATUS != 'new' ]]; then |
| 22 | echo "Info: Booking is either cancelled or not valid! Exiting!" |
| 23 | exit 0; |
| 24 | fi |
| 25 | |
| 26 | # get authentication token |
Fatih Degirmenci | c4e4549 | 2019-10-01 18:30:27 +0200 | [diff] [blame] | 27 | echo "API Request: http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth dummy@dummy.com:dummy | jq -r '.token'" |
| 28 | NOLABS_TOKEN=$(http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth $NOLABS_API_USERNAME:$NOLABS_API_PASSWORD | jq -r '.token') |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 29 | echo "API Request: http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \"status_text=deploying\" \"Authorization:Bearer DUMMY_TOKEN\"" |
| 30 | http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID "status_text=deploying" \ |
Fatih Degirmenci | 02ae5ec | 2019-10-01 19:14:56 +0200 | [diff] [blame] | 31 | "Authorization:Bearer $NOLABS_TOKEN" |
Fatih Degirmenci | c4e4549 | 2019-10-01 18:30:27 +0200 | [diff] [blame] | 32 | |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 33 | # get ssh public key of the user |
| 34 | echo "API Request: http GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.user_id'" |
| 35 | NOLABS_USER_ID=$(http GET $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID | jq -r '.user_id') |
| 36 | echo "API Request: http --ignore-stdin GET $NOLABS_API_USERS_ENDPOINT/$NOLABS_USER_ID \"Authorization:Bearer DUMMY_TOKEN\" | jq -r '.ssh_public_key'" |
| 37 | http --ignore-stdin GET $NOLABS_API_USERS_ENDPOINT/$NOLABS_USER_ID "Authorization:Bearer $NOLABS_TOKEN" | jq -r '.ssh_public_key' > $NOLABS_USER_SSHPUBKEY |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 38 | |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 39 | set +u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 40 | deactivate |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 41 | set -u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 42 | # get the specific patch |
| 43 | cd $WORKSPACE |
| 44 | git fetch "https://gerrit.nordix.org/infra/engine" $GERRIT_REFSPEC && git checkout FETCH_HEAD |
| 45 | |
| 46 | export STACK_NAME="nordix-nolabs-booking${BOOKING_ID}-${DEPLOY_SCENARIO}" |
| 47 | echo "Info: STACK_NAME is set to $STACK_NAME" |
| 48 | cd engine |
| 49 | ./deploy.sh -c -r heat -u /tmp/openrc -s $DEPLOY_SCENARIO -e "$HEAT_ENVIRONMENT_FILE" |
| 50 | |
| 51 | cd $WORKSPACE |
| 52 | |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 53 | set +u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 54 | source $NOLABS_VENV/bin/activate > /dev/null |
Fatih Degirmenci | 165f3f3 | 2019-10-02 08:14:38 +0200 | [diff] [blame] | 55 | set -u |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 56 | ENGINE_VERSION=$(git rev-parse HEAD) |
| 57 | cd $WORKSPACE/.cache/repos/swconfig |
| 58 | SCENARIO_VERSION=$(git rev-parse HEAD) |
| 59 | cd $WORKSPACE |
Fatih Degirmenci | 02ae5ec | 2019-10-01 19:14:56 +0200 | [diff] [blame] | 60 | FLOATING_IP=$(cat .cache/config/inventory.ini | grep 'jumphost ansible_host' | awk '{print $2}' | cut -d'=' -f2) |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 61 | |
| 62 | # get authentication token |
Fatih Degirmenci | d35fd4a | 2019-10-01 18:37:32 +0200 | [diff] [blame] | 63 | echo "API Request: http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth dummy@dummy.com:dummy | jq -r '.token'" |
| 64 | NOLABS_TOKEN=$(http --ignore-stdin POST $NOLABS_API_TOKENS_ENDPOINT --auth $NOLABS_API_USERNAME:$NOLABS_API_PASSWORD | jq -r '.token') |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 65 | |
| 66 | # update booking |
| 67 | echo "API Request: http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \ |
Fatih Degirmenci | 02ae5ec | 2019-10-01 19:14:56 +0200 | [diff] [blame] | 68 | \"Authorization:Bearer DUMMY_TOKEN\" \ |
| 69 | status_text=active \ |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 70 | floating_ip=$FLOATING_IP \ |
| 71 | heat_stack_name=$STACK_NAME \ |
| 72 | scenario_deploy_log_url=${BUILD_URL}consoleFull \ |
| 73 | engine_version=$ENGINE_VERSION \ |
| 74 | scenario_version=$SCENARIO_VERSION" |
| 75 | http --ignore-stdin PUT $NOLABS_API_BOOKINGS_ENDPOINT/$BOOKING_ID \ |
Fatih Degirmenci | 02ae5ec | 2019-10-01 19:14:56 +0200 | [diff] [blame] | 76 | "Authorization:Bearer $NOLABS_TOKEN" \ |
| 77 | status_text=active \ |
Fatih Degirmenci | e921738 | 2019-10-01 16:41:46 +0200 | [diff] [blame] | 78 | floating_ip=$FLOATING_IP \ |
| 79 | heat_stack_name=$STACK_NAME \ |
| 80 | scenario_deploy_log_url=${BUILD_URL}consoleFull \ |
| 81 | engine_version=$ENGINE_VERSION \ |
| 82 | scenario_version=$SCENARIO_VERSION |