Fixed a bug in AnsibleFreeIPAParams

When accessing an instance of AnsibleFreeIPAParams with .get the obj was
by-passing the call to _afm_convert which was the primaty reason why it
was created.

Also the class now extends Mapping instead of dict.
This commit is contained in:
Sergio Oliveira Campos
2020-03-26 13:10:54 -03:00
parent d7af454d77
commit 2205907220

View File

@@ -52,6 +52,11 @@ import socket
import base64
import six
try:
from collections.abc import Mapping # noqa
except ImportError:
from collections import Mapping # noqa
if six.PY3:
unicode = str
@@ -351,19 +356,28 @@ def is_ipv6_addr(ipaddr):
return True
class AnsibleFreeIPAParams(dict):
class AnsibleFreeIPAParams(Mapping):
def __init__(self, ansible_module):
self.update(ansible_module.params)
self.mapping = ansible_module.params
self.ansible_module = ansible_module
def __getitem__(self, key):
param = self.mapping[key]
if param is not None:
return _afm_convert(param)
def __iter__(self):
return iter(self.mapping)
def __len__(self):
return len(self.mapping)
@property
def names(self):
return self.name
def __getattr__(self, name):
param = self.get(name)
if param is not None:
return _afm_convert(param)
return self.get(name)
class FreeIPABaseModule(AnsibleModule):