#!/bin/bash
set -e

usage() {
    echo "Usage: $0 <s3-bucket-name> <s3-region> --mount-point <mount-point> [options]"
    echo "Example: $0 my-bucket us-east-1 --mount-point /media/lucidlink --access-key AKIAXXXXXXXX --secret-key xxxxxxxx"
    echo ""
    echo "Required arguments:"
    echo "  <s3-bucket-name>    Name of the S3 bucket"
    echo "  <s3-region>         AWS region (e.g., us-east-1)"
    echo "  --mount-point       LucidLink filespace mount point"
    echo ""
    echo "Optional arguments:"
    echo "  --access-key        AWS access key ID"
    echo "  --secret-key        AWS secret access key"
    exit 1
}

# Check for minimum required arguments
if [ $# -lt 4 ]; then
    usage
fi

S3_BUCKET=$1
S3_REGION=$2
shift 2

# Parse optional arguments
while [ $# -gt 0 ]; do
    case "$1" in
        --mount-point)
            MOUNT_POINT="$2"
            shift 2
            ;;
        --access-key)
            AWS_ACCESS_KEY="$2"
            shift 2
            ;;
        --secret-key)
            AWS_SECRET_KEY="$2"
            shift 2
            ;;
        *)
            echo "Unknown option: $1"
            usage
            ;;
    esac
done

# Check required mount-point
if [ -z "$MOUNT_POINT" ]; then
    echo "Error: --mount-point is required"
    usage
fi

EXTRA_VARS="s3_bucket=$S3_BUCKET s3_region=$S3_REGION mount_point=$MOUNT_POINT"

# Add AWS credentials to extra vars if provided
if [ ! -z "$AWS_ACCESS_KEY" ] && [ ! -z "$AWS_SECRET_KEY" ]; then
    EXTRA_VARS="$EXTRA_VARS aws_access_key=$AWS_ACCESS_KEY aws_secret_key=$AWS_SECRET_KEY"
fi

echo "Installing Ansible..."
sudo apt update
sudo apt install -y ansible

echo "Running Fluent-bit setup playbook..."
ansible-playbook -i localhost, --connection=local \
    --extra-vars "$EXTRA_VARS" \
    fluent-bit-setup.yml

echo "Verifying Fluent-bit service status..."
systemctl status fluent-bit-s3

echo "Setup complete. Check the service status above."
