def update_LoadBalancer(self, loadBalancerId, updatedLoadBalancer, tenant_id): self._setup_nitrowrapper(tenant_id, loadBalancerId) dbLoadBalancer = self._get_new_loadBalancer_object() dbLoadBalancer = self.db.fill_loadBalancer_object( tenant_id, loadBalancerId, dbLoadBalancer) if not dbLoadBalancer: raise ItemNotFoundException( "No loadBalancer with id %s was found" % loadBalancerId) if dbLoadBalancer.status == "DELETED": raise ImmutableEntityException( "loadBalancer with id %s was deleted and cannot be updated" % loadBalancerId) internalLoadBalancer = updatedLoadBalancer internalLoadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, dbLoadBalancer) self._update_LoadBalancerInternal(internalLoadBalancerId, internalLoadBalancer) dbLoadBalancer = self.db.update_loadBalancer(tenant_id, loadBalancerId, internalLoadBalancer) internalLoadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, dbLoadBalancer) loadBalancer = self._get_LoadBalancerInternal(internalLoadBalancerId) loadBalancer.id = dbLoadBalancer.id loadBalancer.protocol = dbLoadBalancer.protocol loadBalancer.algorithm = dbLoadBalancer.algorithm loadBalancer.created = dbLoadBalancer.created loadBalancer.updated = dbLoadBalancer.updated self.db.fill_loadBalancer_vips_info(tenant_id, loadBalancer.id, loadBalancer) self.logger.debug( "Successfully completed update loadbalancer operation on the adapter" ) return loadBalancer
def update_LBNode(self, loadBalancerId, nodeId, lbnode, tenant_id): self._setup_nitrowrapper(tenant_id, loadBalancerId) """" dbLoadBalancer = self._get_new_loadBalancer_object() dbLoadBalancer = self.db.fill_loadBalancer_object(tenant_id, loadBalancerId, dbLoadBalancer) if not dbLoadBalancer: raise ItemNotFoundException("No loadBalancer with id %s was found" % loadBalancerId) if dbLoadBalancer.status == "DELETED": raise ImmutableEntityException("loadBalancer with id %s was deleted and cannot be updated" % loadBalancerId) """ loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) lbnode.id = nodeId lbnode = self._update_LBNodeInternal(internal_loadBalancerId, loadBalancer, nodeId, lbnode) self.db.update_loadBalancer_updatetime(tenant_id, loadBalancerId) return lbnode
def add_LoadBalancer(self, newLoadBalancer, tenant_id): self.logger.debug("adding loadbalancer %s" % repr(newLoadBalancer)) existing_ids = self.db.get_tenant_loadBalancers(tenant_id) loadBalancerId = str(NitroUtils.generate_loadbalancerid(existing_ids)) self._setup_nitrowrapper(tenant_id, loadBalancerId) self._allocate_loadBalancer_vips(newLoadBalancer, tenant_id, loadBalancerId) internalLoadBalancer = newLoadBalancer internalLoadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, internalLoadBalancer) self._add_LoadBalancerInternal(internalLoadBalancerId, internalLoadBalancer) loadBalancer = self._get_LoadBalancerInternal(internalLoadBalancerId) loadBalancer.id = loadBalancerId loadBalancer.protocol = internalLoadBalancer.protocol loadBalancer.algorithm = internalLoadBalancer.algorithm self.db.create_loadBalancer(tenant_id, loadBalancer) self.db.fill_loadBalancer_vips_info(tenant_id, loadBalancer.id, loadBalancer) return loadBalancer
def list_LBNodes(self, tenant_id, loadBalancerId): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) return self._list_LBNodesInternal(internal_loadBalancerId, loadBalancer)
def remove_LBNode(self, loadBalancerId, nodeId, tenant_id): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) self._remove_LBNodeInternal(internal_loadBalancerId, loadBalancer, nodeId) self.db.update_loadBalancer_updatetime(tenant_id, loadBalancerId)
def get_LBNode(self, tenant_id, loadBalancerId, nodeId): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) lbnode = self._get_LBNodeInternal(internal_loadBalancerId, loadBalancer, nodeId) return lbnode
def remove_LoadBalancer(self, loadBalancerId, tenant_id): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, loadBalancer) self._remove_LoadBalancerInternal(internal_loadBalancerId, loadBalancer) self.db.remove_loadBalancer(tenant_id, loadBalancerId)
def get_LBHealthMonitor(self, tenant_id, loadBalancerId): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, loadBalancer) healthMonitor = self._get_LBHealthMonitorInternal( internal_loadBalancerId, loadBalancer) return healthMonitor
def add_LBNode(self, lbnode, tenant_id, loadBalancerId): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) task_list = self._get_netscaler_tasks("ADD", internal_loadBalancerId, loadBalancer, node=lbnode) self.logger.debug("add task list: " + str(task_list)) self.nitrowrapper.process_netscaler_task_list(task_list) added_node = self.get_LBNode(tenant_id, loadBalancerId, lbnode.id) self.db.update_loadBalancer_updatetime(tenant_id, loadBalancerId) return added_node
def update_LBHealthMonitor(self, tenant_id, loadBalancerId, healthMonitor): self._setup_nitrowrapper(tenant_id, loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) if loadBalancer.status == "DELETED": raise ItemNotFoundException("loadbalancer %s not found" % loadBalancerId) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, loadBalancer) healthMonitor = self._update_LBHealthMonitorInternal( internal_loadBalancerId, loadBalancer, healthMonitor) self.db.update_loadBalancer_updatetime(tenant_id, loadBalancerId) return healthMonitor
def get_LoadBalancer(self, loadBalancerId, tenant_id): self._setup_nitrowrapper(tenant_id, loadBalancerId) dbLoadBalancer = self._get_new_loadBalancer_object() dbLoadBalancer = self.db.fill_loadBalancer_object( tenant_id, loadBalancerId, dbLoadBalancer) if not dbLoadBalancer: raise ItemNotFoundException( "No loadBalancer with id %s was found" % loadBalancerId) if dbLoadBalancer.status == "DELETED": dict_obj = dbLoadBalancer.get_as_dictionary() del dict_obj["protocol"] del dict_obj["algorithm"] return dbLoadBalancer internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId( tenant_id, loadBalancerId, dbLoadBalancer) loadBalancer = self._get_LoadBalancerInternal(internal_loadBalancerId) loadBalancer.id = dbLoadBalancer.id """ XXX- We should check whether the values in the DB are different from those returned from NetScaler and change the DB to match what is on NetScaler (NetScaler is the authoritative source) """ loadBalancer.protocol = dbLoadBalancer.protocol loadBalancer.algorithm = dbLoadBalancer.algorithm loadBalancer.created = dbLoadBalancer.created loadBalancer.updated = dbLoadBalancer.updated self.db.fill_loadBalancer_vips_info(tenant_id, loadBalancer.id, loadBalancer) return loadBalancer
def add_LBNodes(self, lbnodes, tenant_id, loadBalancerId): self._setup_nitrowrapper(tenant_id, loadBalancerId) self.logger.debug("Adding nodes to loadbalancer %s" % loadBalancerId) loadBalancer = self.lbadapter.get_LoadBalancer(loadBalancerId, tenant_id) internal_loadBalancerId = NitroUtils.get_internal_loadBalancerId(tenant_id, loadBalancerId, loadBalancer) task_list = self._get_netscaler_tasks("ADDMULTI", internal_loadBalancerId, loadBalancer, node=lbnodes) self.nitrowrapper.process_netscaler_task_list(task_list) added_nodes = [] for lbnode in lbnodes: node = self._get_LBNodeInternal(internal_loadBalancerId, loadBalancer, lbnode.id) added_nodes.append(node) self.db.update_loadBalancer_updatetime(tenant_id, loadBalancerId) return added_nodes