Skip to content
Snippets Groups Projects
test-dashboard.sh 1.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Radosław Piliszek's avatar
    Radosław Piliszek committed
    #!/bin/bash
    
    set -o xtrace
    set -o errexit
    
    export PYTHONUNBUFFERED=1
    
    
    function check_dashboard {
        # Query the dashboard, and check that the returned page looks like a login
        # page.
        DASHBOARD_URL=${OS_AUTH_URL%:*}
        output_path=$1
    
    generalfuzz's avatar
    generalfuzz committed
        args=(
            --include
            --location
            --fail
        )
        if [[ "$TLS_ENABLED" = "True" ]]; then
            args+=(--cacert $OS_CACERT)
        fi
        if ! curl "${args[@]}" $DASHBOARD_URL > $output_path; then
    
    Radosław Piliszek's avatar
    Radosław Piliszek committed
            return 1
        fi
        if ! grep Login $output_path >/dev/null; then
            return 1
        fi
    }
    
    function test_dashboard_logged {
        . /etc/kolla/admin-openrc.sh
    
        echo "TESTING: Dashboard"
        # The dashboard has been known to take some time to become accessible, so
        # use retries.
        output_path=$(mktemp)
        attempt=1
        while ! check_dashboard $output_path; do
            echo "Dashboard not accessible yet"
            attempt=$((attempt+1))
            if [[ $attempt -eq 30 ]]; then
                echo "FAILED: Dashboard did not become accessible. Response:"
                cat $output_path
                return 1
            fi
            sleep 10
        done
        echo "SUCCESS: Dashboard"
    }
    
    function test_dashboard {
        echo "Testing dashboard"
        log_file=/tmp/logs/ansible/test-dashboard
        if [[ -f $log_file ]]; then
            log_file=${log_file}-upgrade
        fi
        test_dashboard_logged > $log_file 2>&1
        result=$?
        if [[ $result != 0 ]]; then
            echo "Testing dashboard failed. See ansible/test-dashboard for details"
        else
            echo "Successfully tested dashboard. See ansible/test-dashboard for details"
        fi
        return $result
    }
    
    
    test_dashboard