mirror of
https://github.com/trailofbits/buttercup
synced 2026-06-21 14:11:39 +00:00
95875b4ec5
Apply automated fixes from shellcheck and shfmt to all shell scripts: - Quote variables to prevent word splitting and globbing - Use $(...) instead of backticks for command substitution - Add proper shebang and set -euo pipefail where missing - Fix array handling and iteration patterns - Consistent indentation (4 spaces) - Remove unnecessary curly braces and simplify expressions Files fixed: - deployment/*.sh - scripts/*.sh - orchestrator/scripts/*.sh - fuzzer_runner/runner.sh - protoc.sh Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
67 lines
2.4 KiB
Bash
Executable File
67 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Create timestamped directory
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
RUN_DIR="run_data_${TIMESTAMP}"
|
|
mkdir -p "${RUN_DIR}"
|
|
cd "${RUN_DIR}" || exit 1
|
|
|
|
echo "Collecting all data post-run"
|
|
# Get cluster info
|
|
echo "Current Kubernetes context:"
|
|
kubectl config current-context
|
|
|
|
echo -e "\nCluster nodes:"
|
|
kubectl get nodes
|
|
|
|
echo -e "\nNamespaces:"
|
|
kubectl get namespaces
|
|
|
|
echo -e "\nPods in crs namespace:"
|
|
kubectl get pods -n crs
|
|
|
|
# Ask for confirmation
|
|
read -r -p "Is this the correct cluster to collect run data from? (y/N) " confirm
|
|
if [[ $confirm != [yY] ]]; then
|
|
echo "Aborting data collection"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Collecting data from redis"
|
|
kubectl exec -n crs -it buttercup-redis-master-0 -- redis-cli save
|
|
kubectl cp -n crs buttercup-redis-master-0:/data/dump.rdb ./redis-backup.rdb
|
|
|
|
echo "Collecting data from postgres"
|
|
kubectl exec -n crs -it buttercup-postgresql-0 -- env PGPASSWORD="litellm_password11" pg_dump -U litellm_user litellm -f /tmp/litellm_backup.sql
|
|
kubectl cp -n crs buttercup-postgresql-0:/tmp/litellm_backup.sql ./litellm_backup.sql
|
|
|
|
echo "Collecting logs from pods"
|
|
../collect-logs.sh
|
|
|
|
echo "Saving tasks_storage"
|
|
SCHEDULER_POD=$(kubectl get pod -n crs -l app=scheduler -o jsonpath='{.items[0].metadata.name}')
|
|
kubectl exec -n crs -it "$SCHEDULER_POD" -- tar -cf /tmp/tasks_storage.tar /tasks_storage
|
|
kubectl cp -n crs "$SCHEDULER_POD:/tmp/tasks_storage.tar" ./tasks_storage.tar
|
|
|
|
echo "Saving crs_scratch"
|
|
SCHEDULER_POD=$(kubectl get pod -n crs -l app=scheduler -o jsonpath='{.items[0].metadata.name}')
|
|
kubectl exec -n crs -it "$SCHEDULER_POD" -- tar -cf /tmp/crs_scratch.tar --exclude=*.tgz /crs_scratch
|
|
kubectl cp -n crs "$SCHEDULER_POD:/tmp/crs_scratch.tar" ./crs_scratch.tar
|
|
|
|
echo "Saving node_local_storage"
|
|
for node in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do
|
|
echo "Saving node_local_storage for node: $node"
|
|
# Find a pod running on this node
|
|
pod=$(kubectl get pods -n crs -o jsonpath="{.items[?(@.spec.nodeName=='$node')].metadata.name}" -l app=scratch-cleaner | cut -d' ' -f1)
|
|
if [ -n "$pod" ]; then
|
|
echo "Using pod $pod on node $node"
|
|
kubectl exec -n crs -it "$pod" -- tar -zcf /tmp/node_local_storage.tar.gz --exclude-tag-all=task_meta.json /node_data
|
|
kubectl cp -n crs "$pod:/tmp/node_local_storage.tar.gz" "./node_local_storage_${node}.tar.gz"
|
|
else
|
|
echo "No pod found running on node $node, skipping"
|
|
fi
|
|
done
|
|
|
|
|
|
echo "All data collected in directory: ${RUN_DIR}"
|