From f3a61dd93d10e987f6ccbdd0ac50f6033e56b2e2 Mon Sep 17 00:00:00 2001 From: Tim Rupp Date: Fri, 24 Aug 2018 14:38:41 -0400 Subject: [PATCH] Adds aliases parameter to gtm wide ip (#44652) This parameter can assign aliases to a wide ip. --- .../modules/network/f5/bigip_gtm_wide_ip.py | 61 +++++++++++++++++-- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py b/lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py index 2ed07d59af3..69d33e176a8 100644 --- a/lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py +++ b/lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py @@ -92,11 +92,18 @@ options: - The system uses this number with the Ratio load balancing method. version_added: 2.5 irules: - version_added: 2.6 description: - List of rules to be applied. - If you want to remove all existing iRules, specify a single empty value; C(""). See the documentation for an example. + version_added: 2.6 + aliases: + description: + - Specifies alternate domain names for the web site content you are load + balancing. + - You can use the same wildcard characters for aliases as you can for actual + wide IP names. + version_added: 2.7 extends_documentation_fragment: f5 author: - Tim Rupp (@caphrim007) @@ -174,6 +181,11 @@ irules: returned: changed type: list sample: ['/Common/irule1', '/Common/irule2'] +aliases: + description: Aliases set on the Wide IP. + returned: changed + type: list + sample: ['alias1.foo.com', '*.wildcard.domain'] ''' from ansible.module_utils.basic import AnsibleModule @@ -217,15 +229,31 @@ class Parameters(AnsibleF5Parameters): } updatables = [ - 'pool_lb_method', 'state', 'pools', 'irules', 'enabled', 'disabled' + 'pool_lb_method', + 'state', + 'pools', + 'irules', + 'enabled', + 'disabled', + 'aliases', ] returnables = [ - 'name', 'pool_lb_method', 'state', 'pools', 'irules' + 'name', + 'pool_lb_method', + 'state', + 'pools', + 'irules', + 'aliases', ] api_attributes = [ - 'poolLbMode', 'enabled', 'disabled', 'pools', 'rules' + 'poolLbMode', + 'enabled', + 'disabled', + 'pools', + 'rules', + 'aliases', ] @@ -358,6 +386,15 @@ class ModuleParameters(Parameters): results.append(result) return results + @property + def aliases(self): + if self._values['aliases'] is None: + return None + if len(self._values['aliases']) == 1 and self._values['aliases'][0] == '': + return '' + self._values['aliases'].sort() + return self._values['aliases'] + class Changes(Parameters): def to_return(self): @@ -458,6 +495,19 @@ class Difference(object): if sorted(set(self.want.irules)) != sorted(set(self.have.irules)): return self.want.irules + @property + def aliases(self): + if self.want.aliases is None: + return None + if self.want.aliases == '' and self.have.aliases is None: + return None + if self.want.aliases == '' and len(self.have.aliases) > 0: + return [] + if self.have.aliases is None: + return self.want.aliases + if set(self.want.aliases) != set(self.have.aliases): + return self.want.aliases + class ModuleManager(object): def __init__(self, *args, **kwargs): @@ -748,6 +798,9 @@ class ArgumentSpec(object): irules=dict( type='list', ), + aliases=dict( + type='list' + ) ) self.argument_spec = {} self.argument_spec.update(f5_argument_spec)