Execute router commands with admin client

The API calls that change the router external gateway info "enable_snat"
flag are, by default, allowed only for admin users. That fix is proposed
to the Neutron API definitions in [1].

[1]https://review.opendev.org/c/openstack/neutron-lib/+/941631

Related-Bug: #2098109
Change-Id: I6c19692fefb09c15423aa58756fb001615ce1ce4
This commit is contained in:
Rodolfo Alonso Hernandez 2025-02-14 16:24:40 +00:00
parent cc02d407d9
commit 4b082c9ae7
3 changed files with 16 additions and 8 deletions

View File

@ -31,10 +31,14 @@ class BaseRouterTest(base.BaseAdminNetworkTest):
pass
def _create_router(self, name, admin_state_up=False,
external_network_id=None, enable_snat=None, **kwargs):
external_network_id=None, enable_snat=None,
client=None, **kwargs):
# associate a cleanup with created routers to avoid quota limits
router = self.create_router(name, admin_state_up,
external_network_id, enable_snat, **kwargs)
client = client or self.client
router = self._create_router_with_client(
client, router_name=name, admin_state_up=admin_state_up,
external_network_id=external_network_id, enable_snat=enable_snat,
**kwargs)
self.addCleanup(self._cleanup_router, router)
return router

View File

@ -424,9 +424,11 @@ class ExternalGWMultihomingRoutersTest(base_routers.BaseRouterTest):
router = self._create_router(
data_utils.rand_name('router'),
external_network_id=CONF.network.public_network_id,
enable_snat=False)
enable_snat=False,
client=self.admin_client,
)
self.assertEqual(len(router['external_gateways']), 1)
res = self.client.router_add_external_gateways(
res = self.admin_client.router_add_external_gateways(
router['id'],
[{'network_id': CONF.network.public_network_id,
'enable_snat': False}])
@ -437,9 +439,10 @@ class ExternalGWMultihomingRoutersTest(base_routers.BaseRouterTest):
router = self._create_router(
data_utils.rand_name('router'),
external_network_id=CONF.network.public_network_id,
enable_snat=False)
enable_snat=False,
client=self.admin_client)
self.assertEqual(len(router['external_gateways']), 1)
res = self.client.router_remove_external_gateways(
res = self.admin_client.router_remove_external_gateways(
router['id'],
[{'network_id': CONF.network.public_network_id}])
self.assertEqual(len(res['router']['external_gateways']), 0)

View File

@ -630,7 +630,8 @@ class NetworkMultipleGWTest(base.BaseAdminTempestTestCase):
def test_update_router_single_gw_bfd(self):
ext_network_id = self.ext_networks[0][0]['id']
bfd_container = self.containers[0]
router = self.create_router(
router = self._create_router_with_client(
self.admin_client,
router_name=data_utils.rand_name('router'),
admin_state_up=True,
enable_snat=False,