mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Fixed the module to be compliant with pep8
This commit is contained in:
parent
40d3a66368
commit
88c5d84d72
1 changed files with 154 additions and 90 deletions
|
@ -1,5 +1,16 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
try:
|
||||
import ovh
|
||||
import ovh.exceptions
|
||||
HAS_OVH = True
|
||||
except ImportError:
|
||||
HAS_OVH = False
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
# and APIError from ovh api
|
||||
from ovh.exceptions import APIError
|
||||
|
||||
DOCUMENTATION = '''
|
||||
|
@ -11,7 +22,9 @@ description:
|
|||
version_added: "2.0"
|
||||
author: Pascal HERAUD @pascalheraud
|
||||
notes:
|
||||
- Uses the python OVH Api U(https://github.com/ovh/python-ovh). You have to create an application (a key and secret) with a consummer key as described into U(https://eu.api.ovh.com/g934.first_step_with_api)
|
||||
- Uses the python OVH Api U(https://github.com/ovh/python-ovh). \
|
||||
You have to create an application (a key and secret) with a consummer \
|
||||
key as described into U(https://eu.api.ovh.com/g934.first_step_with_api)
|
||||
requirements:
|
||||
- ovh > 0.3.5
|
||||
options:
|
||||
|
@ -28,7 +41,8 @@ options:
|
|||
default: present
|
||||
choices: ['present', 'absent']
|
||||
description:
|
||||
- Determines wether the backend is to be created/modified or deleted
|
||||
- Determines wether the backend is to be created/modified \
|
||||
or deleted
|
||||
probe:
|
||||
required: false
|
||||
default: none
|
||||
|
@ -59,27 +73,26 @@ options:
|
|||
timeout:
|
||||
required: false
|
||||
type: "int"
|
||||
default: "120
|
||||
descriptin:
|
||||
- The timeout in seconds used to wait for a task to be completed. Default is 120 seconds.
|
||||
default: 120
|
||||
description:
|
||||
- The timeout in seconds used to wait for a task to be \
|
||||
completed. Default is 120 seconds.
|
||||
|
||||
'''
|
||||
|
||||
EXAMPLES = '''
|
||||
# Adds or modify a backend to a loadbalancing
|
||||
- ovh_ip_loadbalancing name=ip-1.1.1.1 ip=212.1.1.1 state=present probe=none weight=8 endpoint=ovh-eu application_key=yourkey application_secret=yoursecret consumer_key=yourconsumerkey
|
||||
- ovh_ip_loadbalancing name=ip-1.1.1.1 ip=212.1.1.1 state=present \
|
||||
probe=none weight=8 \
|
||||
endpoint=ovh-eu application_key=yourkey \
|
||||
application_secret=yoursecret consumer_key=yourconsumerkey
|
||||
|
||||
# Removes a backend from a loadbalancing
|
||||
- ovh_ip_loadbalancing name=ip-1.1.1.1 ip=212.1.1.1 state=absent endpoint=ovh-eu application_key=yourkey application_secret=yoursecret consumer_key=yourconsumerkey
|
||||
- ovh_ip_loadbalancing name=ip-1.1.1.1 ip=212.1.1.1 state=absent \
|
||||
endpoint=ovh-eu application_key=yourkey \
|
||||
application_secret=yoursecret consumer_key=yourconsumerkey
|
||||
'''
|
||||
|
||||
import sys
|
||||
try:
|
||||
import ovh
|
||||
import ovh.exceptions
|
||||
HAS_OVH = True
|
||||
except ImportError:
|
||||
HAS_OVH = False
|
||||
|
||||
def getOvhClient(ansibleModule):
|
||||
endpoint = ansibleModule.params.get('endpoint')
|
||||
|
@ -94,8 +107,9 @@ def getOvhClient(ansibleModule):
|
|||
consumer_key=consumer_key
|
||||
)
|
||||
|
||||
|
||||
def waitForNoTask(client, name, timeout):
|
||||
currentTimeout = timeout;
|
||||
currentTimeout = timeout
|
||||
while len(client.get('/ip/loadBalancing/{}/task'.format(name))) > 0:
|
||||
time.sleep(1) # Delay for 1 sec
|
||||
currentTimeout -= 1
|
||||
|
@ -103,13 +117,15 @@ def waitForNoTask(client, name, timeout):
|
|||
return False
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec=dict(
|
||||
name=dict(required=True),
|
||||
backend=dict(required=True),
|
||||
weight=dict(default='8', type='int'),
|
||||
probe = dict(default='none', choices =['none', 'http', 'icmp' , 'oco']),
|
||||
probe=dict(default='none',
|
||||
choices=['none', 'http', 'icmp', 'oco']),
|
||||
state=dict(default='present', choices=['present', 'absent']),
|
||||
endpoint=dict(required=True),
|
||||
application_key=dict(required=True),
|
||||
|
@ -120,7 +136,8 @@ def main():
|
|||
)
|
||||
|
||||
if not HAS_OVH:
|
||||
module.fail_json(msg='ovh-api python module is required to run this module ')
|
||||
module.fail_json(msg='ovh-api python module\
|
||||
is required to run this module ')
|
||||
|
||||
# Get parameters
|
||||
name = module.params.get('name')
|
||||
|
@ -137,22 +154,35 @@ def main():
|
|||
try:
|
||||
loadBalancings = client.get('/ip/loadBalancing')
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for getting the list of loadBalancing, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for getting the list of loadBalancing, \
|
||||
check application key, secret, consumerkey and parameters. \
|
||||
Error returned by OVH api was : {}'.format(apiError))
|
||||
|
||||
if not name in loadBalancings:
|
||||
if name not in loadBalancings:
|
||||
module.fail_json(msg='IP LoadBalancing {} does not exist'.format(name))
|
||||
|
||||
# Check that no task is pending before going on
|
||||
try:
|
||||
if not waitForNoTask(client, name, timeout):
|
||||
module.fail_json(msg='Timeout of {} seconds while waiting for no pending tasks before executing the module '.format(timeout))
|
||||
module.fail_json(
|
||||
msg='Timeout of {} seconds while waiting for no pending \
|
||||
tasks before executing the module '.format(timeout))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for getting the list of pending tasks of the loadBalancing, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for getting the list of pending tasks \
|
||||
of the loadBalancing, check application key, secret, consumerkey \
|
||||
and parameters. Error returned by OVH api was : {}\
|
||||
'.format(apiError))
|
||||
|
||||
try:
|
||||
backends = client.get('/ip/loadBalancing/{}/backend'.format(name))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for getting the list of backends of the loadBalancing, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for getting the list of backends \
|
||||
of the loadBalancing, check application key, secret, consumerkey \
|
||||
and parameters. Error returned by OVH api was : {}\
|
||||
'.format(apiError))
|
||||
|
||||
backendExists = backend in backends
|
||||
moduleChanged = False
|
||||
|
@ -160,53 +190,91 @@ def main():
|
|||
if backendExists:
|
||||
# Remove backend
|
||||
try:
|
||||
client.delete('/ip/loadBalancing/{}/backend/{}'.format(name, backend))
|
||||
client.delete(
|
||||
'/ip/loadBalancing/{}/backend/{}'.format(name, backend))
|
||||
if not waitForNoTask(client, name, timeout):
|
||||
module.fail_json(msg='Timeout of {} seconds while waiting for completion of removing backend task'.format(timeout))
|
||||
module.fail_json(
|
||||
msg='Timeout of {} seconds while waiting for completion \
|
||||
of removing backend task'.format(timeout))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for deleting the backend, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for deleting the backend, \
|
||||
check application key, secret, consumerkey and \
|
||||
parameters. Error returned by OVH api was : {}\
|
||||
'.format(apiError))
|
||||
moduleChanged = True
|
||||
else:
|
||||
if backendExists:
|
||||
# Get properties
|
||||
try:
|
||||
backendProperties = client.get('/ip/loadBalancing/{}/backend/{}'.format(name, backend))
|
||||
backendProperties = client.get(
|
||||
'/ip/loadBalancing/{}/backend/{}'.format(name, backend))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for getting the backend properties, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for getting the backend properties, \
|
||||
check application key, secret, consumerkey and \
|
||||
parameters. Error returned by OVH api was : {}\
|
||||
'.format(apiError))
|
||||
|
||||
if (backendProperties['weight'] != weight):
|
||||
# Change weight
|
||||
try:
|
||||
client.post('/ip/loadBalancing/{}/backend/{}/setWeight'.format(name, backend), weight=weight)
|
||||
client.post(
|
||||
'/ip/loadBalancing/{}/backend/{}/setWeight\
|
||||
'.format(name, backend), weight=weight)
|
||||
if not waitForNoTask(client, name, timeout):
|
||||
module.fail_json(msg='Timeout of {} seconds while waiting for completion of setWeight to backend task'.format(timeout))
|
||||
module.fail_json(
|
||||
msg='Timeout of {} seconds while waiting for completion \
|
||||
of setWeight to backend task'.format(timeout))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for updating the weight of the backend, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for updating the weight of the \
|
||||
backend, check application key, secret, consumerkey \
|
||||
and parameters. Error returned by OVH api was : {}\
|
||||
'.format(apiError))
|
||||
moduleChanged = True
|
||||
|
||||
if (backendProperties['probe'] != probe):
|
||||
# Change probe
|
||||
backendProperties['probe'] = probe
|
||||
try:
|
||||
client.put('/ip/loadBalancing/{}/backend/{}'.format(name, backend), probe=probe )
|
||||
client.put(
|
||||
'/ip/loadBalancing/{}/backend/{}\
|
||||
'.format(name, backend), probe=probe)
|
||||
if not waitForNoTask(client, name, timeout):
|
||||
module.fail_json(msg='Timeout of {} seconds while waiting for completion of setProbe to backend task'.format(timeout))
|
||||
module.fail_json(
|
||||
msg='Timeout of {} seconds while waiting for completion of \
|
||||
setProbe to backend task'.format(timeout))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for updating the propbe of the backend, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for updating the propbe of \
|
||||
the backend, check application key, secret, \
|
||||
consumerkey and parameters. Error returned by OVH api \
|
||||
was : {}\
|
||||
'.format(apiError))
|
||||
moduleChanged = True
|
||||
|
||||
else:
|
||||
# Creates backend
|
||||
try:
|
||||
try:
|
||||
client.post('/ip/loadBalancing/{}/backend'.format(name), ipBackend=backend, probe=probe, weight=weight)
|
||||
client.post('/ip/loadBalancing/{}/backend'.format(name),
|
||||
ipBackend=backend, probe=probe, weight=weight)
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for creating the backend, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for creating the backend, check \
|
||||
application key, secret, consumerkey and parameters. \
|
||||
Error returned by OVH api was : {}'.format(apiError))
|
||||
|
||||
if not waitForNoTask(client, name, timeout):
|
||||
module.fail_json(msg='Timeout of {} seconds while waiting for completion of backend creation task'.format(timeout))
|
||||
module.fail_json(
|
||||
msg='Timeout of {} seconds while waiting for completion of \
|
||||
backend creation task'.format(timeout))
|
||||
except APIError as apiError:
|
||||
module.fail_json(msg='Unable to call OVH api for creating the backend, check application key, secret, consumerkey and parameters. Error returned by OVH api was : {}'.format(apiError))
|
||||
module.fail_json(
|
||||
msg='Unable to call OVH api for creating the backend, check \
|
||||
application key, secret, consumerkey and parameters. \
|
||||
Error returned by OVH api was : {}'.format(apiError))
|
||||
moduleChanged = True
|
||||
|
||||
module.exit_json(changed=moduleChanged)
|
||||
|
@ -214,8 +282,4 @@ def main():
|
|||
# We should never reach here
|
||||
module.fail_json(msg='Internal ovh_ip_loadbalancing_backend module error')
|
||||
|
||||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue