#! /bin/bash

# This script performs initialization for switchd that needs to be done prior to
# starting switchd.

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/cumulus/bin
DESC="Cumulus LTTNG session daemon"
NAME=lttng-sessiond
DAEMON=/usr/bin/$NAME
PIDFILE=/run/$NAME.pid
SCRIPTNAME=$0

# Function to backup existing traces
backup_traces() {
    local datetime=$(date +%Y%m%d_%H%M%S)

    # Backup switchd traces
    local switchd_dir="/var/log/lttng-traces/switchd-local-onboot"
    if [[ -d "$switchd_dir" ]]; then
        cp -rf "$switchd_dir" "${switchd_dir}-${datetime}" 2>/dev/null
    fi

    # Backup FRR BGP traces
    local frr_dir="/var/log/lttng-traces/frr-local-onboot"
    if [[ -d "$frr_dir" ]]; then
        cp -rf "$frr_dir" "${frr_dir}-${datetime}" 2>/dev/null
    fi

    # Backup FRR BFD traces
    local bfd_dir="/var/log/lttng-traces/frr-local-bfd-onboot"
    if [[ -d "$bfd_dir" ]]; then
        cp -rf "$bfd_dir" "${bfd_dir}-${datetime}" 2>/dev/null
    fi

    # Backup Zebra traces
    local zebra_dir="/var/log/lttng-traces/frr-local-zebra-onboot"
    if [[ -d "$zebra_dir" ]]; then
        cp -rf "$zebra_dir" "${zebra_dir}-${datetime}" 2>/dev/null
    fi
}

# Function to start cleanup service
start_cleanup_service() {
    echo "Starting cumulus-cleanup-lttng_traces.service"
    systemctl start cumulus-cleanup-lttng_traces.service 2>/dev/null || true
}

# error out if no arguments.
case "$1" in
  start)
        echo "Initializing $DESC $NAME"
        backup_traces
        start_cleanup_service
        exec /usr/bin/lttng-sessiond --no-kernel $DAEMON_ARGS
        ;;

  *)
        echo "Usage: $SCRIPTNAME start" >&2
        exit 3
        ;;
esac

exit 0
