77
77
- Restrict placement to devices of a specific class (hdd/ssd)
78
78
required: false
79
79
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
80
85
81
86
author:
82
87
- Guillaume Abrioux <gabrioux@redhat.com>
94
99
cephadm_ec_profile:
95
100
name: foo
96
101
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
97
109
'''
98
110
99
111
from ansible .module_utils .basic import AnsibleModule
@@ -120,7 +132,7 @@ def get_profile(module, name):
120
132
return cmd
121
133
122
134
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
124
136
'''
125
137
Create a profile
126
138
'''
@@ -130,6 +142,8 @@ def create_profile(module, name, k, m, stripe_unit, crush_device_class, director
130
142
args .append ('stripe_unit={0}' .format (stripe_unit ))
131
143
if crush_device_class :
132
144
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 ))
133
147
if directory :
134
148
args .append ('directory={0}' .format (plugin ))
135
149
if plugin :
@@ -165,6 +179,7 @@ def run_module():
165
179
k = dict (type = 'str' , required = False ),
166
180
m = dict (type = 'str' , required = False ),
167
181
crush_device_class = dict (type = 'str' , required = False ),
182
+ crush_failure_domain = dict (type = 'str' , required = False ),
168
183
directory = dict (type = 'str' , required = False ),
169
184
plugin = dict (type = 'str' , required = False ),
170
185
)
@@ -182,6 +197,7 @@ def run_module():
182
197
k = module .params .get ('k' )
183
198
m = module .params .get ('m' )
184
199
crush_device_class = module .params .get ('crush_device_class' )
200
+ crush_failure_domain = module .params .get ('crush_failure_domain' )
185
201
directory = module .params .get ('directory' )
186
202
plugin = module .params .get ('plugin' )
187
203
@@ -209,6 +225,7 @@ def run_module():
209
225
current_profile ['m' ] != m or \
210
226
current_profile .get ('stripe_unit' , stripe_unit ) != stripe_unit or \
211
227
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 \
212
229
current_profile .get ('directory' , directory ) != directory or \
213
230
current_profile .get ('plugin' , plugin ) != plugin : # noqa: E501
214
231
rc , cmd , out , err = exec_command (module ,
@@ -218,6 +235,7 @@ def run_module():
218
235
m ,
219
236
stripe_unit ,
220
237
crush_device_class , # noqa: E501
238
+ crush_failure_domain ,
221
239
directory ,
222
240
plugin ,
223
241
force = True )) # noqa: E501
@@ -230,6 +248,7 @@ def run_module():
230
248
m ,
231
249
stripe_unit , # noqa: E501
232
250
crush_device_class , # noqa: E501
251
+ crush_failure_domain ,
233
252
directory ,
234
253
plugin ))
235
254
if rc == 0 :
0 commit comments