Various small fixes to bigip modules (#48769)

pull/48779/head
Tim Rupp 6 years ago committed by GitHub
parent a7b7c07ad2
commit 0e71f62a95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,6 @@ __metaclass__ = type
import os import os
import time
try: try:

@ -14,9 +14,13 @@ try:
except ImportError: except ImportError:
from io import StringIO from io import StringIO
try:
from BytesIO import BytesIO
except ImportError:
from io import BytesIO
from ansible.module_utils.urls import urlparse from ansible.module_utils.urls import urlparse
from ansible.module_utils.urls import generic_urlparse from ansible.module_utils.urls import generic_urlparse
from ansible.module_utils._text import to_native
from ansible.module_utils.urls import Request from ansible.module_utils.urls import Request
try: try:
@ -392,7 +396,7 @@ def upload_file(client, url, src, dest=None):
Raises: Raises:
F5ModuleError: Raised if ``retries`` limit is exceeded. F5ModuleError: Raised if ``retries`` limit is exceeded.
""" """
if isinstance(src, StringIO): if isinstance(src, StringIO) or isinstance(src, BytesIO):
fileobj = src fileobj = src
else: else:
fileobj = open(src, 'rb') fileobj = open(src, 'rb')

@ -330,7 +330,7 @@ class ModuleManager(object):
raise F5ModuleError(resp.content) raise F5ModuleError(resp.content)
return response return response
def upload_to_device(self,): def upload_to_device(self):
url = 'https://{0}:{1}/mgmt/shared/file-transfer/uploads'.format( url = 'https://{0}:{1}/mgmt/shared/file-transfer/uploads'.format(
self.client.provider['server'], self.client.provider['server'],
self.client.provider['server_port'] self.client.provider['server_port']

@ -553,7 +553,7 @@ class Parameters(AnsibleF5Parameters):
] ]
returnables = [ returnables = [
'client_timeout' 'client_timeout',
'description', 'description',
'explicit_flow_migration', 'explicit_flow_migration',
'idle_timeout', 'idle_timeout',

@ -540,8 +540,9 @@ def main():
supports_check_mode=spec.supports_check_mode, supports_check_mode=spec.supports_check_mode,
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -467,8 +467,9 @@ def main():
supports_check_mode=spec.supports_check_mode supports_check_mode=spec.supports_check_mode
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -491,8 +491,9 @@ def main():
supports_check_mode=spec.supports_check_mode, supports_check_mode=spec.supports_check_mode,
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -564,6 +564,7 @@ def main():
argument_spec=spec.argument_spec, argument_spec=spec.argument_spec,
supports_check_mode=spec.supports_check_mode supports_check_mode=spec.supports_check_mode
) )
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try: try:

@ -750,8 +750,9 @@ def main():
required_together=spec.required_together, required_together=spec.required_together,
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -686,8 +686,9 @@ def main():
mutually_exclusive=spec.mutually_exclusive, mutually_exclusive=spec.mutually_exclusive,
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -599,8 +599,9 @@ def main():
supports_check_mode=spec.supports_check_mode, supports_check_mode=spec.supports_check_mode,
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client) cleanup_tokens(client)

@ -206,6 +206,9 @@ class ModuleManager(object):
self._wait_for_module_provisioning() self._wait_for_module_provisioning()
break break
except Exception as ex: except Exception as ex:
if 'Failed to validate the SSL' in str(ex):
raise F5ModuleError(str(ex))
# The types of exception's we're handling here are "REST API is not # The types of exception's we're handling here are "REST API is not
# ready" exceptions. # ready" exceptions.
# #
@ -331,8 +334,9 @@ def main():
supports_check_mode=spec.supports_check_mode supports_check_mode=spec.supports_check_mode
) )
try:
client = F5RestClient(**module.params) client = F5RestClient(**module.params)
try:
mm = ModuleManager(module=module, client=client) mm = ModuleManager(module=module, client=client)
results = mm.exec_module() results = mm.exec_module()
exit_json(module, results, client) exit_json(module, results, client)

@ -102,19 +102,15 @@ options:
description: description:
- Configures the transport connection to use when connecting to the - Configures the transport connection to use when connecting to the
remote device. remote device.
required: true
choices: choices:
- rest - rest
- cli - cli
default: cli default: rest
notes: notes:
- For more information on using Ansible to manage F5 Networks devices see U(https://www.ansible.com/integrations/networks/f5). - For more information on using Ansible to manage F5 Networks devices see U(https://www.ansible.com/integrations/networks/f5).
- Requires the f5-sdk Python package on the host. This is as easy as C(pip install f5-sdk).
- Requires BIG-IP software version >= 12. - Requires BIG-IP software version >= 12.
- The F5 modules only manipulate the running configuration of the F5 product. To ensure that BIG-IP - The F5 modules only manipulate the running configuration of the F5 product. To ensure that BIG-IP
specific configuration persists to disk, be sure to include at least one task that uses the specific configuration persists to disk, be sure to include at least one task that uses the
M(bigip_config) module to save the running configuration. Refer to the module's documentation for M(bigip_config) module to save the running configuration. Refer to the module's documentation for
the correct usage of the module to save your running configuration. the correct usage of the module to save your running configuration.
requirements:
- f5-sdk >= 3.0.16
''' '''

Loading…
Cancel
Save