BIGIP: Bugfix.multiple modules 3 (#53969)

* Moving comparision functions to compare.py from common.py

* Refactors main() function and module manager in multiple modules in line with recent changes
Adds variable types to docs
Refactors unit tests to remove deprecated parameters
pull/54015/head
Wojciech Wypior 7 years ago committed by Tim Rupp
parent 284565c39e
commit 9744ef80a0

@ -23,39 +23,46 @@ options:
name:
description:
- Specifies the name of the monitor.
type: str
required: True
parent:
description:
- The parent template of this monitor template. Once this value has
been set, it cannot be changed. By default, this value is the C(http)
parent on the C(Common) partition.
type: str
default: "/Common/external"
arguments:
description:
- Specifies any command-line arguments that the script requires.
type: str
ip:
description:
- IP address part of the IP/port definition. If this parameter is not
provided when creating a new monitor, then the default value will be
'*'.
type: str
port:
description:
- Port address part of the IP/port definition. If this parameter is not
provided when creating a new monitor, then the default value will be
'*'. Note that if specifying an IP address, a value between 1 and 65535
must be specified.
type: str
external_program:
description:
- Specifies the name of the file for the monitor to use. In order to reference
a file, you must first import it using options on the System > File Management > External
Monitor Program File List > Import screen. The BIG-IP system automatically
places the file in the proper location on the file system.
type: str
interval:
description:
- The interval specifying how frequently the monitor instance of this
template will run. If this parameter is not provided when creating
a new monitor, then the default value will be 30. This value B(must)
be less than the C(timeout) value.
type: int
timeout:
description:
- The number of seconds in which the node or service must respond to
@ -65,22 +72,26 @@ options:
number to any number you want, however, it should be 3 times the
interval number of seconds plus 1 second. If this parameter is not
provided when creating a new monitor, then the default value will be 120.
type: int
variables:
description:
- Specifies any variables that the script requires.
- Note that double quotes in values will be suppressed.
type: dict
partition:
description:
- Device partition to manage resources on.
type: str
default: Common
state:
description:
- When C(present), ensures that the monitor exists.
- When C(absent), ensures the monitor is removed.
default: present
type: str
choices:
- present
- absent
default: present
extends_documentation_fragment: f5
author:
- Tim Rupp (@caphrim007)
@ -162,26 +173,20 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
from library.module_utils.network.f5.common import fq_name
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.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import compare_dictionary
from library.module_utils.network.f5.compare import compare_dictionary
from library.module_utils.network.f5.icontrol import module_provisioned
from library.module_utils.network.f5.ipaddress import is_valid_ip
except ImportError:
from ansible.module_utils.network.f5.bigip import F5RestClient
from ansible.module_utils.network.f5.common import F5ModuleError
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import fq_name
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.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.common import compare_dictionary
from ansible.module_utils.network.f5.compare import compare_dictionary
from ansible.module_utils.network.f5.icontrol import module_provisioned
from ansible.module_utils.network.f5.ipaddress import is_valid_ip
@ -429,7 +434,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.get('module', None)
self.client = kwargs.get('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -689,16 +694,12 @@ def main():
supports_check_mode=spec.supports_check_mode,
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -25,15 +25,18 @@ options:
name:
description:
- Specifies the name of the virtual server.
type: str
version_added: 2.6
server_name:
description:
- Specifies the name of the server that the virtual server is associated with.
type: str
version_added: 2.6
address:
description:
- Specifies the IP Address of the virtual server.
- When creating a new GTM virtual server, this parameter is required.
type: str
version_added: 2.6
port:
description:
@ -42,12 +45,14 @@ options:
- To specify all ports, use an C(*).
- When creating a new GTM virtual server, if this parameter is not specified, a
default of C(*) will be used.
type: int
translation_address:
description:
- Specifies the translation IP address for the virtual server.
- To unset this parameter, provide an empty string (C("")) as a value.
- When creating a new GTM virtual server, if this parameter is not specified, a
default of C(::) will be used.
type: str
version_added: 2.6
translation_port:
description:
@ -55,24 +60,31 @@ options:
- To specify all ports, use an C(*).
- When creating a new GTM virtual server, if this parameter is not specified, a
default of C(*) will be used.
type: str
version_added: 2.6
availability_requirements:
description:
- Specifies, if you activate more than one health monitor, the number of health
monitors that must receive successful responses in order for the link to be
considered available.
type: dict
suboptions:
type:
description:
- Monitor rule type when C(monitors) is specified.
- When creating a new virtual, if this value is not specified, the default of 'all' will be used.
choices: ['all', 'at_least', 'require']
type: str
choices:
- all
- at_least
- require
at_least:
description:
- Specifies the minimum number of active health monitors that must be successful
before the link is considered up.
- This parameter is only relevant when a C(type) of C(at_least) is used.
- This parameter will be ignored if a type of either C(all) or C(require) is used.
type: int
number_of_probes:
description:
- Specifies the minimum number of probes that must succeed for this server to be declared up.
@ -81,6 +93,7 @@ options:
- The value of this parameter should always be B(lower) than, or B(equal to), the value of C(number_of_probers).
- This parameter is only relevant when a C(type) of C(require) is used.
- This parameter will be ignored if a type of either C(all) or C(at_least) is used.
type: int
number_of_probers:
description:
- Specifies the number of probers that should be used when running probes.
@ -89,30 +102,36 @@ options:
- The value of this parameter should always be B(higher) than, or B(equal to), the value of C(number_of_probers).
- This parameter is only relevant when a C(type) of C(require) is used.
- This parameter will be ignored if a type of either C(all) or C(at_least) is used.
type: int
version_added: 2.6
monitors:
description:
- Specifies the health monitors that the system currently uses to monitor this resource.
- When C(availability_requirements.type) is C(require), you may only have a single monitor in the
C(monitors) list.
type: list
version_added: 2.6
virtual_server_dependencies:
description:
- Specifies the virtual servers on which the current virtual server depends.
- If any of the specified servers are unavailable, the current virtual server is also listed as unavailable.
type: list
suboptions:
server:
description:
- Server which the dependant virtual server is part of.
type: str
required: True
virtual_server:
description:
- Virtual server to depend on.
type: str
required: True
version_added: 2.6
link:
description:
- Specifies a link to assign to the server or virtual server.
type: str
version_added: 2.6
limits:
description:
@ -123,6 +142,7 @@ options:
threshold limit requirement, the system marks the entire server as unavailable and directs load-balancing
traffic to another resource.
- The limit settings available depend on the type of server.
type: dict
suboptions:
bits_enabled:
description:
@ -143,30 +163,35 @@ options:
description:
- Specifies the maximum allowable data throughput rate, in bits per second, for the virtual servers on the server.
- If the network traffic volume exceeds this limit, the system marks the server as unavailable.
type: int
packets_limit:
description:
- Specifies the maximum allowable data transfer rate, in packets per second, for the virtual servers on the server.
- If the network traffic volume exceeds this limit, the system marks the server as unavailable.
type: int
connections_limit:
description:
- Specifies the maximum number of concurrent connections, combined, for all of the virtual servers on the server.
- If the connections exceed this limit, the system marks the server as unavailable.
type: int
version_added: 2.6
partition:
description:
- Device partition to manage resources on.
type: str
default: Common
version_added: 2.6
state:
description:
- When C(present), ensures that the resource exists.
- When C(absent), ensures the resource is removed.
default: present
type: str
choices:
- present
- absent
- enabled
- disabled
default: present
extends_documentation_fragment: f5
author:
- Tim Rupp (@caphrim007)
@ -250,13 +275,10 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
from library.module_utils.network.f5.common import fq_name
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.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import compare_complex_list
from library.module_utils.network.f5.compare import compare_complex_list
from library.module_utils.network.f5.icontrol import module_provisioned
from library.module_utils.network.f5.ipaddress import is_valid_ip
from library.module_utils.network.f5.ipaddress import validate_ip_v6_address
@ -265,13 +287,10 @@ except ImportError:
from ansible.module_utils.network.f5.bigip import F5RestClient
from ansible.module_utils.network.f5.common import F5ModuleError
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import fq_name
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.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.common import compare_complex_list
from ansible.module_utils.network.f5.compare import compare_complex_list
from ansible.module_utils.network.f5.icontrol import module_provisioned
from ansible.module_utils.network.f5.ipaddress import is_valid_ip
from ansible.module_utils.network.f5.ipaddress import validate_ip_v6_address
@ -886,7 +905,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.get('module', None)
self.client = kwargs.get('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -1165,16 +1184,12 @@ def main():
supports_check_mode=spec.supports_check_mode,
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -23,43 +23,51 @@ options:
name:
description:
- Specifies the name of the monitor.
type: str
required: True
description:
description:
- The description of the monitor.
type: str
version_added: 2.7
parent:
description:
- The parent template of this monitor template. Once this value has
been set, it cannot be changed. By default, this value is the C(http)
parent on the C(Common) partition.
type: str
default: /Common/external
arguments:
description:
- Specifies any command-line arguments that the script requires.
type: str
ip:
description:
- IP address part of the IP/port definition. If this parameter is not
provided when creating a new monitor, then the default value will be
'*'.
type: str
port:
description:
- Port address part of the IP/port definition. If this parameter is not
provided when creating a new monitor, then the default value will be
'*'. Note that if specifying an IP address, a value between 1 and 65535
must be specified.
type: str
external_program:
description:
- Specifies the name of the file for the monitor to use. In order to reference
a file, you must first import it using options on the System > File Management > External
Monitor Program File List > Import screen. The BIG-IP system automatically
places the file in the proper location on the file system.
type: str
interval:
description:
- The interval specifying how frequently the monitor instance of this
template will run. If this parameter is not provided when creating
a new monitor, then the default value will be 5. This value B(must)
be less than the C(timeout) value.
type: int
timeout:
description:
- The number of seconds in which the node or service must respond to
@ -71,22 +79,26 @@ options:
3 times the interval number of seconds plus 1 second.
- If this parameter is not provided when creating a new monitor, then the
default value will be C(16).
type: int
variables:
description:
- Specifies any variables that the script requires.
- Note that double quotes in values will be suppressed.
type: dict
partition:
description:
- Device partition to manage resources on.
type: str
default: Common
state:
description:
- When C(present), ensures that the monitor exists.
- When C(absent), ensures the monitor is removed.
default: present
type: str
choices:
- present
- absent
default: present
extends_documentation_fragment: f5
author:
- Tim Rupp (@caphrim007)
@ -172,26 +184,20 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
from library.module_utils.network.f5.common import fq_name
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.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import compare_dictionary
from library.module_utils.network.f5.compare import compare_dictionary
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
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import fq_name
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.common import compare_dictionary
from ansible.module_utils.network.f5.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.compare import compare_dictionary
from ansible.module_utils.network.f5.ipaddress import is_valid_ip
from ansible.module_utils.network.f5.compare import cmp_str_with_none
@ -470,7 +476,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.get('module', None)
self.client = kwargs.get('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -726,16 +732,12 @@ def main():
supports_check_mode=spec.supports_check_mode,
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -24,6 +24,7 @@ options:
description:
- Specifies the IP address, or hostname, for the remote system to
which the system sends log messages.
type: str
required: True
name:
description:
@ -31,6 +32,7 @@ options:
- This option is required when multiple C(remote_host) with the same IP
or hostname are present on the device.
- If C(name) is not provided C(remote_host) is used by default.
type: str
version_added: 2.8
remote_port:
description:
@ -38,21 +40,24 @@ options:
remote logging server.
- When creating a remote syslog, if this parameter is not specified, the
default value C(514) is used.
type: str
local_ip:
description:
- Specifies the local IP address of the system that is logging. To
provide no local IP, specify the value C(none).
- When creating a remote syslog, if this parameter is not specified, the
default value C(none) is used.
type: str
state:
description:
- When C(present), guarantees that the remote syslog exists with the provided
attributes.
- When C(absent), removes the remote syslog from the system.
default: present
type: str
choices:
- absent
- present
default: present
extends_documentation_fragment: f5
author:
- Tim Rupp (@caphrim007)
@ -100,11 +105,8 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
from library.module_utils.network.f5.common import f5_argument_spec
from library.module_utils.network.f5.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import compare_dictionary
from library.module_utils.network.f5.compare import compare_dictionary
from library.module_utils.network.f5.common import is_valid_hostname
from library.module_utils.network.f5.common import fq_name
from library.module_utils.network.f5.ipaddress import is_valid_ip
@ -112,11 +114,8 @@ except ImportError:
from ansible.module_utils.network.f5.bigip import F5RestClient
from ansible.module_utils.network.f5.common import F5ModuleError
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import f5_argument_spec
from ansible.module_utils.network.f5.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.common import compare_dictionary
from ansible.module_utils.network.f5.compare import compare_dictionary
from ansible.module_utils.network.f5.common import is_valid_hostname
from ansible.module_utils.network.f5.common import fq_name
from ansible.module_utils.network.f5.ipaddress import is_valid_ip
@ -258,7 +257,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.pop('module', None)
self.client = kwargs.pop('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -458,16 +457,12 @@ def main():
supports_check_mode=spec.supports_check_mode
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -23,10 +23,12 @@ options:
name:
description:
- Specifies the name of the timer policy.
type: str
required: True
description:
description:
- Specifies descriptive text that identifies the timer policy.
type: str
rules:
description:
- Rules that you want assigned to the timer policy
@ -34,6 +36,7 @@ options:
name:
description:
- The name of the rule.
type: str
required: True
protocol:
description:
@ -45,6 +48,7 @@ options:
that match the flow, the flow matches all the other ip-protocol rules.
- When specifying rules, if this parameter is not specified, the default of
C(all-other) will be used.
type: str
choices:
- all-other
- ah
@ -72,6 +76,7 @@ options:
dash (-).
- This field is only available if you have selected the C(sctp), C(tcp), or
C(udp) protocol.
type: list
idle_timeout:
description:
- Specifies an idle timeout, in seconds, for protocol and port pairs that
@ -80,18 +85,22 @@ options:
the timer policy rule have no idle timeout.
- When specifying rules, if this parameter is not specified, the default of
C(unspecified) will be used.
type: str
type: list
partition:
description:
- Device partition to manage resources on.
type: str
default: Common
state:
description:
- When C(present), ensures that the resource exists.
- When C(absent), ensures the resource is removed.
default: present
type: str
choices:
- present
- absent
default: present
extends_documentation_fragment: f5
author:
- Tim Rupp (@caphrim007)
@ -150,23 +159,17 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
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.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import compare_complex_list
from library.module_utils.network.f5.compare import compare_complex_list
except ImportError:
from ansible.module_utils.network.f5.bigip import F5RestClient
from ansible.module_utils.network.f5.common import F5ModuleError
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import fq_name
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.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.common import compare_complex_list
from ansible.module_utils.network.f5.compare import compare_complex_list
class Parameters(AnsibleF5Parameters):
@ -375,7 +378,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.get('module', None)
self.client = kwargs.get('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -621,16 +624,12 @@ def main():
supports_check_mode=spec.supports_check_mode
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -23,6 +23,7 @@ options:
description:
description:
- The description to give to the VLAN.
type: str
tagged_interfaces:
description:
- Specifies a list of tagged interfaces and trunks that you want to
@ -30,6 +31,7 @@ options:
you want to assign a single interface or trunk to multiple VLANs.
- This parameter is mutually exclusive with the C(untagged_interfaces)
and C(interfaces) parameters.
type: list
aliases:
- tagged_interface
untagged_interfaces:
@ -38,33 +40,38 @@ options:
configure for the VLAN.
- This parameter is mutually exclusive with the C(tagged_interfaces)
and C(interfaces) parameters.
type: list
aliases:
- untagged_interface
name:
description:
- The VLAN to manage. If the special VLAN C(ALL) is specified with
the C(state) value of C(absent) then all VLANs will be removed.
type: str
required: True
state:
description:
- The state of the VLAN on the system. When C(present), guarantees
that the VLAN exists with the provided attributes. When C(absent),
removes the VLAN from the system.
default: present
type: str
choices:
- absent
- present
default: present
tag:
description:
- Tag number for the VLAN. The tag number can be any integer between 1
and 4094. The system automatically assigns a tag number if you do not
specify a value.
type: int
mtu:
description:
- Specifies the maximum transmission unit (MTU) for traffic on this VLAN.
When creating a new VLAN, if this parameter is not specified, the default
value used will be C(1500).
- This number must be between 576 to 9198.
type: int
version_added: 2.5
cmp_hash:
description:
@ -75,6 +82,7 @@ options:
specifies that the default CMP hash uses L4 ports.
- When creating a new VLAN, if this parameter is not specified, the default
of C(default) is used.
type: str
choices:
- default
- destination-address
@ -96,10 +104,11 @@ options:
- When creating a new VLAN, if this parameter is not specified, the default
of C(outer) is used.
- This parameter is not supported on Virtual Editions of BIG-IP.
version_added: 2.5
type: str
choices:
- inner
- outer
version_added: 2.5
dag_round_robin:
description:
- Specifies whether some of the stateless traffic on the VLAN should be
@ -108,11 +117,12 @@ options:
and so on.
- When creating a new VLAN, if this parameter is not specified, the default
of (no) is used.
version_added: 2.5
type: bool
version_added: 2.5
partition:
description:
- Device partition to manage resources on.
type: str
default: Common
version_added: 2.5
source_check:
@ -132,11 +142,13 @@ options:
description:
- Specifies the number of seconds that a system can run without detecting network
traffic on this VLAN before it takes the C(fail_safe_action).
type: int
version_added: 2.8
fail_safe_action:
description:
- Specifies the action that the system takes when it does not detect any traffic on
this VLAN, and the C(fail_safe_timeout) has expired.
type: str
choices:
- reboot
- restart-all
@ -145,10 +157,12 @@ options:
sflow_poll_interval:
description:
- Specifies the maximum interval in seconds between two pollings.
type: int
version_added: 2.8
sflow_sampling_rate:
description:
- Specifies the ratio of packets observed to the samples generated.
type: int
version_added: 2.8
interfaces:
description:
@ -160,12 +174,15 @@ options:
interface:
description:
- The name of the interface
type: str
tagging:
description:
- Whether the interface is C(tagged) or C(untagged).
type: str
choices:
- tagged
- untagged
type: list
version_added: 2.8
notes:
- Requires BIG-IP versions >= 12.0.0
@ -290,26 +307,20 @@ try:
from library.module_utils.network.f5.bigip import F5RestClient
from library.module_utils.network.f5.common import F5ModuleError
from library.module_utils.network.f5.common import AnsibleF5Parameters
from library.module_utils.network.f5.common import cleanup_tokens
from library.module_utils.network.f5.common import fq_name
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.common import exit_json
from library.module_utils.network.f5.common import fail_json
from library.module_utils.network.f5.common import flatten_boolean
from library.module_utils.network.f5.common import compare_complex_list
from library.module_utils.network.f5.compare import compare_complex_list
except ImportError:
from ansible.module_utils.network.f5.bigip import F5RestClient
from ansible.module_utils.network.f5.common import F5ModuleError
from ansible.module_utils.network.f5.common import AnsibleF5Parameters
from ansible.module_utils.network.f5.common import cleanup_tokens
from ansible.module_utils.network.f5.common import fq_name
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.common import exit_json
from ansible.module_utils.network.f5.common import fail_json
from ansible.module_utils.network.f5.common import flatten_boolean
from ansible.module_utils.network.f5.common import compare_complex_list
from ansible.module_utils.network.f5.compare import compare_complex_list
class Parameters(AnsibleF5Parameters):
@ -694,7 +705,7 @@ class Difference(object):
class ModuleManager(object):
def __init__(self, *args, **kwargs):
self.module = kwargs.get('module', None)
self.client = kwargs.get('client', None)
self.client = F5RestClient(**self.module.params)
self.want = ModuleParameters(params=self.module.params)
self.have = ApiParameters()
self.changes = UsableChanges()
@ -944,16 +955,12 @@ def main():
supports_check_mode=spec.supports_check_mode,
mutually_exclusive=spec.mutually_exclusive
)
client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client)
mm = ModuleManager(module=module)
results = mm.exec_module()
cleanup_tokens(client)
exit_json(module, results, client)
module.exit_json(**results)
except F5ModuleError as ex:
cleanup_tokens(client)
fail_json(module, ex, client)
module.fail_json(msg=str(ex))
if __name__ == '__main__':

@ -113,9 +113,11 @@ class TestManager(unittest.TestCase):
interval=20,
timeout=30,
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(

@ -157,9 +157,11 @@ class TestManager(unittest.TestCase):
name='vs1',
address='1.1.1.1',
state='present',
password='admin',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(

@ -101,9 +101,11 @@ class TestManager(unittest.TestCase):
interval=20,
timeout=30,
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(

@ -90,9 +90,11 @@ class TestManager(unittest.TestCase):
def test_create_remote_syslog(self, *args):
set_module_args(dict(
remote_host='1.1.1.1',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
fixture = load_fixture('load_tm_sys_syslog_1.json')
@ -117,9 +119,11 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='remotesyslog1',
remote_host='10.10.10.10',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
fixture = load_fixture('load_tm_sys_syslog_1.json')
@ -143,9 +147,11 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
remote_host='10.10.10.10',
remote_port=800,
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
fixture = load_fixture('load_tm_sys_syslog_1.json')
@ -171,9 +177,11 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
remote_host='10.10.10.10',
local_ip='2.2.2.2',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
fixture = load_fixture('load_tm_sys_syslog_1.json')
@ -199,9 +207,11 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
remote_host='10.10.10.10',
local_ip='2.2.2.2',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
fixture = load_fixture('load_tm_sys_syslog_2.json')

@ -92,9 +92,11 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='foo',
description='my description',
provider=dict(
server='localhost',
password='password',
user='admin'
)
))
module = AnsibleModule(

@ -107,15 +107,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
description='fakevlan',
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common'
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -133,15 +136,18 @@ class TestManager(unittest.TestCase):
name='somevlan',
tagged_interface=['2.1'],
tag=213,
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common'
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -159,15 +165,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
untagged_interface=['2.1'],
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common'
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -185,15 +194,18 @@ class TestManager(unittest.TestCase):
name='somevlan',
tagged_interface=['2.1', '1.1'],
tag=213,
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common'
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -211,15 +223,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
untagged_interface=['2.1', '1.1'],
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common',
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -236,15 +251,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
untagged_interface=['2.1'],
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common',
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -267,15 +285,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
tagged_interface=['2.1'],
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common',
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen
@ -296,15 +317,18 @@ class TestManager(unittest.TestCase):
set_module_args(dict(
name='somevlan',
description='changed_that',
partition='Common',
provider=dict(
server='localhost',
password='password',
user='admin',
partition='Common',
user='admin'
)
))
module = AnsibleModule(
argument_spec=self.spec.argument_spec,
supports_check_mode=self.spec.supports_check_mode
supports_check_mode=self.spec.supports_check_mode,
mutually_exclusive=self.spec.mutually_exclusive
)
# Override methods to force specific logic in the module to happen

Loading…
Cancel
Save