-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvm-logs.sh
More file actions
executable file
·99 lines (88 loc) · 2.61 KB
/
vm-logs.sh
File metadata and controls
executable file
·99 lines (88 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env bash
# Helper script to view VM agent logs
# Usage: ./vm-logs.sh <vmi-name> [follow|status]
set -euo pipefail
NAMESPACE="${NAMESPACE:-openshift-cnv}"
SSH_USER="${SSH_USER:-cloud-user}"
VMI_NAME="${1:-}"
ACTION="${2:-tail}"
# Function to list available VMs
list_vms() {
echo "Available VMs in namespace $NAMESPACE:"
kubectl get vmi -n "$NAMESPACE" --no-headers 2>/dev/null | awk '{print " - " $1}' || echo " (none found or unable to connect to cluster)"
}
# Show usage
show_usage() {
echo "Usage: $0 <vmi-name> [follow|status|tail|all|flags]"
echo ""
echo "Examples:"
echo " $0 rhel9-1 # Show last 50 lines"
echo " $0 rhel9-1 follow # Follow logs in real-time"
echo " $0 rhel9-1 status # Show service status"
echo " $0 rhel9-1 all # Show all logs"
echo " $0 rhel9-1 flags # Show available agent flags"
echo ""
list_vms
}
if [ -z "$VMI_NAME" ]; then
show_usage
exit 1
fi
# Catch common mistake: using action keyword as VM name
case "$VMI_NAME" in
follow|f|status|s|tail|t|all|a)
echo "ERROR: '$VMI_NAME' looks like an action, not a VM name!"
echo ""
show_usage
exit 1
;;
esac
# Validate that the VM exists
if ! kubectl get vmi "$VMI_NAME" -n "$NAMESPACE" &>/dev/null; then
echo "ERROR: Virtual machine instance '$VMI_NAME' not found in namespace '$NAMESPACE'"
echo ""
list_vms
exit 1
fi
SSH_OPTS=(
--namespace "$NAMESPACE"
--local-ssh-opts="-o StrictHostKeyChecking=no"
--local-ssh-opts="-o UserKnownHostsFile=/dev/null"
)
case "$ACTION" in
follow|f)
echo "Following logs for vm-agent on $VMI_NAME (Ctrl+C to stop)..."
echo ""
virtctl ssh "${SSH_OPTS[@]}" \
--command "sudo journalctl -u vm-agent.service -f --no-pager" \
"${SSH_USER}@vmi/${VMI_NAME}"
;;
status|s)
echo "Service status for vm-agent on $VMI_NAME:"
echo ""
virtctl ssh "${SSH_OPTS[@]}" \
--command "sudo systemctl status vm-agent.service --no-pager" \
"${SSH_USER}@vmi/${VMI_NAME}"
;;
all|a)
echo "All logs for vm-agent on $VMI_NAME:"
echo ""
virtctl ssh "${SSH_OPTS[@]}" \
--command "sudo journalctl -u vm-agent.service --no-pager" \
"${SSH_USER}@vmi/${VMI_NAME}"
;;
tail|t|*)
echo "Last 50 lines of logs for vm-agent on $VMI_NAME:"
echo ""
virtctl ssh "${SSH_OPTS[@]}" \
--command "sudo journalctl -u vm-agent.service -n 50 --no-pager" \
"${SSH_USER}@vmi/${VMI_NAME}"
;;
help-flags|flags)
echo "Checking available vm-agent command-line flags:"
echo ""
virtctl ssh "${SSH_OPTS[@]}" \
--command "~/vm-agent-amd64 --help 2>&1 || ~/vm-agent-amd64 -h 2>&1 || echo 'No help output available'" \
"${SSH_USER}@vmi/${VMI_NAME}"
;;
esac