Merge "Randomize BaseFullStackTestCase._find_available_ips" into stable/train
This commit is contained in:
commit
b639a83a8a
|
@ -13,7 +13,9 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from concurrent import futures
|
from concurrent import futures
|
||||||
|
import itertools
|
||||||
import os
|
import os
|
||||||
|
import random
|
||||||
|
|
||||||
import netaddr
|
import netaddr
|
||||||
from neutron_lib.tests import tools
|
from neutron_lib.tests import tools
|
||||||
|
@ -127,18 +129,17 @@ class BaseFullStackTestCase(testlib_api.MySQLTestCaseMixin,
|
||||||
|
|
||||||
def _find_available_ips(self, network, subnet, num):
|
def _find_available_ips(self, network, subnet, num):
|
||||||
ports = self.safe_client.list_ports(network_id=network['id'])
|
ports = self.safe_client.list_ports(network_id=network['id'])
|
||||||
used_ips = [ip['ip_address']
|
used_ips = netaddr.IPSet(
|
||||||
for port in ports for ip in port['fixed_ips']]
|
[netaddr.IPAddress(ip['ip_address'])
|
||||||
used_ips.append(subnet['gateway_ip'])
|
for port in ports for ip in port['fixed_ips']])
|
||||||
available_ips = []
|
used_ips.add(netaddr.IPAddress(subnet['gateway_ip']))
|
||||||
for ip in netaddr.IPNetwork(subnet['cidr']).iter_hosts():
|
valid_ips = netaddr.IPSet(netaddr.IPNetwork(subnet['cidr']))
|
||||||
ip = str(ip)
|
valid_ips = valid_ips.difference(used_ips)
|
||||||
if ip not in used_ips:
|
if valid_ips.size < num:
|
||||||
available_ips.append(ip)
|
self.fail("Cannot find enough free IP addresses.")
|
||||||
if len(available_ips) >= num:
|
initial = random.randint(0, min(valid_ips.size - num, 1000))
|
||||||
return available_ips
|
available_ips = itertools.islice(valid_ips, initial, initial + num)
|
||||||
|
return [str(available_ip) for available_ip in available_ips]
|
||||||
self.fail("Cannot find enough free IP addresses.")
|
|
||||||
|
|
||||||
def _create_external_vm(self, network, subnet):
|
def _create_external_vm(self, network, subnet):
|
||||||
vm = self.useFixture(
|
vm = self.useFixture(
|
||||||
|
|
Loading…
Reference in New Issue