#!/bin/zsh 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_dev() { ssh $1 ip addr show to $(rdma_ip $1) | awk -F': ' '{print $2}' } rdma_cur() { ssh $1 rdma link | awk -F '[0-9 ]' '{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)" fi rdma_status $1 $2 } rdma_info() { ssh $1 "sudo ibv_devinfo" 2>&1 | sed "s/^/$2 /g" } rdma_status() { link=$(ssh $1 rdma link show) if [ ! -z $link ]; then echo "$2 $link($(rdma_ip $1))" 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" } 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