#!/bin/bash

USER_DIR=/home/ubuntu/cni-plugin-bash/
SYSTEM_DIR=/opt/cni/bin/
LOG_FILE=/var/log/cni/cni-plugin-bash.log

# Define the files and directories to be transferred
# Format: "source_file initial_directory final_directory"
FILES=(
  "10-cni-plugin-bash.conf ${USER_DIR} /etc/cni/net.d/"
  "cni-plugin-bash.sh ${USER_DIR} ${SYSTEM_DIR}"
  "cni-plugin-bridge.sh ${USER_DIR} ${SYSTEM_DIR}"
  "cni-plugin-ip.sh ${USER_DIR} ${SYSTEM_DIR}"
  "cni-plugin-if.sh ${USER_DIR} ${SYSTEM_DIR}"
  "cni-plugin-iptables.sh ${USER_DIR} ${SYSTEM_DIR}"
  "cni-plugin-connectivity.sh ${USER_DIR} ${SYSTEM_DIR}"
  "util-apply-pod.sh ${USER_DIR} ${SYSTEM_DIR}"
  "util-deploy-plugin.sh ${USER_DIR} ${SYSTEM_DIR}"
  "util-show-network.sh ${USER_DIR} ${SYSTEM_DIR}"
)

echo "Discovering Kubernetes nodes..."
NODE_NAMES=$(kubectl get nodes -o jsonpath='{.items[*].metadata.name}')

if [ -z "$NODE_NAMES" ]; then
  echo "No nodes found. Exiting."
  exit 1
fi

NODE_ARRAY=($NODE_NAMES)

for NODE in "${NODE_ARRAY[@]}"; do
  echo "Processing ${NODE}..."

  echo "Deleting log file ${LOG_FILE}"
  multipass exec "$NODE" -- sudo rm -rf "${LOG_FILE}"

  for FILE_ENTRY in "${FILES[@]}"; do
    IFS=' ' read -r SOURCE_FILE INITIAL_DIR FINAL_DIR <<< "$FILE_ENTRY"

    echo "Creating directory ${INITIAL_DIR} on ${NODE}"
    multipass exec "$NODE" -- sudo mkdir -p "$INITIAL_DIR"
    multipass exec "$NODE" -- sudo chown ubuntu:ubuntu "$INITIAL_DIR"

    echo "Transferring ${SOURCE_FILE} to ${NODE}:${INITIAL_DIR}"
    multipass transfer "$SOURCE_FILE" "${NODE}:${INITIAL_DIR}"

    echo "Copying ${SOURCE_FILE} from ${INITIAL_DIR} to ${FINAL_DIR} on ${NODE}"
    multipass exec "$NODE" -- sudo cp "${INITIAL_DIR}/${SOURCE_FILE}" "${FINAL_DIR}/${SOURCE_FILE}"
  done

  echo "File processing complete on ${NODE}."
done

echo "File transfer and processing complete for all nodes."

