+++ /dev/null
-#!/bin/sh
-
-CCONF="$BINDIR/ceph-conf"
-
-default_conf=$ETCDIR"/ceph.conf"
-conf=$default_conf
-
-hostname=`hostname -s`
-
-verify_conf() {
- # fetch conf?
- if [ -x "$ETCDIR/fetch_config" ] && [ "$conf" = "$default_conf" ]; then
- conf="/tmp/fetched.ceph.conf.$$"
- echo "[$ETCDIR/fetch_config $conf]"
- if $ETCDIR/fetch_config $conf && [ -e $conf ]; then true ; else
- echo "$0: failed to fetch config with '$ETCDIR/fetch_config $conf'"
- exit 1
- fi
- # yay!
- else
- # make sure ceph.conf exists
- if [ ! -e $conf ]; then
- if [ "$conf" = "$default_conf" ]; then
- echo "$0: ceph conf $conf not found; system is not configured."
- exit 0
- fi
- echo "$0: ceph conf $conf not found!"
- usage_exit
- fi
- fi
-}
-
-
-check_host() {
- # what host is this daemon assigned to?
- host=`$CCONF -c $conf -n $type.$id host`
- if [ "$host" = "localhost" ]; then
- echo "$0: use a proper short hostname (hostname -s), not 'localhost', in $conf section $type.$id; skipping entry"
- return 1
- fi
- if expr match "$host" '.*\.' > /dev/null 2>&1; then
- echo "$0: $conf section $type.$id"
- echo "contains host=$host, which contains dots; this is probably wrong"
- echo "It must match the result of hostname -s"
- fi
- ssh=""
- rootssh=""
- sshdir=$PWD
- get_conf user "" "user"
-
- #echo host for $name is $host, i am $hostname
-
- cluster=$1
- if [ -e "/var/lib/ceph/$type/$cluster-$id/upstart" ]; then
- return 1
- fi
-
- # sysvinit managed instance in standard location?
- if [ -e "/var/lib/ceph/$type/$cluster-$id/sysvinit" ]; then
- host="$hostname"
- echo "=== $type.$id === "
- return 0
- fi
-
- # ignore all sections without 'host' defined
- if [ -z "$host" ]; then
- return 1
- fi
-
- if [ "$host" != "$hostname" ]; then
- # skip, unless we're starting remote daemons too
- if [ $allhosts -eq 0 ]; then
- return 1
- fi
-
- # we'll need to ssh into that host
- if [ -z "$user" ]; then
- ssh="ssh $host"
- else
- ssh="ssh $user@$host"
- fi
- rootssh="ssh root@$host"
- get_conf sshdir "$sshdir" "ssh path"
- fi
-
- echo "=== $type.$id === "
-
- return 0
-}
-
-do_cmd() {
- if [ -z "$ssh" ]; then
- [ $verbose -eq 1 ] && echo "--- $host# $1"
- ulimit -c unlimited
- whoami=`whoami`
- if [ "$whoami" = "$user" ] || [ -z "$user" ]; then
- bash -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && exit 1; }
- else
- sudo su $user -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && exit 1; }
- fi
- else
- [ $verbose -eq 1 ] && echo "--- $ssh $2 \"if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1\""
- $ssh $2 "if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1" || { [ -z "$3" ] && echo "failed: '$ssh $1'" && exit 1; }
- fi
-}
-
-do_cmd_okfail() {
- ERR=0
- if [ -z "$ssh" ]; then
- [ $verbose -eq 1 ] && echo "--- $host# $1"
- ulimit -c unlimited
- whoami=`whoami`
- if [ "$whoami" = "$user" ] || [ -z "$user" ]; then
- bash -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; }
- else
- sudo su $user -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; }
- fi
- else
- [ $verbose -eq 1 ] && echo "--- $ssh $2 \"if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1\""
- $ssh $2 "if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1" || { [ -z "$3" ] && echo "failed: '$ssh $1'" && ERR=1 && return 1; }
- fi
- return 0
-}
-
-do_root_cmd() {
- if [ -z "$ssh" ]; then
- [ $verbose -eq 1 ] && echo "--- $host# $1"
- ulimit -c unlimited
- whoami=`whoami`
- if [ "$whoami" = "root" ]; then
- bash -c "$1" || { echo "failed: '$1'" ; exit 1; }
- else
- sudo bash -c "$1" || { echo "failed: '$1'" ; exit 1; }
- fi
- else
- [ $verbose -eq 1 ] && echo "--- $rootssh $2 \"if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi ; cd $sshdir ; ulimit -c unlimited ; $1\""
- $rootssh $2 "if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi ; cd $sshdir; ulimit -c unlimited ; $1" || { echo "failed: '$rootssh $1'" ; exit 1; }
- fi
-}
-
-do_root_cmd_okfail() {
- ERR=0
- if [ -z "$ssh" ]; then
- [ $verbose -eq 1 ] && echo "--- $host# $1"
- ulimit -c unlimited
- whoami=`whoami`
- if [ "$whoami" = "root" ]; then
- bash -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; }
- else
- sudo bash -c "$1" || { [ -z "$3" ] && echo "failed: '$1'" && ERR=1 && return 1; }
- fi
- else
- [ $verbose -eq 1 ] && echo "--- $rootssh $2 \"if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1\""
- $rootssh $2 "if [ ! -d $sshdir ]; then mkdir -p $sshdir; fi; cd $sshdir ; ulimit -c unlimited ; $1" || { [ -z "$3" ] && echo "failed: '$rootssh $1'" && ERR=1 && return 1; }
- fi
- return 0
-}
-
-get_local_daemon_list() {
- type=$1
- if [ -d "/var/lib/ceph/$type" ]; then
- for p in `find -L /var/lib/ceph/$type -mindepth 1 -maxdepth 1 -type d`; do
- i=`basename $p`
- if [ -e "/var/lib/ceph/$type/$i/sysvinit" ]; then
- id=`echo $i | sed 's/[^-]*-//'`
- local="$local $type.$id"
- fi
- done
- fi
-}
-
-get_local_name_list() {
- # enumerate local directories
- local=""
- get_local_daemon_list "mon"
- get_local_daemon_list "osd"
- get_local_daemon_list "mds"
- get_local_daemon_list "mgr"
-}
-
-get_name_list() {
- orig="$*"
-
- # extract list of monitors, mdss, osds, mgrs defined in startup.conf
- allconf="$local "`$CCONF -c $conf -l mon | egrep -v '^mon$' || true ; \
- $CCONF -c $conf -l mds | egrep -v '^mds$' || true ; \
- $CCONF -c $conf -l mgr | egrep -v '^mgr$' || true ; \
- $CCONF -c $conf -l osd | egrep -v '^osd$' || true`
-
- if [ -z "$orig" ]; then
- what="$allconf"
- return
- fi
-
- what=""
- for f in $orig; do
- type=`echo $f | cut -c 1-3` # e.g. 'mon', if $item is 'mon1'
- id=`echo $f | cut -c 4- | sed 's/\\.//'`
- case $f in
- mon | osd | mds | mgr)
- for d in $allconf; do
- if echo $d | grep -q ^$type; then
- what="$what $d"
- fi
- done
- ;;
- *)
- if ! echo " " $allconf $local " " | egrep -q "( $type$id | $type.$id )"; then
- echo "$0: $type.$id not found ($conf defines" $allconf", /var/lib/ceph defines" $local")"
- exit 1
- fi
- what="$what $f"
- ;;
- esac
- done
-}
-
-get_conf() {
- var=$1
- def=$2
- key=$3
- shift; shift; shift
-
- if [ -z "$1" ]; then
- [ "$verbose" -eq 1 ] && echo "$CCONF -c $conf -n $type.$id \"$key\""
- eval "$var=\"`$CCONF -c $conf -n $type.$id \"$key\" || printf \"$def\"`\""
- else
- [ "$verbose" -eq 1 ] && echo "$CCONF -c $conf -s $1 \"$key\""
- eval "$var=\"`$CCONF -c $conf -s $1 \"$key\" || eval printf \"$def\"`\""
- fi
-}
-
-get_conf_bool() {
- get_conf "$@"
-
- eval "val=$"$1
- [ "$val" = "0" ] && export $1=0
- [ "$val" = "false" ] && export $1=0
- [ "$val" = "1" ] && export $1=1
- [ "$val" = "true" ] && export $1=1
-}
-