mon: 'osd find <osd-id>' command

Simple command to find the ip, host, rack, etc. for an OSD.  This is better
than 'ceph osd dump | grep ^osd.NNN\ '.

Signed-off-by: Sage Weil <sage@inktank.com>
crush: add rule_exists()

Signed-off-by: Sage Weil <sage@inktank.com>
crush: fix get_rule_id() return value

There are 0 callers, yay!

Signed-off-by: Sage Weil <sage@inktank.com>
crush: add_simple_rule() command

Method to create a very generic rule the distributes objects across the
specified failure domain type underneath the given root.

Signed-off-by: Sage Weil <sage@inktank.com>
mon: 'osd crush rule create-simple <name> <root> <failure_domain_type>'

Simple command to create simple rules.

Signed-off-by: Sage Weil <sage@inktank.com>
crush: factor out dump_rules from dump

Signed-off-by: Sage Weil <sage@inktank.com>
mon: 'osd crush dump'

Signed-off-by: Sage Weil <sage@inktank.com>
mon: 'osd crush rules list|ls'

Signed-off-by: Sage Weil <sage@inktank.com>
crush: factor out (trivial) crush_destroy_rule()

Signed-off-by: Sage Weil <sage@inktank.com>
crush: remove_rule() method

Signed-off-by: Sage Weil <sage@inktank.com>
osdmap: method to check if a crush ruleset is in use

Signed-off-by: Sage Weil <sage@inktank.com>
mon: 'osd crush rule rm <name>'

Signed-off-by: Sage Weil <sage@inktank.com>
qa: add workunits/mon/crush_ops.sh

Test creating, listing, removing crush rules via the mon.

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