mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-08 09:24:01 -07:00
Netscaler various fixes (#34800)
* Add default lb vserver option in netscaler_cs_vserver Add documentation for ssl_certkey option in netscaler_cs_vserver * Add options for gracefully disabling netscaler_server * Add "state" suboption for netscaler_servicegroup servicemembers Fix servicemember modification algorithm in netscaler_servicegroup Fix monitorbindings modification algorithm in netscaler_servicegroup
This commit is contained in:
parent
3df2561405
commit
b1a8f3b3d3
6 changed files with 245 additions and 33 deletions
|
@ -500,6 +500,19 @@ options:
|
|||
- "."
|
||||
- "Minimum value = C(1)"
|
||||
|
||||
lbvserver:
|
||||
description:
|
||||
- The default Load Balancing virtual server.
|
||||
version_added: "2.5"
|
||||
|
||||
ssl_certkey:
|
||||
description:
|
||||
- The name of the ssl certificate that is bound to this service.
|
||||
- The ssl certificate must already exist.
|
||||
- Creating the certificate can be done with the M(netscaler_ssl_certkey) module.
|
||||
- This option is only applicable only when C(servicetype) is C(SSL).
|
||||
version_added: "2.5"
|
||||
|
||||
disabled:
|
||||
description:
|
||||
- When set to C(yes) the cs vserver will be disabled.
|
||||
|
@ -570,6 +583,7 @@ from ansible.module_utils.network.netscaler.netscaler import (
|
|||
)
|
||||
try:
|
||||
from nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver import csvserver
|
||||
from nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding import csvserver_lbvserver_binding
|
||||
from nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding import csvserver_cspolicy_binding
|
||||
from nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding import sslvserver_sslcertkey_binding
|
||||
from nssrc.com.citrix.netscaler.nitro.exception.nitro_exception import nitro_exception
|
||||
|
@ -624,6 +638,75 @@ def get_configured_policybindings(client, module):
|
|||
return bindings
|
||||
|
||||
|
||||
def get_default_lb_vserver(client, module):
|
||||
try:
|
||||
default_lb_vserver = csvserver_lbvserver_binding.get(client, module.params['name'])
|
||||
return default_lb_vserver[0]
|
||||
except nitro_exception as e:
|
||||
if e.errorcode == 258:
|
||||
return csvserver_lbvserver_binding()
|
||||
else:
|
||||
raise
|
||||
|
||||
|
||||
def default_lb_vserver_identical(client, module):
|
||||
d = get_default_lb_vserver(client, module)
|
||||
configured = ConfigProxy(
|
||||
actual=csvserver_lbvserver_binding(),
|
||||
client=client,
|
||||
readwrite_attrs=[
|
||||
'name',
|
||||
'lbvserver',
|
||||
],
|
||||
attribute_values_dict={
|
||||
'name': module.params['name'],
|
||||
'lbvserver': module.params['lbvserver'],
|
||||
}
|
||||
)
|
||||
log('default lb vserver %s' % ((d.name, d.lbvserver),))
|
||||
if d.name is None and module.params['lbvserver'] is None:
|
||||
log('Default lb vserver identical missing')
|
||||
return True
|
||||
elif d.name is not None and module.params['lbvserver'] is None:
|
||||
log('Default lb vserver needs removing')
|
||||
return False
|
||||
elif configured.has_equal_attributes(d):
|
||||
log('Default lb vserver identical')
|
||||
return True
|
||||
else:
|
||||
log('Default lb vserver not identical')
|
||||
return False
|
||||
|
||||
|
||||
def sync_default_lb_vserver(client, module):
|
||||
d = get_default_lb_vserver(client, module)
|
||||
|
||||
if module.params['lbvserver'] is not None:
|
||||
configured = ConfigProxy(
|
||||
actual=csvserver_lbvserver_binding(),
|
||||
client=client,
|
||||
readwrite_attrs=[
|
||||
'name',
|
||||
'lbvserver',
|
||||
],
|
||||
attribute_values_dict={
|
||||
'name': module.params['name'],
|
||||
'lbvserver': module.params['lbvserver'],
|
||||
}
|
||||
)
|
||||
|
||||
if not configured.has_equal_attributes(d):
|
||||
if d.name is not None:
|
||||
log('Deleting default lb vserver %s' % d.lbvserver)
|
||||
csvserver_lbvserver_binding.delete(client, d)
|
||||
log('Adding default lb vserver %s' % configured.lbvserver)
|
||||
configured.add()
|
||||
else:
|
||||
if d.name is not None:
|
||||
log('Deleting default lb vserver %s' % d.lbvserver)
|
||||
csvserver_lbvserver_binding.delete(client, d)
|
||||
|
||||
|
||||
def get_actual_policybindings(client, module):
|
||||
log('Getting actual policy bindigs')
|
||||
bindings = {}
|
||||
|
@ -949,6 +1032,7 @@ def main():
|
|||
type='bool',
|
||||
default=False
|
||||
),
|
||||
lbvserver=dict(type='str'),
|
||||
)
|
||||
|
||||
argument_spec = dict()
|
||||
|
@ -1168,6 +1252,12 @@ def main():
|
|||
|
||||
module_result['changed'] = True
|
||||
|
||||
# Check default lb vserver
|
||||
if not default_lb_vserver_identical(client, module):
|
||||
if not module.check_mode:
|
||||
sync_default_lb_vserver(client, module)
|
||||
module_result['changed'] = True
|
||||
|
||||
if not module.check_mode:
|
||||
res = do_state_change(client, module, csvserver_proxy)
|
||||
if res.errorcode != 0:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue