2021-12-02 17:44:04 -05:00
|
|
|
#!/bin/zsh
|
|
|
|
|
|
|
|
if [ "$#" -lt 2 ]; then
|
|
|
|
echo "Usage: $0 {rxe,siw,info,start,status,stop,off} {remote host,...}"
|
|
|
|
fi
|
|
|
|
|
2021-12-15 12:04:00 -05:00
|
|
|
rdma_ips() {
|
|
|
|
getent hosts $1 | awk '{print $1}'
|
2021-12-02 17:44:04 -05:00
|
|
|
}
|
|
|
|
|
2021-12-15 12:04:00 -05:00
|
|
|
rdma_devs() {
|
|
|
|
for ip in $(rdma_ips $1); do
|
|
|
|
ssh $1 ip addr show to $ip | awk -F': ' '{print $2}'
|
|
|
|
done
|
2021-12-02 17:44:04 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
rdma_cur() {
|
2021-12-15 12:04:00 -05:00
|
|
|
ssh $1 rdma link | awk -F '[ |/]' '{print $2}'
|
2021-12-02 17:44:04 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
rdma_start() {
|
2021-12-15 12:04:00 -05:00
|
|
|
if [ -z "$(rdma_cur $1 | grep $3)" ]; then
|
|
|
|
rdma_stop $1
|
|
|
|
devs=($(rdma_devs $1))
|
|
|
|
for i in $(seq ${#devs}); do
|
|
|
|
ssh $1 "sudo rdma link add $3$((i-1)) type $3 netdev ${devs[$i]}"
|
|
|
|
done
|
2021-12-02 17:44:04 -05:00
|
|
|
fi
|
|
|
|
rdma_status $1 $2
|
|
|
|
}
|
|
|
|
|
|
|
|
rdma_info() {
|
|
|
|
ssh $1 "sudo ibv_devinfo" 2>&1 | sed "s/^/$2 /g"
|
|
|
|
}
|
|
|
|
|
|
|
|
rdma_status() {
|
2021-12-15 12:04:00 -05:00
|
|
|
links=($(ssh $1 rdma link show))
|
|
|
|
if [ ! -z "$links" ]; then
|
|
|
|
ips=($(rdma_ips $1))
|
|
|
|
devs=($(rdma_devs $1))
|
|
|
|
for link in $links; do
|
|
|
|
dev=$(echo $link | awk '{print $NF}')
|
|
|
|
ip=${ips[${devs[(ie)$dev]}]}
|
|
|
|
echo "$2 $link ($ip)"
|
|
|
|
done
|
2021-12-02 17:44:04 -05:00
|
|
|
else
|
|
|
|
echo "$2 stopped"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
rdma_stop() {
|
2021-12-15 12:04:00 -05:00
|
|
|
for dev in $(rdma_cur $1); do
|
|
|
|
ssh $1 "sudo rdma link delete $dev"
|
|
|
|
done
|
2021-12-02 17:44:04 -05:00
|
|
|
}
|
|
|
|
|
2021-12-15 12:04:00 -05:00
|
|
|
IFS=$'\n'
|
2021-12-02 17:44:04 -05:00
|
|
|
tags=($(python /home/anna/bin/colors/vm.py ${@:2}))
|
|
|
|
for vm in "${@:2}"; do
|
|
|
|
index=${@[(ie)$vm]}
|
|
|
|
tag=${tags[index-1]}
|
|
|
|
case $1 in
|
|
|
|
"rxe") rdma_start $vm $tag "rxe" ;;
|
|
|
|
"siw" | "start") rdma_start $vm $tag "siw" ;;
|
|
|
|
"info") rdma_info $vm $tag ;;
|
|
|
|
"status") rdma_status $vm $tag ;;
|
|
|
|
"stop" | "off")
|
|
|
|
rdma_stop $vm
|
|
|
|
rdma_status $vm $tag
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "SoftRoCE, SoftiWARP, Status, or Off?"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|