ceph.in: remove unnecessary semicolons

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph.in: add missing spaces after comma

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph.in: add missing spaces around operator

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: fix bad indentation

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: add missing spaces around operator

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: add missing spaces after comma

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: fix some ArgumentValid() commands

Fix raise call for ArgumentValid(): self has no member t, use
t directly. Moved one check in the correct block to avoide useless
checks.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: remove unnecessary semicolon

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: fix dangerous default value [] as arg

Fix valid pylint warning about "Dangerous default value [] as argument".

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
ceph_argparse.py: define some self.* in __init__

Fix for "Attribute 'xy' defined outside __init__": add __init__
function to class and set some default values for the variables.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
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>
mon: include service first_committed in report

Signed-off-by: Sage Weil <sage@inktank.com>
mon: move quorum out of monmap

Signed-off-by: Sage Weil <sage@inktank.com>
mon: include paxos info in report

Signed-off-by: Sage Weil <sage@inktank.com>
mon: include some (basic) auth info in report

Nothing privileged!

Signed-off-by: Sage Weil <sage@inktank.com>
mon: fix scrub vs paxos race: refresh on commit, not round completion

Consider:

 - paxos starts a commit N+1
 - a majority of the peers ack it
  - paxos::commit() writes N+1 it to disk
  - tells peers to commit
 - peers commit N+1, *and* refresh_from_paxos(), and generate N+1 full map
 - leader does _scrub on N+1, without latest full osdmap
 - peers do _scrub on N+1, with latest full osdmap
 - leader finishes paxos gather, does refresh_from_paxos()
 -> scrub fails.

Fix this by doing the refresh_from_paxos() at commit time and not when
the paxos round finishes.  We move the refresh out of finish_proposal
and into its own helper, and update all callers accordingly.  This
keeps on-disk state more tightly in sync with in-memory state and
avoids the need for a e.g., kludgey workaround in the scrub code.

We also simplify the bootstrap checks a bit by doing so immediately
and relying on the normal bootstrap paxos reset paths to clean up
any waiters.

Signed-off-by: Sage Weil <sage@inktank.com>
mon/Paxos: make all handle_accept paths go via out label

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