mirror of
https://github.com/ceph/ceph
synced 2025-02-26 04:22:48 +00:00
94 lines
1.5 KiB
Bash
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
|
|
|