Merge pull request #574 from Etienne-Carriere/factor_f5
Factor common functions for F5 modules
This commit is contained in:
commit
5c53271c38
5 changed files with 58 additions and 229 deletions
|
@ -163,35 +163,10 @@ EXAMPLES = '''
|
|||
name: "{{ monitorname }}"
|
||||
'''
|
||||
|
||||
try:
|
||||
import bigsuds
|
||||
except ImportError:
|
||||
bigsuds_found = False
|
||||
else:
|
||||
bigsuds_found = True
|
||||
|
||||
TEMPLATE_TYPE = 'TTYPE_HTTP'
|
||||
DEFAULT_PARENT_TYPE = 'http'
|
||||
|
||||
|
||||
# ===========================================
|
||||
# bigip_monitor module generic methods.
|
||||
# these should be re-useable for other monitor types
|
||||
#
|
||||
|
||||
def bigip_api(bigip, user, password):
|
||||
|
||||
api = bigsuds.BIGIP(hostname=bigip, username=user, password=password)
|
||||
return api
|
||||
|
||||
|
||||
def disable_ssl_cert_validation():
|
||||
|
||||
# You probably only want to do this for testing and never in production.
|
||||
# From https://www.python.org/dev/peps/pep-0476/#id29
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
|
||||
def check_monitor_exists(module, api, monitor, parent):
|
||||
|
||||
|
@ -278,7 +253,6 @@ def set_integer_property(api, monitor, int_property):
|
|||
|
||||
|
||||
def update_monitor_properties(api, module, monitor, template_string_properties, template_integer_properties):
|
||||
|
||||
changed = False
|
||||
for str_property in template_string_properties:
|
||||
if str_property['value'] is not None and not check_string_property(api, monitor, str_property):
|
||||
|
@ -321,15 +295,8 @@ def set_ipport(api, monitor, ipport):
|
|||
def main():
|
||||
|
||||
# begin monitor specific stuff
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict(
|
||||
server = dict(required=True),
|
||||
user = dict(required=True),
|
||||
password = dict(required=True),
|
||||
validate_certs = dict(default='yes', type='bool'),
|
||||
partition = dict(default='Common'),
|
||||
state = dict(default='present', choices=['present', 'absent']),
|
||||
argument_spec=f5_argument_spec();
|
||||
argument_spec.update( dict(
|
||||
name = dict(required=True),
|
||||
parent = dict(default=DEFAULT_PARENT_TYPE),
|
||||
parent_partition = dict(default='Common'),
|
||||
|
@ -341,20 +308,20 @@ def main():
|
|||
interval = dict(required=False, type='int'),
|
||||
timeout = dict(required=False, type='int'),
|
||||
time_until_up = dict(required=False, type='int', default=0)
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = argument_spec,
|
||||
supports_check_mode=True
|
||||
)
|
||||
|
||||
server = module.params['server']
|
||||
user = module.params['user']
|
||||
password = module.params['password']
|
||||
validate_certs = module.params['validate_certs']
|
||||
partition = module.params['partition']
|
||||
(server,user,password,state,partition,validate_certs) = f5_parse_arguments(module)
|
||||
|
||||
parent_partition = module.params['parent_partition']
|
||||
state = module.params['state']
|
||||
name = module.params['name']
|
||||
parent = "/%s/%s" % (parent_partition, module.params['parent'])
|
||||
monitor = "/%s/%s" % (partition, name)
|
||||
parent = fq_name(parent_partition, module.params['parent'])
|
||||
monitor = fq_name(partition, name)
|
||||
send = module.params['send']
|
||||
receive = module.params['receive']
|
||||
receive_disable = module.params['receive_disable']
|
||||
|
@ -366,11 +333,6 @@ def main():
|
|||
|
||||
# end monitor specific stuff
|
||||
|
||||
if not validate_certs:
|
||||
disable_ssl_cert_validation()
|
||||
|
||||
if not bigsuds_found:
|
||||
module.fail_json(msg="the python bigsuds module is required")
|
||||
api = bigip_api(server, user, password)
|
||||
monitor_exists = check_monitor_exists(module, api, monitor, parent)
|
||||
|
||||
|
@ -481,5 +443,6 @@ def main():
|
|||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
from ansible.module_utils.f5 import *
|
||||
main()
|
||||
|
||||
|
|
|
@ -181,37 +181,11 @@ EXAMPLES = '''
|
|||
|
||||
'''
|
||||
|
||||
try:
|
||||
import bigsuds
|
||||
except ImportError:
|
||||
bigsuds_found = False
|
||||
else:
|
||||
bigsuds_found = True
|
||||
|
||||
TEMPLATE_TYPE = DEFAULT_TEMPLATE_TYPE = 'TTYPE_TCP'
|
||||
TEMPLATE_TYPE_CHOICES = ['tcp', 'tcp_echo', 'tcp_half_open']
|
||||
DEFAULT_PARENT = DEFAULT_TEMPLATE_TYPE_CHOICE = DEFAULT_TEMPLATE_TYPE.replace('TTYPE_', '').lower()
|
||||
|
||||
|
||||
# ===========================================
|
||||
# bigip_monitor module generic methods.
|
||||
# these should be re-useable for other monitor types
|
||||
#
|
||||
|
||||
def bigip_api(bigip, user, password):
|
||||
|
||||
api = bigsuds.BIGIP(hostname=bigip, username=user, password=password)
|
||||
return api
|
||||
|
||||
|
||||
def disable_ssl_cert_validation():
|
||||
|
||||
# You probably only want to do this for testing and never in production.
|
||||
# From https://www.python.org/dev/peps/pep-0476/#id29
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
|
||||
def check_monitor_exists(module, api, monitor, parent):
|
||||
|
||||
# hack to determine if monitor exists
|
||||
|
@ -234,7 +208,7 @@ def check_monitor_exists(module, api, monitor, parent):
|
|||
|
||||
def create_monitor(api, monitor, template_attributes):
|
||||
|
||||
try:
|
||||
try:
|
||||
api.LocalLB.Monitor.create_template(templates=[{'template_name': monitor, 'template_type': TEMPLATE_TYPE}], template_attributes=[template_attributes])
|
||||
except bigsuds.OperationFailed, e:
|
||||
if "already exists" in str(e):
|
||||
|
@ -298,7 +272,6 @@ def set_integer_property(api, monitor, int_property):
|
|||
|
||||
|
||||
def update_monitor_properties(api, module, monitor, template_string_properties, template_integer_properties):
|
||||
|
||||
changed = False
|
||||
for str_property in template_string_properties:
|
||||
if str_property['value'] is not None and not check_string_property(api, monitor, str_property):
|
||||
|
@ -341,15 +314,8 @@ def set_ipport(api, monitor, ipport):
|
|||
def main():
|
||||
|
||||
# begin monitor specific stuff
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict(
|
||||
server = dict(required=True),
|
||||
user = dict(required=True),
|
||||
password = dict(required=True),
|
||||
validate_certs = dict(default='yes', type='bool'),
|
||||
partition = dict(default='Common'),
|
||||
state = dict(default='present', choices=['present', 'absent']),
|
||||
argument_spec=f5_argument_spec();
|
||||
argument_spec.update(dict(
|
||||
name = dict(required=True),
|
||||
type = dict(default=DEFAULT_TEMPLATE_TYPE_CHOICE, choices=TEMPLATE_TYPE_CHOICES),
|
||||
parent = dict(default=DEFAULT_PARENT),
|
||||
|
@ -361,21 +327,21 @@ def main():
|
|||
interval = dict(required=False, type='int'),
|
||||
timeout = dict(required=False, type='int'),
|
||||
time_until_up = dict(required=False, type='int', default=0)
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = argument_spec,
|
||||
supports_check_mode=True
|
||||
)
|
||||
|
||||
server = module.params['server']
|
||||
user = module.params['user']
|
||||
password = module.params['password']
|
||||
validate_certs = module.params['validate_certs']
|
||||
partition = module.params['partition']
|
||||
(server,user,password,state,partition,validate_certs) = f5_parse_arguments(module)
|
||||
|
||||
parent_partition = module.params['parent_partition']
|
||||
state = module.params['state']
|
||||
name = module.params['name']
|
||||
type = 'TTYPE_' + module.params['type'].upper()
|
||||
parent = "/%s/%s" % (parent_partition, module.params['parent'])
|
||||
monitor = "/%s/%s" % (partition, name)
|
||||
parent = fq_name(parent_partition, module.params['parent'])
|
||||
monitor = fq_name(partition, name)
|
||||
send = module.params['send']
|
||||
receive = module.params['receive']
|
||||
ip = module.params['ip']
|
||||
|
@ -390,11 +356,6 @@ def main():
|
|||
|
||||
# end monitor specific stuff
|
||||
|
||||
if not validate_certs:
|
||||
disable_ssl_cert_validation()
|
||||
|
||||
if not bigsuds_found:
|
||||
module.fail_json(msg="the python bigsuds module is required")
|
||||
api = bigip_api(server, user, password)
|
||||
monitor_exists = check_monitor_exists(module, api, monitor, parent)
|
||||
|
||||
|
@ -506,5 +467,6 @@ def main():
|
|||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
from ansible.module_utils.f5 import *
|
||||
main()
|
||||
|
||||
|
|
|
@ -188,27 +188,6 @@ EXAMPLES = '''
|
|||
|
||||
'''
|
||||
|
||||
try:
|
||||
import bigsuds
|
||||
except ImportError:
|
||||
bigsuds_found = False
|
||||
else:
|
||||
bigsuds_found = True
|
||||
|
||||
# ==========================
|
||||
# bigip_node module specific
|
||||
#
|
||||
|
||||
def bigip_api(bigip, user, password):
|
||||
api = bigsuds.BIGIP(hostname=bigip, username=user, password=password)
|
||||
return api
|
||||
|
||||
def disable_ssl_cert_validation():
|
||||
# You probably only want to do this for testing and never in production.
|
||||
# From https://www.python.org/dev/peps/pep-0476/#id29
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
def node_exists(api, address):
|
||||
# hack to determine if node exists
|
||||
result = False
|
||||
|
@ -283,42 +262,30 @@ def get_node_monitor_status(api, name):
|
|||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict(
|
||||
server = dict(type='str', required=True),
|
||||
user = dict(type='str', required=True),
|
||||
password = dict(type='str', required=True),
|
||||
validate_certs = dict(default='yes', type='bool'),
|
||||
state = dict(type='str', default='present', choices=['present', 'absent']),
|
||||
argument_spec=f5_argument_spec();
|
||||
argument_spec.update(dict(
|
||||
session_state = dict(type='str', choices=['enabled', 'disabled']),
|
||||
monitor_state = dict(type='str', choices=['enabled', 'disabled']),
|
||||
partition = dict(type='str', default='Common'),
|
||||
name = dict(type='str', required=True),
|
||||
host = dict(type='str', aliases=['address', 'ip']),
|
||||
description = dict(type='str')
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = argument_spec,
|
||||
supports_check_mode=True
|
||||
)
|
||||
|
||||
if not bigsuds_found:
|
||||
module.fail_json(msg="the python bigsuds module is required")
|
||||
(server,user,password,state,partition,validate_certs) = f5_parse_arguments(module)
|
||||
|
||||
server = module.params['server']
|
||||
user = module.params['user']
|
||||
password = module.params['password']
|
||||
validate_certs = module.params['validate_certs']
|
||||
state = module.params['state']
|
||||
session_state = module.params['session_state']
|
||||
monitor_state = module.params['monitor_state']
|
||||
partition = module.params['partition']
|
||||
host = module.params['host']
|
||||
name = module.params['name']
|
||||
address = "/%s/%s" % (partition, name)
|
||||
address = fq_name(partition, name)
|
||||
description = module.params['description']
|
||||
|
||||
if not validate_certs:
|
||||
disable_ssl_cert_validation()
|
||||
|
||||
if state == 'absent' and host is not None:
|
||||
module.fail_json(msg="host parameter invalid when state=absent")
|
||||
|
||||
|
@ -410,5 +377,6 @@ def main():
|
|||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
from ansible.module_utils.f5 import *
|
||||
main()
|
||||
|
||||
|
|
|
@ -228,27 +228,6 @@ EXAMPLES = '''
|
|||
|
||||
'''
|
||||
|
||||
try:
|
||||
import bigsuds
|
||||
except ImportError:
|
||||
bigsuds_found = False
|
||||
else:
|
||||
bigsuds_found = True
|
||||
|
||||
# ===========================================
|
||||
# bigip_pool module specific support methods.
|
||||
#
|
||||
|
||||
def bigip_api(bigip, user, password):
|
||||
api = bigsuds.BIGIP(hostname=bigip, username=user, password=password)
|
||||
return api
|
||||
|
||||
def disable_ssl_cert_validation():
|
||||
# You probably only want to do this for testing and never in production.
|
||||
# From https://www.python.org/dev/peps/pep-0476/#id29
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
def pool_exists(api, pool):
|
||||
# hack to determine if pool exists
|
||||
result = False
|
||||
|
@ -368,15 +347,9 @@ def main():
|
|||
|
||||
service_down_choices = ['none', 'reset', 'drop', 'reselect']
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict(
|
||||
server = dict(type='str', required=True),
|
||||
user = dict(type='str', required=True),
|
||||
password = dict(type='str', required=True),
|
||||
validate_certs = dict(default='yes', type='bool'),
|
||||
state = dict(type='str', default='present', choices=['present', 'absent']),
|
||||
argument_spec=f5_argument_spec();
|
||||
argument_spec.update(dict(
|
||||
name = dict(type='str', required=True, aliases=['pool']),
|
||||
partition = dict(type='str', default='Common'),
|
||||
lb_method = dict(type='str', choices=lb_method_choices),
|
||||
monitor_type = dict(type='str', choices=monitor_type_choices),
|
||||
quorum = dict(type='int'),
|
||||
|
@ -385,21 +358,18 @@ def main():
|
|||
service_down_action = dict(type='str', choices=service_down_choices),
|
||||
host = dict(type='str', aliases=['address']),
|
||||
port = dict(type='int')
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = argument_spec,
|
||||
supports_check_mode=True
|
||||
)
|
||||
|
||||
if not bigsuds_found:
|
||||
module.fail_json(msg="the python bigsuds module is required")
|
||||
(server,user,password,state,partition,validate_certs) = f5_parse_arguments(module)
|
||||
|
||||
server = module.params['server']
|
||||
user = module.params['user']
|
||||
password = module.params['password']
|
||||
validate_certs = module.params['validate_certs']
|
||||
state = module.params['state']
|
||||
name = module.params['name']
|
||||
partition = module.params['partition']
|
||||
pool = "/%s/%s" % (partition, name)
|
||||
pool = fq_name(partition,name)
|
||||
lb_method = module.params['lb_method']
|
||||
if lb_method:
|
||||
lb_method = lb_method.lower()
|
||||
|
@ -411,16 +381,13 @@ def main():
|
|||
if monitors:
|
||||
monitors = []
|
||||
for monitor in module.params['monitors']:
|
||||
if "/" not in monitor:
|
||||
monitors.append("/%s/%s" % (partition, monitor))
|
||||
else:
|
||||
monitors.append(monitor)
|
||||
monitors.append(fq_name(partition, monitor))
|
||||
slow_ramp_time = module.params['slow_ramp_time']
|
||||
service_down_action = module.params['service_down_action']
|
||||
if service_down_action:
|
||||
service_down_action = service_down_action.lower()
|
||||
host = module.params['host']
|
||||
address = "/%s/%s" % (partition, host)
|
||||
address = fq_name(partition,host)
|
||||
port = module.params['port']
|
||||
|
||||
if not validate_certs:
|
||||
|
@ -551,5 +518,6 @@ def main():
|
|||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
from ansible.module_utils.f5 import *
|
||||
main()
|
||||
|
||||
|
|
|
@ -196,27 +196,6 @@ EXAMPLES = '''
|
|||
|
||||
'''
|
||||
|
||||
try:
|
||||
import bigsuds
|
||||
except ImportError:
|
||||
bigsuds_found = False
|
||||
else:
|
||||
bigsuds_found = True
|
||||
|
||||
# ===========================================
|
||||
# bigip_pool_member module specific support methods.
|
||||
#
|
||||
|
||||
def bigip_api(bigip, user, password):
|
||||
api = bigsuds.BIGIP(hostname=bigip, username=user, password=password)
|
||||
return api
|
||||
|
||||
def disable_ssl_cert_validation():
|
||||
# You probably only want to do this for testing and never in production.
|
||||
# From https://www.python.org/dev/peps/pep-0476/#id29
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
def pool_exists(api, pool):
|
||||
# hack to determine if pool exists
|
||||
result = False
|
||||
|
@ -327,49 +306,37 @@ def get_member_monitor_status(api, pool, address, port):
|
|||
return result
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec = dict(
|
||||
server = dict(type='str', required=True),
|
||||
user = dict(type='str', required=True),
|
||||
password = dict(type='str', required=True),
|
||||
validate_certs = dict(default='yes', type='bool'),
|
||||
state = dict(type='str', default='present', choices=['present', 'absent']),
|
||||
argument_spec = f5_argument_spec();
|
||||
argument_spec.update(dict(
|
||||
session_state = dict(type='str', choices=['enabled', 'disabled']),
|
||||
monitor_state = dict(type='str', choices=['enabled', 'disabled']),
|
||||
pool = dict(type='str', required=True),
|
||||
partition = dict(type='str', default='Common'),
|
||||
host = dict(type='str', required=True, aliases=['address', 'name']),
|
||||
port = dict(type='int', required=True),
|
||||
connection_limit = dict(type='int'),
|
||||
description = dict(type='str'),
|
||||
rate_limit = dict(type='int'),
|
||||
ratio = dict(type='int')
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
argument_spec = argument_spec,
|
||||
supports_check_mode=True
|
||||
)
|
||||
|
||||
if not bigsuds_found:
|
||||
module.fail_json(msg="the python bigsuds module is required")
|
||||
|
||||
server = module.params['server']
|
||||
user = module.params['user']
|
||||
password = module.params['password']
|
||||
validate_certs = module.params['validate_certs']
|
||||
state = module.params['state']
|
||||
(server,user,password,state,partition,validate_certs) = f5_parse_arguments(module)
|
||||
session_state = module.params['session_state']
|
||||
monitor_state = module.params['monitor_state']
|
||||
partition = module.params['partition']
|
||||
pool = "/%s/%s" % (partition, module.params['pool'])
|
||||
pool = fq_name(partition, module.params['pool'])
|
||||
connection_limit = module.params['connection_limit']
|
||||
description = module.params['description']
|
||||
rate_limit = module.params['rate_limit']
|
||||
ratio = module.params['ratio']
|
||||
host = module.params['host']
|
||||
address = "/%s/%s" % (partition, host)
|
||||
address = fq_name(partition, host)
|
||||
port = module.params['port']
|
||||
|
||||
if not validate_certs:
|
||||
disable_ssl_cert_validation()
|
||||
|
||||
# sanity check user supplied values
|
||||
|
||||
|
@ -457,5 +424,6 @@ def main():
|
|||
|
||||
# import module snippets
|
||||
from ansible.module_utils.basic import *
|
||||
from ansible.module_utils.f5 import *
|
||||
main()
|
||||
|
||||
|
|
Loading…
Reference in a new issue