62
62
- Compute coding chunks for each object and store them on different
63
63
OSDs.
64
64
required: false
65
+ plugin:
66
+ description:
67
+ - Use the erasure code plugin to compute coding chunks and recover
68
+ missing chunks.
69
+ required: false
70
+ directory:
71
+ description:
72
+ - Set the directory name from which the erasure code plugin is
73
+ loaded.
74
+ required: false
65
75
crush_root:
66
76
description:
67
77
- The name of the crush bucket used for the first step of the CRUSH
84
94
k: 4
85
95
m: 2
86
96
87
- - name: delete an erassure code profile
97
+ - name: delete an erasure code profile
88
98
cephadm_ec_profile:
89
99
name: foo
90
100
state: absent
@@ -106,7 +116,7 @@ def get_profile(module, name):
106
116
return cmd
107
117
108
118
109
- def create_profile (module , name , k , m , stripe_unit , crush_device_class , force = False ): # noqa: E501
119
+ def create_profile (module , name , k , m , stripe_unit , crush_device_class , directory , plugin , force = False ): # noqa: E501
110
120
'''
111
121
Create a profile
112
122
'''
@@ -116,6 +126,10 @@ def create_profile(module, name, k, m, stripe_unit, crush_device_class, force=Fa
116
126
args .append ('stripe_unit={}' .format (stripe_unit ))
117
127
if crush_device_class :
118
128
args .append ('crush-device-class={}' .format (crush_device_class ))
129
+ if directory :
130
+ args .append ('directory={}' .format (plugin ))
131
+ if plugin :
132
+ args .append ('plugin={}' .format (plugin ))
119
133
if force :
120
134
args .append ('--force' )
121
135
@@ -147,6 +161,8 @@ def run_module():
147
161
k = dict (type = 'str' , required = False ),
148
162
m = dict (type = 'str' , required = False ),
149
163
crush_device_class = dict (type = 'str' , required = False , default = '' ),
164
+ directory = dict (type = 'str' , required = False ),
165
+ plugin = dict (type = 'str' , required = False ),
150
166
)
151
167
152
168
module = AnsibleModule (
@@ -162,6 +178,8 @@ def run_module():
162
178
k = module .params .get ('k' )
163
179
m = module .params .get ('m' )
164
180
crush_device_class = module .params .get ('crush_device_class' )
181
+ directory = module .params .get ('directory' )
182
+ plugin = module .params .get ('plugin' )
165
183
166
184
if module .check_mode :
167
185
module .exit_json (
@@ -186,14 +204,18 @@ def run_module():
186
204
if current_profile ['k' ] != k or \
187
205
current_profile ['m' ] != m or \
188
206
current_profile .get ('stripe_unit' , stripe_unit ) != stripe_unit or \
189
- current_profile .get ('crush-device-class' , crush_device_class ) != crush_device_class : # noqa: E501
207
+ current_profile .get ('crush-device-class' , crush_device_class ) != crush_device_class or \
208
+ current_profile .get ('directory' , directory ) != directory or \
209
+ current_profile .get ('plugin' , plugin ) != plugin : # noqa: E501
190
210
rc , cmd , out , err = exec_command (module ,
191
211
create_profile (module ,
192
212
name ,
193
213
k ,
194
214
m ,
195
215
stripe_unit ,
196
216
crush_device_class , # noqa: E501
217
+ directory ,
218
+ plugin ,
197
219
force = True )) # noqa: E501
198
220
changed = True
199
221
else :
@@ -203,7 +225,9 @@ def run_module():
203
225
k ,
204
226
m ,
205
227
stripe_unit , # noqa: E501
206
- crush_device_class )) # noqa: E501
228
+ crush_device_class , # noqa: E501
229
+ directory ,
230
+ plugin ))
207
231
if rc == 0 :
208
232
changed = True
209
233
0 commit comments