52
52
- A virtual network interface (vip)
53
53
- The network interfaces must have a I(service) value of I(data)
54
54
type: str
55
+ service:
56
+ description:
57
+ - The service utilizing the DNS configuration.
58
+ - Only aplicable when creating a new DNS configuration.
59
+ type: str
60
+ choices: [ management, data ]
61
+ default: data
55
62
extends_documentation_fragment:
56
63
- purestorage.flashblade.purestorage.fb
57
64
"""
88
95
89
96
HAS_PURESTORAGE = True
90
97
try :
91
- from pypureclient .flashblade import Dns , DnsPatch , DnsPost , ReferenceNoId
98
+ from pypureclient .flashblade import Dns , DnsPatch , DnsPost , Reference
92
99
except ImportError :
93
100
HAS_PURESTORAGE = False
94
101
@@ -169,30 +176,28 @@ def update_multi_dns(module, blade):
169
176
if module .params ["domain" ] and current_dns .domain != module .params ["domain" ]:
170
177
new_dns .domain = module .params ["domain" ]
171
178
changed = True
172
- if module .params ["service" ] and current_dns .services != [module .params ["service" ]]:
173
- module .fail_json (msg = "Changing service type is not permitted" )
174
179
if module .params ["nameservers" ] and sorted (current_dns .nameservers ) != sorted (
175
180
module .params ["nameservers" ]
176
181
):
177
182
new_dns .nameservers = module .params ["nameservers" ]
178
183
changed = True
179
184
if (module .params ["source" ] or module .params ["source" ] == "" ) and getattr (
180
- current_dns .source , "name" , ""
185
+ current_dns .sources [ 0 ] , "name" , ""
181
186
) != module .params ["source" ]:
182
- new_dns .source .name = module .params ["source" ]
187
+ new_dns .sources [ 0 ] .name = module .params ["source" ]
183
188
changed = True
184
189
if changed and not module .check_mode :
185
190
res = blade .patch_dns (
186
191
names = [module .params ["name" ]],
187
192
dns = Dns (
188
193
domain = new_dns .domain ,
189
194
nameservers = new_dns .nameservers ,
190
- source = ReferenceNoId ( module .params ["source" ]),
195
+ sources = [ Reference ( name = module .params ["source" ])] ,
191
196
),
192
197
)
193
198
if res .status_code != 200 :
194
199
module .fail_json (
195
- msg = "Update to DNS service {0} failed. Error: {1}" .format (
200
+ msg = "Update to DNS configuration {0} failed. Error: {1}" .format (
196
201
module .params ["name" ], res .errors [0 ].message
197
202
)
198
203
)
@@ -203,16 +208,7 @@ def delete_multi_dns(module, blade):
203
208
"""Delete a DNS configuration"""
204
209
changed = True
205
210
if module .params ["name" ] == "management" :
206
- res = blade .patch_dns (
207
- names = [module .params ["name" ]],
208
- dns = DnsPatch (domain = "" , nameservers = []),
209
- )
210
- if res .status_code != 200 :
211
- module .fail_json (
212
- msg = "Management DNS configuration not deleted. Error: {0}" .format (
213
- res .errors [0 ].message
214
- )
215
- )
211
+ module .fail_json (msg = "Management DNS configuration cannot be deleted" )
216
212
else :
217
213
if not module .check_mode :
218
214
res = blade .delete_dns (names = [module .params ["name" ]])
@@ -229,15 +225,15 @@ def create_multi_dns(module, blade):
229
225
"""Create a DNS configuration"""
230
226
changed = True
231
227
if not module .check_mode :
232
- if module .params ["service" ] == "file " :
228
+ if module .params ["service" ] == "data " :
233
229
if module .params ["source" ]:
234
230
res = blade .post_dns (
235
231
names = [module .params ["name" ]],
236
232
dns = DnsPost (
237
233
services = [module .params ["service" ]],
238
234
domain = module .params ["domain" ],
239
235
nameservers = module .params ["nameservers" ],
240
- source = ReferenceNoId ( module .params ["source" ].lower ()),
236
+ sources = [ Reference ( name = module .params ["source" ].lower ())] ,
241
237
),
242
238
)
243
239
else :
@@ -250,11 +246,13 @@ def create_multi_dns(module, blade):
250
246
),
251
247
)
252
248
else :
253
- res = blade .create_dns (
249
+ res = blade .post_dns (
254
250
names = [module .params ["name" ]],
255
- services = [module .params ["service" ]],
256
- domain = module .params ["domain" ],
257
- nameservers = module .params ["nameservers" ],
251
+ dns = DnsPost (
252
+ services = [module .params ["service" ]],
253
+ domain = module .params ["domain" ],
254
+ nameservers = module .params ["nameservers" ],
255
+ ),
258
256
)
259
257
if res .status_code != 200 :
260
258
module .fail_json (
@@ -276,6 +274,7 @@ def main():
276
274
domain = dict (type = "str" ),
277
275
source = dict (type = "str" ),
278
276
nameservers = dict (type = "list" , elements = "str" ),
277
+ service = dict (type = "str" , choices = ["management" , "data" ], default = "data" ),
279
278
)
280
279
)
281
280
@@ -293,16 +292,18 @@ def main():
293
292
for config in range (0 , len (configs )):
294
293
if configs [config ].name == module .params ["name" ]:
295
294
exists = True
296
- if module .params ["name" ] != "management" and not exists :
297
- module .warn ("Overriding configuration name to management" )
298
- module .params ["name" ] = "management"
299
295
if module .params ["source" ] and not _get_source (module , blade ):
300
296
module .fail_json (
301
297
msg = "Specified VIP {0} does not exist." .format (module .params ["source" ])
302
298
)
303
299
if state == "present" and exists :
304
300
update_multi_dns (module , blade )
305
301
elif state == "present" and not exists :
302
+ if not module .params ["nameservers" ] and not module .params ["domain" ]:
303
+ module .fail_json (
304
+ msg = "DNS configuration must have at least one domain "
305
+ "or nameserver defined."
306
+ )
306
307
create_multi_dns (module , blade )
307
308
elif exists and state == "absent" :
308
309
delete_multi_dns (module , blade )
@@ -314,7 +315,8 @@ def main():
314
315
elif state == "present" :
315
316
if not module .params ["domain" ] or not module .params ["nameservers" ]:
316
317
module .fail_json (
317
- msg = "`domain` and `nameservers` are required for DNS configuration"
318
+ msg = "DNS configuration must have at least one domain "
319
+ "or nameserver defined."
318
320
)
319
321
create_dns (module , blade )
320
322
else :
0 commit comments