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
8186author:
8287 - Guillaume Abrioux <[email protected] > 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
99111from 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 :
0 commit comments