diff --git a/lib/ansible/modules/network/f5/bigip_snat_pool.py b/lib/ansible/modules/network/f5/bigip_snat_pool.py index 78067dfb20f..e0c8657e77b 100644 --- a/lib/ansible/modules/network/f5/bigip_snat_pool.py +++ b/lib/ansible/modules/network/f5/bigip_snat_pool.py @@ -27,6 +27,12 @@ options: type: list aliases: - member + description: + description: + - A general description of the SNAT pool, provided by the user for their + benefit. It is optional. + type: str + version_added: 2.9 name: description: - The name of the SNAT pool. @@ -86,6 +92,20 @@ EXAMPLES = r''' user: admin password: secret delegate_to: localhost + +- name: Add the SNAT pool 'my-snat-pool' with a description + bigip_snat_pool: + name: my-snat-pool + state: present + members: + - 10.10.10.10 + - 20.20.20.20 + description: A SNAT pool description + provider: + server: lb.mydomain.com + user: admin + password: secret + delegate_to: localhost ''' RETURN = r''' @@ -110,6 +130,7 @@ try: from library.module_utils.network.f5.common import f5_argument_spec from library.module_utils.network.f5.common import transform_name from library.module_utils.network.f5.ipaddress import is_valid_ip + from library.module_utils.network.f5.compare import cmp_str_with_none except ImportError: from ansible.module_utils.network.f5.bigip import F5RestClient from ansible.module_utils.network.f5.common import F5ModuleError @@ -118,21 +139,25 @@ except ImportError: from ansible.module_utils.network.f5.common import f5_argument_spec from ansible.module_utils.network.f5.common import transform_name from ansible.module_utils.network.f5.ipaddress import is_valid_ip + from ansible.module_utils.network.f5.compare import cmp_str_with_none class Parameters(AnsibleF5Parameters): api_map = {} updatables = [ - 'members' + 'members', + 'description', ] returnables = [ - 'members' + 'members', + 'description', ] api_attributes = [ - 'members' + 'members', + 'description', ] @@ -165,6 +190,14 @@ class ModuleParameters(Parameters): result.update([address]) return list(result) + @property + def description(self): + if self._values['description'] is None: + return None + elif self._values['description'] in ['none', '']: + return '' + return self._values['description'] + class Changes(Parameters): def to_return(self): @@ -216,6 +249,11 @@ class Difference(object): result = list(set(self.want.members)) return result + @property + def description(self): + result = cmp_str_with_none(self.want.description, self.have.description) + return result + class ModuleManager(object): def __init__(self, *args, **kwargs): @@ -416,6 +454,7 @@ class ArgumentSpec(object): type='list', aliases=['member'] ), + description=dict(), state=dict( default='present', choices=['absent', 'present'] diff --git a/test/units/modules/network/f5/test_bigip_snat_pool.py b/test/units/modules/network/f5/test_bigip_snat_pool.py index 01d1883e26b..2980beca8ec 100644 --- a/test/units/modules/network/f5/test_bigip_snat_pool.py +++ b/test/units/modules/network/f5/test_bigip_snat_pool.py @@ -70,11 +70,13 @@ class TestParameters(unittest.TestCase): name='my-snat-pool', state='present', members=['10.10.10.10', '20.20.20.20'], + description='A SNAT pool description', partition='Common' ) p = ModuleParameters(params=args) assert p.name == 'my-snat-pool' assert p.state == 'present' + assert p.description == 'A SNAT pool description' assert len(p.members) == 2 assert '/Common/10.10.10.10' in p.members assert '/Common/20.20.20.20' in p.members