self.filtered_devices.update({d: used_reason for d in
getattr(self.args, dev_list_prop)
if d.used_by_ceph})
- if self.args.yes and dev_list and devs != usable:
+ # only fail if non-interactive, this iteration concerns
+ # non-data devices, there are usable data devices (or not all
+ # data devices were filtered) and non-data devices were filtered
+ # so in short this branch is not taken if all data devices are
+ # filtered
+ if self.args.yes and dev_list and self.usable and devs != usable:
err = '{} devices were filtered in non-interactive mode, bailing out'
raise RuntimeError(err.format(len(devs) - len(usable)))
state: stopped
with_items: "{{ osd_ids }}"
-
- hosts: mons
become: yes
tasks:
command: "ceph --cluster {{ cluster }} osd purge osd.{{ item }} --yes-i-really-mean-it"
with_items: "{{ osd_ids }}"
-
- hosts: osds
become: yes
tasks:
environment:
CEPH_VOLUME_DEBUG: 1
- - name: ensure batch create is idempotent
+ - name: ensure batch create is idempotent when all data devices are filtered
command: "ceph-volume --cluster {{ cluster }} lvm batch --yes --{{ osd_objectstore|default('bluestore') }} {{ '--dmcrypt' if dmcrypt|default(false) else '' }} {{ devices[:2] | join(' ') }} --db-devices {{ devices[2:] | join(' ') }}"
register: batch_cmd
failed_when: false
msg: "lvm batch failed idempotency check"
when:
- batch_cmd.rc != 0
- - "'strategy changed' not in batch_cmd.stderr"
- name: run batch --report to see if devices get filtered
command: "ceph-volume --cluster {{ cluster }} lvm batch --report --format=json --{{ osd_objectstore|default('bluestore') }} {{ '--dmcrypt' if dmcrypt|default(false) else '' }} {{ devices[:2] | join(' ') }} --db-devices {{ devices[2:] | join(' ') }}"
msg: "lvm batch --report failed idempotency check"
when:
- report_cmd.rc != 0
- - "'strategy changed' not in report_cmd.stderr"