80 lines
2.1 KiB
Bash
80 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Usage: block-npiv-vport [create npivargs | delete vportwwpn | status]
|
|
|
|
dir=$(dirname "$0")
|
|
. "$dir/block-npiv-common.sh"
|
|
|
|
#set -x
|
|
command=$1
|
|
params=$2
|
|
|
|
case "$command" in
|
|
create)
|
|
# Params is one big arg, with fields separated by hyphens:
|
|
# FABRIC-VPWWPN-VPWWNN-TGTWWPN-LUN#
|
|
# arg 2 - Fabric Name
|
|
# arg 3 - VPORT's WWPN
|
|
# arg 4 - VPORT's WWNN
|
|
# arg 5 - Target's WWPN
|
|
# arg 6 - LUN # on Target
|
|
# no wwn contains a leading 0x - it is a 16 character hex value
|
|
# You may want to optionally pick a specific adapter ?
|
|
NPIVARGS=$params;
|
|
LUN=${NPIVARGS##*-*-*-*-}; NPIVARGS=${NPIVARGS%-*}
|
|
if test $LUN = $NPIVARGS ; then exit 1; fi
|
|
TGTWWPN=${NPIVARGS##*-*-*-}; NPIVARGS=${NPIVARGS%-*}
|
|
if test $TGTWWPN = $NPIVARGS ; then exit 1; fi
|
|
VPORTWWNN=${NPIVARGS##*-*-}; NPIVARGS=${NPIVARGS%-*}
|
|
if test $VPORTWWNN = $NPIVARGS ; then exit 1; fi
|
|
VPORTWWPN=${NPIVARGS##*-}; NPIVARGS=${NPIVARGS%-*}
|
|
if test $VPORTWWPN = $NPIVARGS ; then exit 1; fi
|
|
FABRICNM=$NPIVARGS
|
|
|
|
# Ensure we compare everything using lower-case hex characters
|
|
TGTWWPN=`echo $TGTWWPN | tr A-Z a-z`
|
|
VPORTWWPN=`echo $VPORTWWPN | tr A-Z a-z`
|
|
VPORTWWNN=`echo $VPORTWWNN | tr A-Z a-z`
|
|
FABRICNM=`echo $FABRICNM | tr A-Z a-z`
|
|
|
|
find_vhost $VPORTWWPN $FABRICNM
|
|
if test -z "$vhost" ; then
|
|
create_vport $FABRICNM $VPORTWWPN $VPORTWWNN
|
|
if [ $? -ne 0 ] ; then exit 2; fi
|
|
sleep 8
|
|
find_vhost $VPORTWWPN $FABRICNM
|
|
if test -z "$vhost" ; then exit 3; fi
|
|
fi
|
|
|
|
exit 0
|
|
;;
|
|
|
|
delete)
|
|
# Params is VPORT's WWPN
|
|
# no wwn contains a leading 0x - it is a 16 character hex value
|
|
VPORTWWPN=$params
|
|
|
|
# Ensure we compare everything using lower-case hex characters
|
|
VPORTWWPN=`echo $VPORTWWPN | tr A-Z a-z`
|
|
|
|
find_vhost $VPORTWWPN $FABRICNM
|
|
if test -z "$vhost" ; then exit 4; fi
|
|
delete_vhost $vhost
|
|
|
|
exit 0
|
|
;;
|
|
|
|
status)
|
|
vport_status
|
|
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: block-npiv-vport [create npivargs | delete vportwwpn | status]"
|
|
|
|
exit 1
|
|
;;
|
|
esac
|
|
|