fi
}
+function test_mon_injectargs()
+{
+ ceph tell osd.0 injectargs '--osd_debug_op_order --osd_debug_drop_ping_probability 444' >& $TMPFILE || return 1
+ check_response "osd_debug_drop_ping_probability = '444' osd_debug_op_order = 'true'"
+ ceph tell osd.0 injectargs --no-osd_debug_op_order >& $TMPFILE || return 1
+ check_response "osd_debug_op_order = 'false'"
+ ceph tell osd.0 injectargs -- --osd_debug_op_order >& $TMPFILE || return 1
+ check_response "osd_debug_op_order = 'true'"
+ ceph tell osd.0 injectargs -- '--osd_debug_op_order --osd_debug_drop_ping_probability 555' >& $TMPFILE || return 1
+ check_response "osd_debug_drop_ping_probability = '555' osd_debug_op_order = 'true'"
+}
+
function test_mon_injectargs_SI()
{
# Test SI units during injectargs and 'config set'
expect_config_value "mon.a" "mon_pg_warn_min_objects" 10240
ceph tell mon.a injectargs '--mon_pg_warn_min_objects 1G'
expect_config_value "mon.a" "mon_pg_warn_min_objects" 1073741824
- expect_false ceph injectargs mon.a '--mon_pg_warn_min_objects 10F'
+ # < /dev/null accounts for the fact that ceph will go in interactive mode
+ # because injectargs is discarded (actually saved for the benefit of
+ # a tell command that never comes)
+ expect_false ceph injectargs mon.a '--mon_pg_warn_min_objects 10F' < /dev/null 2> /dev/null
$SUDO ceph daemon mon.a config set mon_pg_warn_min_objects $initial_value
}
set +x
TESTS=(
+ mon_injectargs
mon_injectargs_SI
tiering
auth
'log_flush_on_exit':'true',
}
+ if 'injectargs' in childargs:
+ position = childargs.index('injectargs')
+ injectargs = childargs[position:]
+ childargs = childargs[:position]
+ if verbose:
+ print >> sys.stderr, 'Separate childargs {0} from injectargs {1}'.\
+ format(childargs, injectargs)
+ else:
+ injectargs = None
+
clustername = 'ceph'
if parsed_args.cluster:
clustername = parsed_args.cluster
format(e.__class__.__name__)
return 1
- #tmp = childargs
childargs = retargs
if not childargs:
childargs = []
childargs = childargs[2:]
is_tell = True
- if is_tell and not len(childargs):
- print >> sys.stderr, \
+ if is_tell:
+ if injectargs:
+ childargs = injectargs
+ if not len(childargs):
+ print >> sys.stderr, \
'Cannot use \'tell\' with interactive mode'
- return errno.EINVAL
+ return errno.EINVAL
# fetch JSON sigs from command
# each line contains one command signature (a placeholder name