done
}
-setup_pstore ()
-{
- pstore_dir="$CTDB_VARDIR/fake-ctdb/pstore/$1"
- mkdir -p "$pstore_dir"
-}
-
parse_nodespec ()
{
if [ "$nodespec" = "all" ] ; then
return 1
}
+######################################################################
+
+_t_setup ()
+{
+ _t_dir="$CTDB_VARDIR/fake-ctdb/fake-tdb/$1"
+ mkdir -p "$_t_dir"
+}
+
+_t_put ()
+{
+ echo "$2" >"${_t_dir}/$1"
+}
+
+_t_get ()
+{
+ cat "${_t_dir}/$1"
+}
+
+_t_del ()
+{
+ rm -f "${_t_dir}/$1"
+}
+
+ctdb_pstore ()
+{
+ _t_setup "$2"
+ _t_put "$3" "$4"
+}
+
+ctdb_pdelete ()
+{
+ _t_setup "$2"
+ _t_del "$3"
+}
+
+ctdb_pfetch ()
+{
+ _t_setup "$2"
+ _t_get "$3" >"$4" 2>/dev/null
+}
+
+ctdb_ptrans ()
+{
+ _t_setup "$2"
+
+ while IFS="" read _line ; do
+ _k=$(echo "$_line" | sed -n -e 's@^"\([^"]*\)" "[^"]*"$@\1@p')
+ _v=$(echo "$_line" | sed -e 's@^"[^"]*" "\([^"]*\)"$@\1@')
+ [ -n "$_k" ] || die "ctdb ptrans: bad line \"${line}\""
+ if [ -n "$_v" ] ; then
+ _t_put "$_k" "$_v"
+ else
+ _t_del "$_k"
+ fi
+ done
+}
+
+ctdb_catdb ()
+{
+ _t_setup "$2"
+
+ # This will break on keys with spaces but we don't have any of
+ # those yet.
+ _count=0
+ for _i in "${_t_dir}/"* ; do
+ [ -r "$_i" ] || continue
+ _k="${_i##*/}" # basename
+ _v=$(_t_get "$_k")
+ _kn=$(echo -n "$_k" | wc -c)
+ _vn=$(echo -n "$_v" | wc -c)
+ cat <<EOF
+key(${_kn}) = "${_k}"
+dmaster: 0
+rsn: 1
+data(${_vn}) = "${_v}"
+
+EOF
+ _count=$(($_count + 1))
+ done
+
+ echo "Dumped ${_count} records"
+}
######################################################################
_t=$(grep -F -v "$2 $3" "$tickles_file")
echo "$_t" >"$tickles_file"
;;
- pstore)
- setup_pstore "$2"
- cat "$4" >"${pstore_dir}/$3"
- ;;
- pfetch)
- setup_pstore "$2"
- cat "${pstore_dir}/$3" >"$4" 2>/dev/null
- ;;
+ pstore) ctdb_pstore "$@" ;;
+ pdelete) ctdb_pdelete "$@" ;;
+ pfetch) ctdb_pfetch "$@" ;;
+ ptrans) ctdb_ptrans "$@" ;;
+ catdb) ctdb_catdb "$@" ;;
ifaces)
# Assume -Y.
echo "|Name|LinkStatus|References|"