rdma.zsh: Handle machines with multiple NICs

Iterate over each network card and add RDMA to it.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
Anna Schumaker 2021-12-15 12:04:00 -05:00
parent 48a2b87ecd
commit f1ea1327f4
1 changed files with 26 additions and 16 deletions

View File

@ -4,25 +4,27 @@ if [ "$#" -lt 2 ]; then
echo "Usage: $0 {rxe,siw,info,start,status,stop,off} {remote host,...}" echo "Usage: $0 {rxe,siw,info,start,status,stop,off} {remote host,...}"
fi fi
rdma_ip() { rdma_ips() {
getent hosts $1 | head -n 1 | awk '{print $1}' getent hosts $1 | awk '{print $1}'
} }
rdma_dev() { rdma_devs() {
ssh $1 ip addr show to $(rdma_ip $1) | awk -F': ' '{print $2}' for ip in $(rdma_ips $1); do
ssh $1 ip addr show to $ip | awk -F': ' '{print $2}'
done
} }
rdma_cur() { rdma_cur() {
ssh $1 rdma link | awk -F '[0-9 ]' '{print $2}' ssh $1 rdma link | awk -F '[ |/]' '{print $2}'
} }
rdma_start() { rdma_start() {
cur=$(rdma_cur $1) if [ -z "$(rdma_cur $1 | grep $3)" ]; then
if [[ "$cur" != "$3" ]]; then rdma_stop $1
if [[ ! -z "$cur" ]]; then devs=($(rdma_devs $1))
rdma_stop $1 for i in $(seq ${#devs}); do
fi ssh $1 "sudo rdma link add $3$((i-1)) type $3 netdev ${devs[$i]}"
ssh $1 "sudo rdma link add "$3"0 type $3 netdev $(rdma_dev $1)" done
fi fi
rdma_status $1 $2 rdma_status $1 $2
} }
@ -32,19 +34,27 @@ rdma_info() {
} }
rdma_status() { rdma_status() {
link=$(ssh $1 rdma link show) links=($(ssh $1 rdma link show))
if [ ! -z $link ]; then if [ ! -z "$links" ]; then
echo "$2 $link($(rdma_ip $1))" 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
else else
echo "$2 stopped" echo "$2 stopped"
fi fi
} }
rdma_stop() { rdma_stop() {
ssh $1 "sudo rdma link delete siw0 2>/dev/null" for dev in $(rdma_cur $1); do
ssh $1 "sudo rdma link delete rxe0 2>/dev/null" ssh $1 "sudo rdma link delete $dev"
done
} }
IFS=$'\n'
tags=($(python /home/anna/bin/colors/vm.py ${@:2})) tags=($(python /home/anna/bin/colors/vm.py ${@:2}))
for vm in "${@:2}"; do for vm in "${@:2}"; do
index=${@[(ie)$vm]} index=${@[(ie)$vm]}