#!/bin/bash

# begin variables
OVS_BRIDGE_NAME="ovs-br0"
# end variables


generate_env_file() {
    local ENV_FILE="bridge.env"
    echo "Generating environment file: $ENV_FILE"
    
    cat <<EOF > "$ENV_FILE"
# Generated environment variables for OVS Bridge
OVS_BRIDGE_NAME="$OVS_BRIDGE_NAME"
EOF
    echo "File '$ENV_FILE' created successfully."
}

# begin install_ovs
install_ovs() {
    if ! command -v ovs-vsctl &> /dev/null; then
        echo "Open vSwitch not found. Installing on Ubuntu..."
        sudo apt-get update
        sudo apt-get install -y openvswitch-switch
        sudo systemctl enable --now openvswitch-switch
    fi
}
# end install_ovs

# begin create_ovs_bridge
create_ovs_bridge() {
    echo "Creating OVS bridge $OVS_BRIDGE_NAME."
    sudo ovs-vsctl --may-exist add-br ${OVS_BRIDGE_NAME}
    sudo ip link set ${OVS_BRIDGE_NAME} up
}
# end create_ovs_bridge

# begin delete
delete() {
    echo "Cleaning up environment."
    sudo ovs-vsctl --if-exists del-br "$OVS_BRIDGE_NAME"
    
    # Remove the .env file
    rm -f "${OVS_BRIDGE_NAME}.env"
    echo "Bridge and .env file removed."
}
# end delete

usage() {
    echo "Usage: $0 {setup|test|teardown}"
    exit 1
}

case "$1" in
    setup)
        install_ovs
        create_ovs_bridge
        generate_env_file
        ;;
    delete)
        delete
        ;;
    *)
        usage
        ;;
esac