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