'Provide information on hostable DHCP agents for network.
The returned value includes the number of agents that will actually
host the given network, a list of DHCP agents that can host the given
network, and a list of DHCP agents currently hosting the network.'

def _get_network_hostable_dhcp_agents(self, plugin, context, network):

    hosted_agents = self._get_dhcp_agents_hosting_network(plugin, context, network)
    if (hosted_agents is None):
        return {'n_agents': 0, 'hostable_agents': [], 'hosted_agents': []}
    n_agents = (cfg.CONF.dhcp_agents_per_network - len(hosted_agents))
    az_hints = (network.get(az_ext.AZ_HINTS) or cfg.CONF.default_availability_zones)
    active_dhcp_agents = self._get_active_agents(plugin, context, az_hints)
    if (not active_dhcp_agents):
        return {'n_agents': 0, 'hostable_agents': [], 'hosted_agents': hosted_agents}
    hostable_dhcp_agents = [agent for agent in set(active_dhcp_agents) if ((agent not in hosted_agents) and plugin.is_eligible_agent(context, True, agent))]
    hostable_dhcp_agents = self._filter_agents_with_network_access(plugin, context, network, hostable_dhcp_agents)
    if (not hostable_dhcp_agents):
        return {'n_agents': 0, 'hostable_agents': [], 'hosted_agents': hosted_agents}
    n_agents = min(len(hostable_dhcp_agents), n_agents)
    return {'n_agents': n_agents, 'hostable_agents': hostable_dhcp_agents, 'hosted_agents': hosted_agents}
