[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
(cherry picked from commit 7591e13c74617d01ad2a022289b34b3d0ca36441)
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')