#!/bin/sh
# generate UDEV rules for ScaleIO devices suitable for ASM
#
# use these commands to restart rules processor:
# /sbin/udevadm control --reload-rules
# /sbin/udevadm trigger
sd_list=$(ls -1 /dev/sd*? )
owner=grid
group=asmadmin
diskname=disk
base=0
#
# process command line arguments
#
if ( ! getopts "b:d:g:l:o:" opt); then
echo "Usage: `basename $0` options (-d diskname) (-g group) (-l device_list) (-o owner)";
exit $E_OPTERROR;
fi
while getopts "b:d:g:l:o:" opt; do
case $opt in
b) base=$OPTARG;;
d) diskname=$OPTARG;;
g) group=$OPTARG;;
l) device_list=$OPTARG;;
o) owner=$OPTARG;;
esac
done
let i=$base
for sd in ${sd_list}
do
basesd=`echo $sd | cut -f3 -d"/"`
## echo "considering device $basesd"
##if [[ $device_list =~ (^| )$basesd($| ) ]] || [[ ${#device_list} -lt 1 ]]
if [[ ",$device_list," = *",$basesd,"* ]] || [[ ${#device_list} -lt 1 ]]
then
#myscid=`/opt/emc/scaleio/sdc/bin/drv_cfg --query_block_device_id --block_device ${sd}`
myscid=`/usr/lib/udev/scsi_id -g -u -d ${sd}`
printf "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM=\"/usr/lib/udev/scsi_id -g -u -d /dev/%%k\", RESULT==\"%s\", SYMLINK+=\"oracleasm/$diskname%02d\", OWNER=\"$owner\", GROUP=\"$group\", MODE=\"0660\"\n" ${myscid} $i
let i=i+1
fi
done