#!/bin/bash
# OpenStack Setup Helper Script
# This script helps configure OpenStack credentials for the MyAIDev Method

set -e

echo "================================"
echo "OpenStack Configuration Helper"
echo "================================"
echo ""

# Check if OpenStack CLI is installed
if ! command -v openstack &> /dev/null; then
    echo "OpenStack CLI is not installed."
    echo ""
    echo "To install on Ubuntu/Debian:"
    echo "  sudo apt update"
    echo "  sudo apt install python3-openstackclient"
    echo ""
    echo "To install with pip:"
    echo "  pip install python-openstackclient"
    echo ""
    echo "After installation, re-run this script."
    exit 1
fi

echo "OpenStack CLI found: $(which openstack)"
echo "Version: $(openstack --version 2>&1)"
echo ""

# Check for openrc file
OPENRC_FILE="${1:-openrc}"

if [ -f "$OPENRC_FILE" ]; then
    echo "Found openrc file: $OPENRC_FILE"
    echo ""
    echo "Parsing environment variables..."

    # Parse the openrc file (without executing it for security)
    OS_AUTH_URL=$(grep -E "^export OS_AUTH_URL=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'")
    OS_USERNAME=$(grep -E "^export OS_USERNAME=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'")
    OS_PROJECT_ID=$(grep -E "^export OS_PROJECT_ID=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'")
    OS_USER_DOMAIN_ID=$(grep -E "^export OS_USER_DOMAIN_ID=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'" || echo "default")
    OS_PROJECT_DOMAIN_ID=$(grep -E "^export OS_PROJECT_DOMAIN_ID=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'" || echo "default")
    OS_REGION_NAME=$(grep -E "^export OS_REGION_NAME=" "$OPENRC_FILE" | cut -d'=' -f2- | tr -d '"' | tr -d "'")

    echo "Detected configuration:"
    echo "  Auth URL: $OS_AUTH_URL"
    echo "  Username: $OS_USERNAME"
    echo "  Project ID: $OS_PROJECT_ID"
    echo "  User Domain: ${OS_USER_DOMAIN_ID:-default}"
    echo "  Project Domain: ${OS_PROJECT_DOMAIN_ID:-default}"
    echo "  Region: $OS_REGION_NAME"
    echo ""

    # Check if .env exists
    ENV_FILE=".env"
    if [ -f "$ENV_FILE" ]; then
        echo "Existing .env file found. Will append OpenStack variables."
    fi

    echo "Enter your OpenStack password:"
    read -sr OS_PASSWORD
    echo ""

    # Write to .env file
    {
        echo ""
        echo "# OpenStack Configuration"
        echo "OS_AUTH_URL=$OS_AUTH_URL"
        echo "OS_USERNAME=$OS_USERNAME"
        echo "OS_PASSWORD=$OS_PASSWORD"
        echo "OS_PROJECT_ID=$OS_PROJECT_ID"
        echo "OS_USER_DOMAIN_ID=${OS_USER_DOMAIN_ID:-default}"
        echo "OS_PROJECT_DOMAIN_ID=${OS_PROJECT_DOMAIN_ID:-default}"
        echo "OS_REGION_NAME=$OS_REGION_NAME"
        echo "OS_IDENTITY_API_VERSION=3"
    } >> "$ENV_FILE"

    echo "Configuration written to $ENV_FILE"
    echo ""

    # Test the connection
    echo "Testing OpenStack connection..."
    source "$OPENRC_FILE"
    export OS_PASSWORD

    if openstack token issue &> /dev/null; then
        echo "Connection successful!"
    else
        echo "Connection failed. Please verify your credentials."
        exit 1
    fi

else
    echo "No openrc file found at: $OPENRC_FILE"
    echo ""
    echo "Usage: $0 [path/to/openrc]"
    echo ""
    echo "You can download your openrc file from your OpenStack dashboard:"
    echo "  1. Log in to your OpenStack dashboard"
    echo "  2. Go to Project > API Access"
    echo "  3. Click 'Download OpenStack RC File'"
    echo ""
fi

echo ""
echo "================================"
echo "Setup Complete"
echo "================================"
