mon: Fix default replicated pool ruleset choice

Specifically, in the case where the configured
default ruleset is CEPH_DEFAULT_CRUSH_REPLICATED_RULESET,
instead of assuming ruleset 0 exists, choose the lowest
numbered ruleset.

In the case where an explicit ruleset is passed to
OSDMonitor::prepare_pool_crush_ruleset, verify
that it really exists.

The idea is to eliminate cases where a pool could
exist with its crush ruleset set to something
other than a value ruleset ID.

Fixes: #8373

Signed-off-by: John Spray <john.spray@inktank.com>
mon: Fix check of ruleset id on pool update

This code was using CrushWrapper::rule_exists, which
checks for a *rule* existing, whereas the value being
set is a *ruleset*.

Signed-off-by: John Spray <john.spray@inktank.com>
Merge pull request #1841 from ceph/wip-8373

Fixes for crush ruleset selection during pool creation (Wip 8373)

Reviewed-by: Sage Weil <sage@inktank.com>