|
|
|
@ -219,6 +219,7 @@ EXPRESSION = r"(b=([\w\.\-]+)&w=(https?|ajp|wss?|ftp|[sf]cgi)://([\w\.\-]+):?(\d
|
|
|
|
|
# Apache2 server version extraction regexp:
|
|
|
|
|
APACHE_VERSION_EXPRESSION = r"Server Version: Apache/([\d.]+) \(([\w]+)\)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def regexp_extraction(string, _regexp, groups=1):
|
|
|
|
|
""" Returns the capture group (default=1) specified in the regexp, applied to the string """
|
|
|
|
|
regexp_search = re.search(string=str(string), pattern=str(_regexp))
|
|
|
|
@ -227,6 +228,7 @@ def regexp_extraction(string, _regexp, groups=1):
|
|
|
|
|
return str(regexp_search.group(groups))
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BalancerMember(object):
|
|
|
|
|
""" Apache 2.4 mod_proxy LB balancer member.
|
|
|
|
|
attributes:
|
|
|
|
@ -276,10 +278,10 @@ class BalancerMember(object):
|
|
|
|
|
|
|
|
|
|
def get_member_status(self):
|
|
|
|
|
""" Returns a dictionary of a balancer member's status attributes."""
|
|
|
|
|
status_mapping = {'disabled':'Dis',
|
|
|
|
|
'drained':'Drn',
|
|
|
|
|
'hot_standby':'Stby',
|
|
|
|
|
'ignore_errors':'Ign'}
|
|
|
|
|
status_mapping = {'disabled': 'Dis',
|
|
|
|
|
'drained': 'Drn',
|
|
|
|
|
'hot_standby': 'Stby',
|
|
|
|
|
'ignore_errors': 'Ign'}
|
|
|
|
|
status = {}
|
|
|
|
|
actual_status = str(self.attributes['Status'])
|
|
|
|
|
for mode in status_mapping.keys():
|
|
|
|
@ -291,10 +293,10 @@ class BalancerMember(object):
|
|
|
|
|
|
|
|
|
|
def set_member_status(self, values):
|
|
|
|
|
""" Sets a balancer member's status attributes amongst pre-mapped values."""
|
|
|
|
|
values_mapping = {'disabled':'&w_status_D',
|
|
|
|
|
'drained':'&w_status_N',
|
|
|
|
|
'hot_standby':'&w_status_H',
|
|
|
|
|
'ignore_errors':'&w_status_I'}
|
|
|
|
|
values_mapping = {'disabled': '&w_status_D',
|
|
|
|
|
'drained': '&w_status_N',
|
|
|
|
|
'hot_standby': '&w_status_H',
|
|
|
|
|
'ignore_errors': '&w_status_I'}
|
|
|
|
|
|
|
|
|
|
request_body = regexp_extraction(self.management_url, EXPRESSION, 1)
|
|
|
|
|
for k in values_mapping.keys():
|
|
|
|
@ -315,6 +317,7 @@ class BalancerMember(object):
|
|
|
|
|
|
|
|
|
|
class Balancer(object):
|
|
|
|
|
""" Apache httpd 2.4 mod_proxy balancer object"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, host, suffix, module, members=None, tls=False):
|
|
|
|
|
if tls:
|
|
|
|
|
self.base_url = str(str('https://') + str(host))
|
|
|
|
@ -359,6 +362,7 @@ class Balancer(object):
|
|
|
|
|
|
|
|
|
|
members = property(get_balancer_members)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
""" Initiates module."""
|
|
|
|
|
module = AnsibleModule(
|
|
|
|
@ -414,7 +418,7 @@ def main():
|
|
|
|
|
else:
|
|
|
|
|
changed = False
|
|
|
|
|
member_exists = False
|
|
|
|
|
member_status = {'disabled': False, 'drained': False, 'hot_standby': False, 'ignore_errors':False}
|
|
|
|
|
member_status = {'disabled': False, 'drained': False, 'hot_standby': False, 'ignore_errors': False}
|
|
|
|
|
for mode in member_status.keys():
|
|
|
|
|
for state in states:
|
|
|
|
|
if mode == state:
|
|
|
|
@ -447,7 +451,7 @@ def main():
|
|
|
|
|
module.exit_json(
|
|
|
|
|
changed=changed,
|
|
|
|
|
member=json_output
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
module.fail_json(msg=str(module.params['member_host']) + ' is not a member of the balancer ' + str(module.params['balancer_vhost']) + '!')
|
|
|
|
|
|
|
|
|
|