Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f526856

Browse files
authoredJan 3, 2025··
Merge pull request #159 from PC-Admin/ec-failure-domain
fix for #158. enable ec_profiles role to set the crush-failure-domain.
2 parents 265c6f2 + 01a3bff commit f526856

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed
 

‎plugins/modules/cephadm_ec_profile.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@
7777
- Restrict placement to devices of a specific class (hdd/ssd)
7878
required: false
7979
type: str
80+
crush_failure_domain:
81+
description:
82+
- Set the failure domain for the CRUSH rule (e.g., 'rack', 'host', 'osd')
83+
required: false
84+
type: str
8085
8186
author:
8287
- Guillaume Abrioux <gabrioux@redhat.com>
@@ -94,6 +99,13 @@
9499
cephadm_ec_profile:
95100
name: foo
96101
state: absent
102+
103+
- name: create an erasure code profile with custom failure domain
104+
cephadm_ec_profile:
105+
name: foo-osd
106+
k: 4
107+
m: 2
108+
crush_failure_domain: osd
97109
'''
98110

99111
from ansible.module_utils.basic import AnsibleModule
@@ -120,7 +132,7 @@ def get_profile(module, name):
120132
return cmd
121133

122134

123-
def create_profile(module, name, k, m, stripe_unit, crush_device_class, directory, plugin, force=False): # noqa: E501
135+
def create_profile(module, name, k, m, stripe_unit, crush_device_class, crush_failure_domain, directory, plugin, force=False): # noqa: E501
124136
'''
125137
Create a profile
126138
'''
@@ -130,6 +142,8 @@ def create_profile(module, name, k, m, stripe_unit, crush_device_class, director
130142
args.append('stripe_unit={0}'.format(stripe_unit))
131143
if crush_device_class:
132144
args.append('crush-device-class={0}'.format(crush_device_class))
145+
if crush_failure_domain:
146+
args.append('crush-failure-domain={0}'.format(crush_failure_domain))
133147
if directory:
134148
args.append('directory={0}'.format(plugin))
135149
if plugin:
@@ -165,6 +179,7 @@ def run_module():
165179
k=dict(type='str', required=False),
166180
m=dict(type='str', required=False),
167181
crush_device_class=dict(type='str', required=False),
182+
crush_failure_domain=dict(type='str', required=False),
168183
directory=dict(type='str', required=False),
169184
plugin=dict(type='str', required=False),
170185
)
@@ -182,6 +197,7 @@ def run_module():
182197
k = module.params.get('k')
183198
m = module.params.get('m')
184199
crush_device_class = module.params.get('crush_device_class')
200+
crush_failure_domain = module.params.get('crush_failure_domain')
185201
directory = module.params.get('directory')
186202
plugin = module.params.get('plugin')
187203

@@ -209,6 +225,7 @@ def run_module():
209225
current_profile['m'] != m or \
210226
current_profile.get('stripe_unit', stripe_unit) != stripe_unit or \
211227
current_profile.get('crush-device-class', crush_device_class) != crush_device_class or \
228+
current_profile.get('crush-failure-domain', crush_failure_domain) != crush_failure_domain or \
212229
current_profile.get('directory', directory) != directory or \
213230
current_profile.get('plugin', plugin) != plugin: # noqa: E501
214231
rc, cmd, out, err = exec_command(module,
@@ -218,6 +235,7 @@ def run_module():
218235
m,
219236
stripe_unit,
220237
crush_device_class, # noqa: E501
238+
crush_failure_domain,
221239
directory,
222240
plugin,
223241
force=True)) # noqa: E501
@@ -230,6 +248,7 @@ def run_module():
230248
m,
231249
stripe_unit, # noqa: E501
232250
crush_device_class, # noqa: E501
251+
crush_failure_domain,
233252
directory,
234253
plugin))
235254
if rc == 0:

‎roles/ec_profiles/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ This role assumes the existence of the following groups:
2525
m: 2
2626
- name: delete_me
2727
state: absent
28+
- name: foo-osd
29+
k: 4
30+
m: 2
31+
crush_failure_domain: osd
2832
2933
```
3034

‎roles/ec_profiles/tasks/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
directory: "{{ item.directory | default(omit) }}"
1111
crush_root: "{{ item.crush_root | default(omit) }}"
1212
crush_device_class: "{{ item.crush_device_class | default(omit) }}"
13+
crush_failure_domain: "{{ item.crush_failure_domain | default(omit) }}"
1314
with_items: "{{ cephadm_ec_profiles }}"
1415
delegate_to: "{{ groups['mons'][0] }}"
1516
run_once: true

0 commit comments

Comments
 (0)
Please sign in to comment.