def get_less_used_network(num_of_requested_ip, global_variable, config_obj):
"""
Get the network with more IP available.
:return: Network
"""
# identify less used network
while global_variable.free_ip_lock is True:
time.sleep(1)
free_ip = global_variable.free_ips
less_used_network = sorted(free_ip, key=lambda k: len(free_ip[k]), reverse=True)[0]
# network must have enough IPs
if len(global_variable.free_ips[less_used_network]) < num_of_requested_ip + int(
config_section_map(config_obj, 'vcloud')['min_spare_ip']):
return None
ip_list = global_variable.free_ips[less_used_network][:num_of_requested_ip]
pvdc_external_networks = global_variable.vcs.get_network()
from ipaddress import IPv4Address, IPv4Network
external_network = filter(lambda x: IPv4Address(x.gateway) in IPv4Network(less_used_network), pvdc_external_networks)
return {'object': external_network[0],
'iplist': ip_list}
评论列表
文章目录