def _get_netscaler_tasks_for_update_op(self, loadBalancerId, updatedLoadBalancer): self.logger.debug("Assembling required tasks for update operation") task_list = [] if not all([loadBalancerId, updatedLoadBalancer]): raise ImplementationErrorException("Programming error") newLoadBalancerId = None if "name" in updatedLoadBalancer: existing_name = NitroUtils.get_loadBalancer_name(loadBalancerId) if updatedLoadBalancer.name != existing_name: self.logger.debug("We need to queue a name change task") """ Because the internal ID depends on the name, a name change results in a new ID """ newLoadBalancerId = NitroUtils.get_new_internal_loadBalancerId( loadBalancerId, updatedLoadBalancer) namechange_task = self._get_netscaler_renameloadbalancer_task( loadBalancerId, newLoadBalancerId, updatedLoadBalancer) task_list.append(namechange_task) self.logger.debug("Adding an lbvserver update task") task = self._get_netscaler_updateloadbalancer_task( loadBalancerId, updatedLoadBalancer, newLoadBalancerId) task_list.append(task) """ We also may need to change the services and other affected Netscaler resources """ tasks = self._get_netscaler_updatenodes_tasks(loadBalancerId, updatedLoadBalancer, newLoadBalancerId) task_list.extend(tasks) return task_list
def _get_loadbalancer_object_from_lbvserver_entity(self, loadBalancerId, dict_obj): lbvserver_name = str(dict_obj["name"]) expected_name = NitroUtils.get_lbvservername_from_loadbalancerid( loadBalancerId) if lbvserver_name != expected_name: raise ImplementationError("resource returned not expected...") loadBalancer = self._get_new_loadBalancer_object() loadBalancer.name = NitroUtils.get_loadBalancer_name(loadBalancerId) servicetype = str(dict_obj["servicetype"]) loadBalancer.protocol = NitroUtils.get_protocol_from_servicetype( servicetype) port = str(dict_obj["port"]) loadBalancer.port = port lbmethod = str(dict_obj["lbmethod"]) loadBalancer.algorithm = NitroUtils.get_algorithm_from_lbmethod( lbmethod) effectivestate = str(dict_obj["effectivestate"]) loadBalancer.status = NitroUtils.get_loadbalancerstatus_from_state( effectivestate) i = 1 loadBalancer.virtualIps = [] virtualIP = LBVirtualIPState(self.lbresource) ipaddress = str(dict_obj["ipv46"]) virtualIP.address = ipaddress self.logger.debug("VIP for loadbalancer %s is %s" % (loadBalancer.name, ipaddress)) loadBalancer.virtualIps.append(virtualIP) """ Get Session Persistence data """ persistencetype = str(dict_obj["persistencetype"]) self.logger.debug("persistencetype of lbvserver is %s" % persistencetype) if persistencetype != 'NONE': if self.extensions_enabled: sessionPersistence = NetScalerLBSessionPersistenceState( self.lbresource) else: sessionPersistence = LBSessionPersistenceState(self.lbresource) persistencevalue = NitroUtils.get_persistencetype_from_nspersistencetype( persistencetype) if persistencevalue: sessionPersistence.persistenceType = persistencevalue if self.extensions_enabled: timeout = str(dict_obj["timeout"]) if timeout != None: sessionPersistence.timeout = timeout loadBalancer.sessionPersistence = sessionPersistence """ Get Connection Logging data """ """ if self.extensions_enabled: loadBalancer.connectionLogging = NetScalerLBConnectionLoggingState(self.lbresource) else: loadBalancer.connectionLogging = LBConnectionLoggingState(self.lbresource) appflow = str(dict_obj["appflowlog"]) if appflow == "ENABLED": loadBalancer.connectionLogging.enabled="true" else: loadBalancer.connectionLogging.enabled="false" loadBalancer.connectionThrottle = LBConnectionThrottleState(self.lbresource) loadBalancer.connectionThrottle.minConnections = "10" loadBalancer.connectionThrottle.maxConnections = "100" loadBalancer.connectionThrottle.maxConnectionRate = "50" loadBalancer.connectionThrottle.rateInterval = "60" """ if self.lbservice.cluster: loadBalancer.cluster = {} loadBalancer.cluster["name"] = self.lbservice.cluster else: loadBalancer.cluster = {} loadBalancer.cluster["name"] = "none" if self.extensions_enabled: sc = str(dict_obj["sc"]) if sc == "ON": loadBalancer.sureConnect = "true" else: loadBalancer.sureConnect = "false" """ if appflow == "ENABLED": loadBalancer.connectionLogging.type="appflow" """ return loadBalancer