#!/bin/bash

source logging.sh
source config.sh

YAML_FILE="./pods.yaml"

wait_for_pod() {
    local pod_name=$1

    # Ensure curl is present
    kubectl exec -n "$NAMESPACE" "$pod_name" -- bash -c "
        until command -v curl > /dev/null 2>&1; do
            echo '$pod_name: waiting for curl installation...'
            sleep 2
        done
    "
    
    # Ensure the local python server is responding
    kubectl exec -n "$NAMESPACE" "$pod_name" -- bash -c "
        until curl --silent localhost:8080 > /dev/null 2>&1; do 
            echo '$pod_name: waiting for http.server on 8080...' 
            sleep 5 
        done
        echo '$pod_name: Service is up!'"
}

create_pods() {
    log "Creating pods using $YAML_FILE."
    
    kubectl apply -f "$YAML_FILE" -n "$NAMESPACE"
    kubectl wait --for=condition=ready pod --all -n "$NAMESPACE" --timeout=600s
    kubectl get pods -o wide -n "$NAMESPACE"

    for pod_name in "${POD_NAMES[@]}"; do
        wait_for_pod "$pod_name"
    done

    log "Pods created and services are ready."
}

delete_pods() {
    log "Deleting Pods defined in $YAML_FILE (namespace: $NAMESPACE)"
    kubectl delete -f "$YAML_FILE" -n "$NAMESPACE" --ignore-not-found
    log "Cleanup of Pod complete."
}

usage() {
    echo "Usage: $0 {create|delete}"
    exit 1
}

if [ $# -eq 0 ]; then
    usage
fi

case "$1" in
    create)
        create_pods
        ;;
    delete)
        delete_pods
        ;;
    *)
        usage
        ;;
esac