def _iter_groups(self, hosts_to_group, grouping_function, host_filter=None): groups = group_hosts(hosts_to_group, grouping_function) for _, hosts in sorted(groups.items(), key=lambda v: v[0]): job_keys = set() for host in hosts: if host_filter and host not in self._host_filter: continue job_keys = job_keys.union(self._jobs_by_host.get(host, set())) yield hosts, job_keys
def iter_batches(cls, hostnames, grouping_function=DEFAULT_GROUPING): groups = group_hosts(hostnames, grouping_function) groups = sorted(groups.items(), key=lambda v: v[0]) for group in groups: yield Hosts(group[1])