Bugfix.add token cleanup 02 (#34441)

* Adds more token cleanup

Token cleanup ensures that the bigip doesnt become wedged from
excessive API calls

* Fixed missing usage of token cleanup
This commit is contained in:
Tim Rupp 2018-01-04 09:24:14 -08:00 committed by GitHub
parent 26d20ec194
commit 19f5d969c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 93 additions and 9 deletions

View file

@ -928,6 +928,16 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def cleanup_tokens(client):
try:
resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main(): def main():
if not HAS_F5SDK: if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required") raise F5ModuleError("The python f5-sdk module is required")
@ -943,8 +953,10 @@ def main():
try: try:
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))

View file

@ -186,7 +186,6 @@ from ansible.module_utils.six import iteritems
from collections import defaultdict from collections import defaultdict
from distutils.version import LooseVersion from distutils.version import LooseVersion
try: try:
from ansible.module_utils.f5_utils import iControlUnexpectedHTTPError from ansible.module_utils.f5_utils import iControlUnexpectedHTTPError
except ImportError: except ImportError:
@ -684,6 +683,16 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def cleanup_tokens(client):
try:
resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main(): def main():
if not HAS_F5SDK: if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required") raise F5ModuleError("The python f5-sdk module is required")
@ -703,8 +712,10 @@ def main():
try: try:
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))

View file

@ -655,6 +655,16 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def cleanup_tokens(client):
try:
resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main(): def main():
if not HAS_F5SDK: if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required") raise F5ModuleError("The python f5-sdk module is required")
@ -670,8 +680,10 @@ def main():
try: try:
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))

View file

@ -176,6 +176,16 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def cleanup_tokens(client):
try:
resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main(): def main():
if not HAS_F5SDK: if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required") raise F5ModuleError("The python f5-sdk module is required")
@ -191,8 +201,10 @@ def main():
try: try:
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))

View file

@ -648,10 +648,17 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def main(): def cleanup_tokens(client):
if not HAS_F5SDK: try:
raise F5ModuleError("The python f5-sdk module is required") resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main():
spec = ArgumentSpec() spec = ArgumentSpec()
client = AnsibleF5Client( client = AnsibleF5Client(
@ -661,10 +668,15 @@ def main():
) )
try: try:
if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required")
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))

View file

@ -451,10 +451,17 @@ class ArgumentSpec(object):
self.f5_product_name = 'bigip' self.f5_product_name = 'bigip'
def main(): def cleanup_tokens(client):
if not HAS_F5SDK: try:
raise F5ModuleError("The python f5-sdk module is required") resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main():
spec = ArgumentSpec() spec = ArgumentSpec()
client = AnsibleF5Client( client = AnsibleF5Client(
@ -464,11 +471,17 @@ def main():
) )
try: try:
if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required")
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View file

@ -43,7 +43,7 @@ notes:
different ways on each platform. On Debian based systems with C(apt); different ways on each platform. On Debian based systems with C(apt);
C(apt-get install rpm). On Mac with C(brew); C(brew install rpm). C(apt-get install rpm). On Mac with C(brew); C(brew install rpm).
This command is already present on RedHat based systems. This command is already present on RedHat based systems.
- Requires BIG-IP < 12.1.0 because the required functionality is missing - Requires BIG-IP >= 12.1.0 because the required functionality is missing
on versions earlier than that. on versions earlier than that.
requirements: requirements:
- f5-sdk >= 2.2.3 - f5-sdk >= 2.2.3
@ -320,6 +320,16 @@ class ArgumentSpec(object):
] ]
def cleanup_tokens(client):
try:
resource = client.api.shared.authz.tokens_s.token.load(
name=client.api.icrs.token
)
resource.delete()
except Exception:
pass
def main(): def main():
if not HAS_F5SDK: if not HAS_F5SDK:
raise F5ModuleError("The python f5-sdk module is required") raise F5ModuleError("The python f5-sdk module is required")
@ -336,8 +346,10 @@ def main():
try: try:
mm = ModuleManager(client) mm = ModuleManager(client)
results = mm.exec_module() results = mm.exec_module()
cleanup_tokens(client)
client.module.exit_json(**results) client.module.exit_json(**results)
except F5ModuleError as e: except F5ModuleError as e:
cleanup_tokens(client)
client.module.fail_json(msg=str(e)) client.module.fail_json(msg=str(e))
if __name__ == '__main__': if __name__ == '__main__':