mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add check_type option, to allow defaults type changes (#8173)
* Add check_type option, to allow defaults type changes * Add changelog fragment * Changelog fragments are yaml, not markdown * Update changelogs/fragments/8173-osx_defaults-check_type.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/osx_defaults.py Co-authored-by: Felix Fontein <felix@fontein.de> --------- Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
610ecf9bf5
commit
bc2ff24f74
2 changed files with 16 additions and 4 deletions
2
changelogs/fragments/8173-osx_defaults-check_type.yml
Normal file
2
changelogs/fragments/8173-osx_defaults-check_type.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- osx_defaults - add option ``check_types`` to enable changing the type of existing defaults on the fly (https://github.com/ansible-collections/community.general/pull/8173).
|
|
@ -50,6 +50,13 @@ options:
|
|||
type: str
|
||||
choices: [ array, bool, boolean, date, float, int, integer, string ]
|
||||
default: string
|
||||
check_type:
|
||||
description:
|
||||
- Checks if the type of the provided O(value) matches the type of an existing default.
|
||||
- If the types do not match, raises an error.
|
||||
type: bool
|
||||
default: true
|
||||
version_added: 8.6.0
|
||||
array_add:
|
||||
description:
|
||||
- Add new elements to the array for a key which has an array as its value.
|
||||
|
@ -158,6 +165,7 @@ class OSXDefaults(object):
|
|||
self.domain = module.params['domain']
|
||||
self.host = module.params['host']
|
||||
self.key = module.params['key']
|
||||
self.check_type = module.params['check_type']
|
||||
self.type = module.params['type']
|
||||
self.array_add = module.params['array_add']
|
||||
self.value = module.params['value']
|
||||
|
@ -349,10 +357,11 @@ class OSXDefaults(object):
|
|||
self.delete()
|
||||
return True
|
||||
|
||||
# There is a type mismatch! Given type does not match the type in defaults
|
||||
value_type = type(self.value)
|
||||
if self.current_value is not None and not isinstance(self.current_value, value_type):
|
||||
raise OSXDefaultsException("Type mismatch. Type in defaults: %s" % type(self.current_value).__name__)
|
||||
# Check if there is a type mismatch, e.g. given type does not match the type in defaults
|
||||
if self.check_type:
|
||||
value_type = type(self.value)
|
||||
if self.current_value is not None and not isinstance(self.current_value, value_type):
|
||||
raise OSXDefaultsException("Type mismatch. Type in defaults: %s" % type(self.current_value).__name__)
|
||||
|
||||
# Current value matches the given value. Nothing need to be done. Arrays need extra care
|
||||
if self.type == "array" and self.current_value is not None and not self.array_add and \
|
||||
|
@ -383,6 +392,7 @@ def main():
|
|||
domain=dict(type='str', default='NSGlobalDomain'),
|
||||
host=dict(type='str'),
|
||||
key=dict(type='str', no_log=False),
|
||||
check_type=dict(type='bool', default=True),
|
||||
type=dict(type='str', default='string', choices=['array', 'bool', 'boolean', 'date', 'float', 'int', 'integer', 'string']),
|
||||
array_add=dict(type='bool', default=False),
|
||||
value=dict(type='raw'),
|
||||
|
|
Loading…
Reference in a new issue