def _find_fit_network(osp_connection: Connection, networks: List[str]) -> Optional[str]: named_networks = {k['name']: k for k in osp_connection.list_networks() if k['name'] in networks} results = dict() for net_name in networks: net_avail = osp_connection.network.get_network_ip_availability(named_networks[net_name]) results[net_name] = net_avail['total_ips'] / net_avail['used_ips'] result = _find_best_fit(results) return (named_networks[result]['id'], result)
def _find_fit_network( osp_connection: Connection, networks: List[str]) -> Tuple[Optional[str], Optional[str]]: named_networks = { k['name']: k for k in osp_connection.list_networks() if k['name'] in networks } results = {} for net_name in networks: net_avail = osp_connection.network.get_network_ip_availability( named_networks[net_name]) subnet_usage = [(subnet['total_ips'], subnet['used_ips']) for subnet in net_avail.subnet_ip_availability if subnet['ip_version'] == 4] total_ips, used_ips = [sum(i) for i in zip(*subnet_usage)] results[net_name] = total_ips / used_ips result = _find_best_fit(results) return named_networks[result]['id'], result