def get_pool_health_monitor(self, context, id, pool_id, fields=None): """ Query a specific pool, health_monitor association. """ try: pool = self._api.loadbalancer_pool_read(id=pool_id) except vnc_exc.NoIdError: raise loadbalancer.PoolNotFound(pool_id=id) tenant_id = str(uuid.UUID(context.tenant_id)) if not context.is_admin and tenant_id != pool.parent_uuid: raise loadbalancer.PoolNotFound(pool_id=id) in_list = False for mref in pool.get_loadbalancer_healthmonitor_refs() or []: if mref['uuid'] == id: in_list = True break if not in_list: raise loadbalancer.PoolMonitorAssociationNotFound( monitor_id=id, pool_id=pool_id) res = { 'pool_id': pool_id, 'monitor_id': id, 'status': self._pool_manager._get_object_status(pool), 'tenant_id': pool.parent_uuid.replace('-', '') } return self._pool_manager._fields(res, fields)
def delete_pool_health_monitor(self, context, id, pool_id): try: pool = self._api.loadbalancer_pool_read(id=pool_id) except vnc_exc.NoIdError: raise loadbalancer.PoolNotFound(pool_id=id) tenant_id = str(uuid.UUID(context.tenant_id)) if not context.is_admin and tenant_id != pool.parent_uuid: raise loadbalancer.PoolNotFound(pool_id=id) try: monitor = self._api.loadbalancer_healthmonitor_read(id=id) except vnc_exc.NoIdError: raise loadbalancer.HealthMonitorNotFound(monitor_id=id) in_list = False for mref in pool.get_loadbalancer_healthmonitor_refs(): if mref['uuid'] == id: in_list = True break if not in_list: raise loadbalancer.PoolMonitorAssociationNotFound( monitor_id=id, pool_id=pool_id) pool.del_loadbalancer_healthmonitor(monitor) self._api.loadbalancer_pool_update(pool)
def _get_pool_health_monitor(self, context, id, pool_id): try: assoc_qry = context.session.query(PoolMonitorAssociation) return assoc_qry.filter_by(monitor_id=id, pool_id=pool_id).one() except exc.NoResultFound: raise loadbalancer.PoolMonitorAssociationNotFound(monitor_id=id, pool_id=pool_id)