This adds device class support to crush rules when using the class key
in the rule dict via the create-replicated sub command.
If the class key isn't specified then we use the create-simple sub
command for backward compatibility.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1636508
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
#crush_rule_hdd:
# name: HDD
-# root: HDD
+# root: default
# type: host
+# class: hdd
# default: false
#crush_rule_ssd:
# name: SSD
-# root: SSD
+# root: default
# type: host
+# class: ssd
# default: false
#crush_rules:
crush_rule_hdd:
name: HDD
- root: HDD
+ root: default
type: host
+ class: hdd
default: false
crush_rule_ssd:
name: SSD
- root: SSD
+ root: default
type: host
+ class: ssd
default: false
crush_rules:
- osd_crush_location is defined
- name: create configured crush rules
- command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule create-simple {{ item.name }} {{ item.root }} {{ item.type }}"
+ command: "{{ hostvars[groups[mon_group_name][0]]['container_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule {{ 'create-replicated' if item.class is defined else 'create-simple' }} {{ item.name }} {{ item.root }} {{ item.type }} {{ item.class | default('') }}"
changed_when: false
with_items: "{{ hostvars[groups[mon_group_name][0]]['crush_rules'] | unique }}"
delegate_to: '{{ groups[mon_group_name][0] }}'
crush_rule_config: True
crush_rule_hdd:
name: HDD
- root: HDD
+ root: default
type: host
+ class: hdd
default: true
crush_rules:
- "{{ crush_rule_hdd }}"
crush_rule_config: True
crush_rule_hdd:
name: HDD
- root: HDD
+ root: default
type: host
+ class: hdd
default: true
crush_rules:
- "{{ crush_rule_hdd }}"
\ No newline at end of file
crush_rule_config: True
crush_rule_hdd:
name: HDD
- root: HDD
+ root: default
type: host
+ class: hdd
default: true
crush_rules:
- "{{ crush_rule_hdd }}"