{
local count=$((${node_count[$node_type]:-0} + 1))
node_count[$node_type]=$count
- local fmt
- fmt=$(call_func node_name_format "$node_type") || {
+ name=$(call_func node_name_format "$node_type" "$CLUSTER" $count) || {
echo "ERROR: Node type \"${node_type}\" not defined!"
echo "Valid node types are:"
set | sed -n 's@^node_name_format_\(.*\) ().*@ \1@p'
exit 1
}
- # printf behaves weirdly if given too many args for format, so
- # "head" handles the case where there is no %d or similar for
- # $count.
- name=$(printf "${fmt}" "$CLUSTER" $count | head -n 1)
ctdb_node=$(call_func node_is_ctdb_node "$node_type")
}
hack_all_nodes_with _get_name_ctdb_node
# Building a general node name regexp is a bit cumbersome. :-)
local name_regexp="("
for i in $(set | sed -n -e "s@^\(node_name_format_.*\) ().*@\1@p") ; do
- # For each node_name_format_* function, get the actual node
- # name format string
- fmt=$($i)
- # fill it with placeholders (remembering that "_" is not valid
- # in a real cluster name)
- local t=$(printf "$fmt\n" "_" "0" | head -n 1)
+ # Format node name with placeholders (remembering that "_" is
+ # not valid in a real cluster name)
+ local t=$("$i" "_" "0")
# now replace the placeholders with regexps - order is
# important here, since the cluster name can contain digits
t=$(sed -r -e "s@[[:digit:]]+@[[:digit:]]+@" -e "s@_@${CLUSTER}@" <<<"$t")