def sync_monitor_bindings(client, module):
    log('Entering sync_monitor_bindings')

    actual_bindings = get_actual_monitor_bindings(client, module)

    # Exclude default monitors from deletion
    for monitorname in ('tcp-default', 'ping-default'):
        if monitorname in actual_bindings:
            del actual_bindings[monitorname]

    configured_bindings = get_configured_monitor_bindings(client, module)

    to_remove = list(
        set(actual_bindings.keys()) - set(configured_bindings.keys()))
    to_add = list(
        set(configured_bindings.keys()) - set(actual_bindings.keys()))
    to_modify = list(
        set(configured_bindings.keys()) & set(actual_bindings.keys()))

    # Delete existing and modifiable bindings
    for key in to_remove + to_modify:
        binding = actual_bindings[key]
        b = lbmonitor_servicegroup_binding()
        b.monitorname = binding.monitor_name
        b.servicegroupname = module.params['servicegroupname']
        # Cannot remove default monitor bindings
        if b.monitorname in ('tcp-default', 'ping-default'):
            continue
        lbmonitor_servicegroup_binding.delete(client, b)

    # Add new and modified bindings
    for key in to_add + to_modify:
        binding = configured_bindings[key]
        log('Adding %s' % binding.monitorname)
        binding.add()
Beispiel #2
0
    def lbmonitor_servicegroup_binding(self, action, monitorname,
                                       servicegroupname):
        '''Function to add lbmonitor to a servicegroup.

	@param action string: add or delete
	@param monitorname string: PING, TCP, HTTP, TCP-ECV, HTTP-ECV, UDP-ECV,
		DNS, FTP, LDNS-PING, LDNS-TCP, LDNS-DNS, RADIUS, USER,
		HTTP-INLINE, SIP-UDP, SIP-TCP, LOAD, FTP-EXTENDED, SMTP, SNMP,
		NNTP, MYSQL, MYSQL-ECV, MSSQL-ECV, ORACLE-ECV, LDAP, POP3,
		CITRIX-XML-SERVICE, CITRIX-WEB-INTERFACE, DNS-TCP, RTSP, ARP,
		CITRIX-AG, CITRIX-AAC-LOGINPAGE, CITRIX-AAC-LAS, CITRIX-XD-DDC,
		ND6, CITRIX-WI-EXTENDED, DIAMETER, RADIUS_ACCOUNTING,
		STOREFRONT, APPC, SMPP, CITRIX-XNC-ECV, CITRIX-XDM
	@param servicegroupname string: Name of service group
'''

        obj = lbmonitor_servicegroup_binding()
        obj.monitorname = monitorname.upper()
        obj.servicegroupname = servicegroupname

        try:
            if action == 'add':
                lbmonitor_servicegroup_binding.add(self._sess, obj)
            elif action == 'delete':
                lbmonitor_servicegroup_binding.delete(self._sess, obj)
        except nitro_exception as e:
            print('Exception::errorcode=' + str(e.errorcode) + ',message=' +
                  e.message)
        except Exception as e:
            print('Exception::message=' + str(e.args))
        else:
            return True

        return False
Beispiel #3
0
def sync_monitor_bindings(client, module):
    log('Entering sync_monitor_bindings')
    # Delete existing bindings
    for binding in get_actual_monitor_bindings(client, module).values():
        b = lbmonitor_servicegroup_binding()
        b.monitorname = binding.monitor_name
        b.servicegroupname = module.params['servicegroupname']
        # Cannot remove default monitor bindings
        if b.monitorname in ('tcp-default', 'ping-default'):
            continue
        lbmonitor_servicegroup_binding.delete(client, b)

    # Apply configured bindings

    for binding in get_configured_monitor_bindings(client, module).values():
        log('Adding %s' % binding.monitorname)
        binding.add()