

def get_l3_agents(self, context, active=None, filters=None):
    query = context.session.query(agents_db.Agent)
    query = query.filter((agents_db.Agent.agent_type == constants.AGENT_TYPE_L3))
    if (active is not None):
        query = query.filter((agents_db.Agent.admin_state_up == active))
    if filters:
        for (key, value) in six.iteritems(filters):
            column = getattr(agents_db.Agent, key, None)
            if column:
                if (not value):
                    return []
                query = query.filter(filters.in_(value))
        agent_modes = filters.get('agent_modes', [])
        if agent_modes:
            agent_mode_key = '"agent_mode": "'
            configuration_filter = [agents_db.Agent.configurations.contains(('%s%s"' % (agent_mode_key, agent_mode))) for agent_mode in agent_modes]
            query = query.filter(or_(*configuration_filter))
    return [l3_agent for l3_agent in query if agentschedulers_db.AgentSchedulerDbMixin.is_eligible_agent(active, l3_agent)]

dataset/ETHPy150Open openstack/neutron/neutron/db/l3_agentschedulers_db.py L3AgentSchedulerDbMixin.get_l3_agents/VarMisuse@138/158 `column`->`filters`