def pool_create_task(pool): assert pool is not None LOG.info("Begin to create balancer pool[%s]", pool) try: rc = create_rc_by_balancer_pool(pool) name = "balancer-pool-%04d%04d" % (pool.user.id, pool.id) lbaas_pool = lbaas.pool_create( rc, name=name, description=pool.description, subnet_id=pool.subnet.subnet_id, protocol=pool.protocol_text, lb_method=pool.lb_method_text, admin_state_up=pool.admin_state_up, provider=pool.get_provider_display()) except Exception: LOG.exception("Failed to create balancer pool[%s]", pool) pool.status = POOL_ERROR pool.save() return False else: LOG.info("Balancer pool[%s] is created. uuid[%s]", pool, lbaas_pool.id) pool.pool_uuid = lbaas_pool.id pool.status = POOL_ACTIVE pool.save() return True
def pool_delete(pool=None): rc = create_rc_by_balancer_pool(pool) try: lbaas.pool_delete(rc, pool.pool_uuid) return True except Exception as e: LOG.exception(e) return False
def pool_get(pool=None): rc = create_rc_by_balancer_pool(pool) try: p = lbaas.pool_get(rc,pool_id=pool.pool_uuid) return p except Exception as e: LOG.exception(e) return False
def pool_monitor_association_delete(pool, monitor_uuid): rc = create_rc_by_balancer_pool(pool) try: lbaas.pool_monitor_association_delete(rc, pool_id=pool.pool_uuid, monitor_id=monitor_uuid) return True except Exception as e: LOG.exception(e) return False
def pool_get(pool=None): rc = create_rc_by_balancer_pool(pool) try: p = lbaas.pool_get(rc,pool_id=pool.pool_uuid) return p except Exception as e: LOG.exception(e) return False
def pool_delete(pool=None): rc = create_rc_by_balancer_pool(pool) try: lbaas.pool_delete(rc, pool.pool_uuid) return True except Exception as e: LOG.exception(e) return False
def pool_monitor_association_delete(pool, monitor_uuid): rc = create_rc_by_balancer_pool(pool) try: lbaas.pool_monitor_association_delete(rc, pool_id=pool.pool_uuid, monitor_id=monitor_uuid) return True except Exception as e: LOG.exception(e) return False
def pool_delete_task(pool): assert pool is not None LOG.info("Begin to delete balancer pool id[%s],name[%s], uuid[%s]", pool.id, pool.name, pool.pool_uuid) for member in BalancerMember.objects.filter(deleted=False, pool=pool): try: pool_member_delete(member) except neutronclient.common.exceptions.NotFound: pass except Exception: # Even member not deleted successfully, when delete pool in # openstack, members will be deleted LOG.exception("Failed to delete pool member[%s] of pool [%s][%s]", member.id, pool.id, pool.name) member.deleted = True member.save() LOG.info("Pool member[%s] of pool[%s][%s] is deleted", member.id, pool.id, pool.name) vip = pool.vip if vip: if not pool_vip_delete_task(vip, pool): LOG.error("Failed to delete vip of pool. vip[%s], pool[%s]", vip, pool) return False for pool_monitor in BalancerPoolMonitor.objects.filter(pool=pool.id): # monitors in openstack will be deleted automatically, so no need to # delete it manually pool_monitor.delete() LOG.info("Pool monitor[%s] is deleted", pool_monitor.id) if pool.pool_uuid: try: rc = create_rc_by_balancer_pool(pool) lbaas.pool_delete(rc, pool.pool_uuid) except neutronclient.common.exceptions.NotFound: pass except Exception: LOG.exception("Failed to delete balancer pool[id:%s],[uuid:%s]", pool.id, pool.pool_uuid) pool.status = POOL_ERROR pool.save() return False pool.pool_uuid = '' pool.status = POOL_DOWN pool.deleted = True pool.save() LOG.info("Balancer pool is deleted. Pool: [%s]", pool) return True
def pool_update(pool=None): rc = create_rc_by_balancer_pool(pool) try: params = {'pool': {'description': pool.description, 'lb_method': pool.get_lb_method_display() }} p = lbaas.pool_update(rc, pool_id=pool.pool_uuid, **params) return p except Exception as e: LOG.exception(e) return None
def pool_monitor_association_create(pool, monitor): rc = create_rc_by_balancer_pool(pool) LOG.info("Begin to associate pool monitor[%s] with pool[%s]", monitor, pool) try: lbaas.pool_monitor_association_create(rc, pool_id=pool.pool_uuid, monitor_id=monitor.monitor_uuid) except Exception: LOG.exception("Failed to associate pool monitor[%s] with pool[%s]", monitor, pool) return False else: BalancerPoolMonitor.objects.create(pool=pool, monitor=monitor) LOG.info("Pool monitor[%s] is associated to pool[%s]", monitor, pool) return True
def pool_update(pool=None): rc = create_rc_by_balancer_pool(pool) try: params = { 'pool': { 'description': pool.description, 'lb_method': pool.get_lb_method_display() } } p = lbaas.pool_update(rc, pool_id=pool.pool_uuid, **params) return p except Exception as e: LOG.exception(e) return None
def pool_create(pool=None): rc = create_rc_by_balancer_pool(pool) try: p = lbaas.pool_create(rc, name="balancer-pool-%04d%04d" % (pool.user.id, pool.id), description=pool.description, subnet_id=pool.subnet.subnet_id, protocol=pool.get_protocol_display(), lb_method=pool.get_lb_method_display(), admin_state_up=pool.admin_state_up, provider=pool.get_provider_display()) return p except Exception as e: LOG.exception(e) return None
def pool_create(pool=None): rc = create_rc_by_balancer_pool(pool) try: p = lbaas.pool_create(rc, name="balancer-pool-%04d%04d" % ( pool.user.id, pool.id), description=pool.description, subnet_id=pool.subnet.subnet_id, protocol=pool.get_protocol_display(), lb_method=pool.get_lb_method_display(), admin_state_up=pool.admin_state_up, provider=pool.get_provider_display() ) return p except Exception as e: LOG.exception(e) return None
def pool_monitor_association_delete(pool, monitor): rc = create_rc_by_balancer_pool(pool) LOG.info("Begin to disassociate pool monitor[%s] from pool[%s]", monitor, pool) try: lbaas.pool_monitor_association_delete(rc, pool_id=pool.pool_uuid, monitor_id=monitor.monitor_uuid) except neutronclient.common.exceptions.NotFound: pass except Exception: LOG.exception("Begin to disassociate pool monitor[%s] from pool[%s]", monitor, pool) return False LOG.info("Pool monitor[%s] is disassociated from pool[%s]", monitor, pool) BalancerPoolMonitor.objects.filter(pool=pool, monitor=monitor).delete() return True
def pool_update_task(pool): assert pool is not None LOG.info("Begin to update balancer pool[%s][%s].", pool.id, pool.name) rc = create_rc_by_balancer_pool(pool) try: params = {'pool': {'description': pool.description, 'lb_method': pool.get_lb_method_display()}} update_result = lbaas.pool_update(rc, pool_id=pool.pool_uuid, **params) except Exception: LOG.exception("Failed to update balancer pool[%s][%s].", pool.id, pool.name) pool.status = POOL_ERROR pool.save() return False else: LOG.info("Balancer[%s][%s] pool is updated. uuid[%s]", pool.id, pool.name, update_result.id) pool.status = POOL_ACTIVE pool.save() return True
def pool_delete(pool=None): rc = create_rc_by_balancer_pool(pool) lbaas.pool_delete(rc, pool.pool_uuid)