ceph_argparse.py: validate's 3rd arg is not verbose, it's partial

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph_argparse: ignore prefix mismatches, but quit if non-prefix

I don't know what I was thinking; this was always the right validation
algorithm, and I broke it trying to simplify.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph_argparse.py: allow valid char RE arg to CephString

Change badchars to goodchars (no one was using badchars); allow
goodchars to be a RE character class of valid characters for the
param.  First use: crush item names.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
MonCommands.h: use new validation for crush names (CephString goodchars)

Signed-off-by: Dan Mick <dan.mick@inktank.com>
crush: add is_valid_crush_name() helper

[A-Za-z0-9-_.]+

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
crush: return EINVAL on invalid name from {insert,update,create_or_move}_item, set_item_name

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
mon/OSDMonitor: return error if we can't set the new bucket's name

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
Merge remote-tracking branch 'gh/wip-4779' into next

Reviewed-by: Sage Weil <sage@inktank.com>
Merge branch 'wip-4779' into next

Reviewed-by: Sage Weil <sage@inktank.com>