ceph/src/cclass.in

94 lines
1.5 KiB
Bash

#!/bin/sh
load=0
load_all=0
fname=""
libdir=""
if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then
BINDIR=.
[ -e .libs ] && LIBDIR=.libs || LIBDIR=.
ETCDIR=.
libdir=$LIBDIR
else
BINDIR=@bindir@
ETCDIR=@sysconfdir@/ceph
libdir=@libdir@/rados-classes
fi
load_opt="changed"
usage="usage: $0 [option]... [cls_filename]\n"
usage=$usage"options:\n"
usage=$usage"\t-L, --libdir <path>\n"
usage=$usage"\t-l, --load\n"
usage=$usage"\t-a, --load-all\n"
usage=$usage"\t-c, --conf <ceph.conf>\n"
usage=$usage"\t-o, --overwrite\n"
usage=$usage"\t-e, --excl\n"
conf=$ETCDIR/ceph.conf
usage_exit() {
printf "$usage"
exit 1
}
err_exit() {
echo "Error: $*"
exit 1
}
while [ $# -ge 1 ]; do
case $1 in
-L | --libdir )
shift
libdir=$1
;;
-l | --load )
load=1
;;
-a | --load-all )
load_all=1
;;
-o | --overwrite )
load_opt="overwrite"
;;
-e | --excl )
load_opt="excl"
;;
-c | --conf )
shift
conf=$1
;;
* )
[ -n "$fname" ] && usage_exit
fname=$1
;;
esac
shift
done
[ -z "$fname" ] && [ $load_all -eq 0 ] && usage_exit
load() {
fn=$1
$BINDIR/ceph -c $conf class add -i $fn `$BINDIR/cclsinfo $fn` $load_opt
}
load_all() {
all=`find $libdir -name 'libcls_*.so*' -type f`;
if [ -n "$all" ]; then
for fn in $all; do
echo Loading class: $fn: `$BINDIR/cclsinfo $fn`
load $fn
done
fi
}
[ $load -eq 1 ] && load $fname
[ $load_all -eq 1 ] && load_all