From 62feb1821083d4959d65e815ee7306b41766a1c1 Mon Sep 17 00:00:00 2001 From: Wojciech Wypior Date: Thu, 22 Aug 2019 05:20:50 +0100 Subject: [PATCH] added route domain support (#61077) added diff functionality --- .../network/f5/bigip_snat_translation.py | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/lib/ansible/modules/network/f5/bigip_snat_translation.py b/lib/ansible/modules/network/f5/bigip_snat_translation.py index e1f297c4e9d..e88199f0baa 100644 --- a/lib/ansible/modules/network/f5/bigip_snat_translation.py +++ b/lib/ansible/modules/network/f5/bigip_snat_translation.py @@ -40,7 +40,7 @@ options: type: int description: description: - - Description of snat-translation. c(none or '') will set to default description of null. + - Description of snat-translation. C(none or '') will set to default description of null. type: str ip_idle_timeout: description: @@ -58,7 +58,7 @@ options: partition: description: - Device partition to manage resources on. - - Required with state c(absent) when partiition other than Common used. + - Required with state C(absent) when partition other than Common used. type: str state: description: @@ -98,6 +98,7 @@ options: extends_documentation_fragment: f5 author: - Greg Crosby (@crosbygw) + - Wojciech Wypior (@wojtek0806) ''' EXAMPLES = r''' @@ -245,7 +246,7 @@ udp_idle_timeout: type: str sample: indifinite ''' -import os + from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.basic import env_fallback @@ -362,19 +363,24 @@ class ModuleParameters(Parameters): if 0 <= int(limit) <= 65535: return int(limit) raise F5ModuleError( - "Valid 'maximum_age' must be in range 0 - 65535." + "Valid 'connection_limit' must be in range 0 - 65535." ) @property def address(self): if self._values['address'] is None: return None - if is_valid_ip(self._values['address']): - return compress_address(self._values['address']) + if len(self._values['address'].split('%')) > 1: + address, rd = self._values['address'].split('%') + if is_valid_ip(address): + result = '{0}%{1}'.format(compress_address(address), rd) + return result else: - raise F5ModuleError( - "The provided 'address' is not a valid IP address" - ) + if is_valid_ip(self._values['address']): + return self._values['address'] + raise F5ModuleError( + "The provided address: {0} is not a valid IP address".format(self._values['address']) + ) @property def arp(self): @@ -564,8 +570,25 @@ class ModuleManager(object): reportable = ReportableChanges(params=self.changes.to_return()) changes = reportable.to_return() result.update(**changes) + + if self.module._diff and self.have: + result['diff'] = self.make_diff() + result.update(dict(changed=changed)) self._announce_deprecations(result) + + return result + + def _grab_attr(self, item): + result = dict() + updatables = Parameters.updatables + for k in updatables: + if getattr(item, k) is not None: + result[k] = getattr(item, k) + return result + + def make_diff(self): + result = dict(before=self._grab_attr(self.have), after=self._grab_attr(self.want)) return result def present(self):