diff --git a/lib/ansible/modules/network/f5/bigip_virtual_server.py b/lib/ansible/modules/network/f5/bigip_virtual_server.py index a36b239b70..dec6eb3f11 100644 --- a/lib/ansible/modules/network/f5/bigip_virtual_server.py +++ b/lib/ansible/modules/network/f5/bigip_virtual_server.py @@ -1,7 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- # -# Copyright (c) 2017 F5 Networks Inc. +# Copyright: (c) 2017, F5 Networks Inc. # GNU General Public License v3.0 (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function @@ -292,6 +292,7 @@ options: - When C(type) is C(dhcp), this module will force the C(ip_protocol) parameter to be C(17) (UDP). choices: - ah + - any - bna - esp - etherip @@ -629,6 +630,7 @@ security_log_profiles: sample: ['/Common/profile1', '/Common/profile2'] ''' +import os import re from ansible.module_utils.basic import AnsibleModule @@ -880,6 +882,19 @@ class Parameters(AnsibleF5Parameters): "Specified ip_protocol was neither a number nor in the list of common protocols." ) + @property + def source(self): + if self._values['source'] is None: + return None + try: + addr = ip_interface(u'{0}'.format(self._values['source'])) + result = '{0}/{1}'.format(str(addr.ip), addr.network.prefixlen) + return result + except ValueError: + raise F5ModuleError( + "The source IP address must be specified in CIDR format: address/prefix" + ) + @property def has_message_routing_profiles(self): if self.profiles is None: @@ -1055,19 +1070,6 @@ class ApiParameters(Parameters): result = self._format_destination(destination.ip, destination.port, destination.route_domain) return result - @property - def source(self): - if self._values['source'] is None: - return None - try: - addr = ip_interface(u'{0}'.format(self._values['source'])) - result = '{0}/{1}'.format(str(addr.ip), addr.network.prefixlen) - return result - except ValueError: - raise F5ModuleError( - "The source IP address must be specified in CIDR format: address/prefix" - ) - @property def destination_tuple(self): Destination = namedtuple('Destination', ['ip', 'port', 'route_domain']) @@ -1397,19 +1399,6 @@ class ModuleParameters(Parameters): result = Destination(ip=addr, port=self.port, route_domain=self.route_domain) return result - @property - def source(self): - if self._values['source'] is None: - return None - try: - addr = ip_interface(u'{0}'.format(self._values['source'])) - result = '{0}/{1}'.format(str(addr.ip), addr.network.prefixlen) - return result - except ValueError: - raise F5ModuleError( - "The source IP address must be specified in CIDR format: address/prefix" - ) - @property def port(self): if self._values['port'] is None: @@ -1451,9 +1440,10 @@ class ModuleParameters(Parameters): tmp['fullPath'] = fq_name(self.partition, tmp['name']) self._handle_clientssl_profile_nuances(tmp) else: - tmp['name'] = profile + full_path = fq_name(self.partition, profile) + tmp['name'] = os.path.basename(profile) tmp['context'] = 'all' - tmp['fullPath'] = fq_name(self.partition, tmp['name']) + tmp['fullPath'] = full_path self._handle_clientssl_profile_nuances(tmp) result.append(tmp) mutually_exclusive = [x['name'] for x in result if x in self.profiles_mutex] @@ -2128,7 +2118,7 @@ class VirtualServerValidator(object): # - udp # - sctp # - all protocols - if self.want.ip_protocol not in [6, 17, 132, 'all']: + if self.want.ip_protocol not in [6, 17, 132, 'all', 'any']: raise F5ModuleError( "The 'message-routing' server type does not support the specified 'ip_protocol'." ) @@ -2870,7 +2860,7 @@ class ModuleManager(object): return True return False - def exists(self): + def exists(self): # lgtm [py/similar-function] uri = "https://{0}:{1}/mgmt/tm/ltm/virtual/{2}".format( self.client.provider['server'], self.client.provider['server_port'], @@ -3029,7 +3019,7 @@ class ArgumentSpec(object): port_translation=dict(type='bool'), ip_protocol=dict( choices=[ - 'ah', 'bna', 'esp', 'etherip', 'gre', 'icmp', 'ipencap', 'ipv6', + 'ah', 'any', 'bna', 'esp', 'etherip', 'gre', 'icmp', 'ipencap', 'ipv6', 'ipv6-auth', 'ipv6-crypt', 'ipv6-icmp', 'isp-ip', 'mux', 'ospf', 'sctp', 'tcp', 'udp', 'udplite' ]