def lb_add_sticky(conf, lb_id, st): logger.debug("Got new sticky description %s" % st) if st['persistenceType'] is None: return lb = db_api.loadbalancer_get(conf, lb_id) sf = db_api.serverfarm_get_all_by_lb_id(conf, lb_id)[0] values = db_api.sticky_pack_extra(st) values['sf_id'] = sf['id'] sticky_ref = db_api.sticky_create(conf, values) device_driver = drivers.get_device_driver(conf, lb['device_id']) with device_driver.request_context() as ctx: commands.add_sticky_to_loadbalancer(ctx, lb, sticky_ref) return db_api.unpack_extra(sticky_ref)
def lb_add_sticky(conf, lb_id, sticky): logger.debug("Got new sticky description %s" % sticky) if sticky['persistenceType'] is None: return balancer_instance = vserver.Balancer(conf) balancer_instance.loadFromDB(lb_id) balancer_instance.removeFromDB() st = db_api.sticky_pack_extra(sticky) st['sf_id'] = balancer_instance.sf['id'] balancer_instance.sf._sticky.append(st) balancer_instance.savetoDB() st = balancer_instance.sf._sticky[-1] device_driver = drivers.get_device_driver(conf, balancer_instance.lb['device_id']) with device_driver.request_context() as ctx: commands.add_sticky_to_loadbalancer(ctx, balancer_instance, st) return st['id']