From: Dimitri Savineau Date: Thu, 31 Oct 2019 20:24:12 +0000 (-0400) Subject: ceph-osd: add device class to crush rules X-Git-Tag: v3.2.39~18 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=af57597df64c4414de22dd68ff0920398649d788;p=ceph-ansible.git ceph-osd: add device class to crush rules 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 (cherry picked from commit ef2cb99f739ade80e285d83050ac01184aafc753) --- diff --git a/group_vars/mons.yml.sample b/group_vars/mons.yml.sample index 3125065c2..44f8bc627 100644 --- a/group_vars/mons.yml.sample +++ b/group_vars/mons.yml.sample @@ -43,14 +43,16 @@ dummy: #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: diff --git a/roles/ceph-mon/defaults/main.yml b/roles/ceph-mon/defaults/main.yml index 1a61df5cd..226cf59a7 100644 --- a/roles/ceph-mon/defaults/main.yml +++ b/roles/ceph-mon/defaults/main.yml @@ -35,14 +35,16 @@ crush_rule_config: false 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: diff --git a/roles/ceph-osd/tasks/crush_rules.yml b/roles/ceph-osd/tasks/crush_rules.yml index 49ec01439..412030c31 100644 --- a/roles/ceph-osd/tasks/crush_rules.yml +++ b/roles/ceph-osd/tasks/crush_rules.yml @@ -11,7 +11,7 @@ - osd_crush_location is defined - name: create configured crush rules - command: "{{ hostvars[groups[mon_group_name][0]]['docker_exec_cmd'] | default('') }} ceph --cluster {{ cluster }} osd crush rule create-simple {{ item.name }} {{ item.root }} {{ item.type }}" + command: "{{ hostvars[groups[mon_group_name][0]]['docker_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] }}' diff --git a/tests/functional/all_daemons/container/group_vars/mons b/tests/functional/all_daemons/container/group_vars/mons index 4b5405947..7b31aa922 100644 --- a/tests/functional/all_daemons/container/group_vars/mons +++ b/tests/functional/all_daemons/container/group_vars/mons @@ -3,8 +3,9 @@ create_crush_tree: True crush_rule_config: True crush_rule_hdd: name: HDD - root: HDD + root: default type: host + class: hdd default: true crush_rules: - "{{ crush_rule_hdd }}" diff --git a/tests/functional/all_daemons/group_vars/mons b/tests/functional/all_daemons/group_vars/mons index 4b8817342..f6ab9a541 100644 --- a/tests/functional/all_daemons/group_vars/mons +++ b/tests/functional/all_daemons/group_vars/mons @@ -3,8 +3,9 @@ create_crush_tree: True 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