[BGPVPN] Set address pool for ports with dynamic IP

By default, IP addresses are issued from the entire subnet range,
but tests create ports with static IP values. Sometimes the values
of IP addresses obtained dynamically conflict with the addresses
used by the test.
This patch set address pool range that does not overlap with static
IPs from tests.

Related-Prod: PRODX-50297
Change-Id: Ida40c97caee48b0d4e65664023a57736036e0d52
diff --git a/neutron_tempest_plugin/bgpvpn/scenario/manager.py b/neutron_tempest_plugin/bgpvpn/scenario/manager.py
index f5e9bf2..b65407d 100644
--- a/neutron_tempest_plugin/bgpvpn/scenario/manager.py
+++ b/neutron_tempest_plugin/bgpvpn/scenario/manager.py
@@ -241,10 +241,14 @@
         if not subnets_client:
             subnets_client = self.subnets_client
         tenant_cidr = kwargs.get('cidr')
+        # reserving pool for Neutron service ports
+        net = netaddr.IPNetwork(tenant_cidr)
+        allocation_pools = [{'start': str(net[2]), 'end': str(net[9])}]
         subnet = dict(
             name=data_utils.rand_name(namestart),
             network_id=network['id'],
             tenant_id=network['tenant_id'],
+            allocation_pools=allocation_pools,
             **kwargs)
         result = subnets_client.create_subnet(**subnet)
         self.assertIsNotNone(result, 'Unable to allocate tenant network')