If you deploy with 2 HDDs and 1 SDD then each subsequent deploy both
HDD drives will be filtered out, because they're already used by ceph.
ceph-volume will report this as a 'strategy change' because the device
list went from a mixed type of HDD and SDD to a single type of only SDD.
This situation results in a non-zero exit code from ceph-volume. We want
to handle this situation gracefully and report that nothing will be changed.
A similar json structure to what would have been given by ceph-volume is
returned in the 'stdout' key.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1650306
Signed-off-by: Andrew Schoen <aschoen@redhat.com>
try:
report_result = json.loads(out)
except ValueError:
+ strategy_change = "strategy changed" in out
+ if strategy_change:
+ out = json.dumps({"changed": False, "stdout": out.rstrip("\r\n")})
+ rc = 0
+ changed = False
+ else:
+ out = out.rstrip("\r\n")
result = dict(
cmd=cmd,
- stdout=out.rstrip(b"\r\n"),
- stderr=err.rstrip(b"\r\n"),
+ stdout=out,
+ stderr=err.rstrip("\r\n"),
rc=rc,
changed=changed,
)
+ if strategy_change:
+ module.exit_json(**result)
module.fail_json(msg='non-zero return code', **result)
if not report: