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()
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
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()