Use project_id in neutron calls and objects

Update network code to use project_id key and keyword
to support the depcrecation of tenant_id in Neutron.
Change text accordingly.

Blueprint: https://blueprints.launchpad.net/neutron/+spec/keystone-v3

Change-Id: I45d2759c1621a06aca7bd80a9a22a661f4049676
Signed-off-by: Brian Haley <haleyb.dev@gmail.com>
This commit is contained in:
Brian Haley
2026-05-02 00:24:29 -04:00
parent 70c4143230
commit 593f7bf60a
6 changed files with 27 additions and 27 deletions
@@ -99,7 +99,7 @@ class FloatingIPAdminTestJSON(base.BaseAdminNetworkTest):
@decorators.idempotent_id('32727cc3-abe2-4485-a16e-48f2d54c14f2')
def test_create_list_show_floating_ip_with_tenant_id_by_admin(self):
"""Verify if admin can create/list/show floating ip with tenant id"""
"""Verify if admin can create/list/show floating ip with project id"""
# Creates a floating IP
body = self.admin_floating_ips_client.create_floatingip(
floating_network_id=self.ext_net_id,
@@ -126,7 +126,7 @@ class MeteringTestJSON(base.BaseAdminNetworkTest):
self.metering_label['id'])
metering_label = body['metering_label']
self.assertEqual(self.metering_label['id'], metering_label['id'])
self.assertEqual(self.metering_label['tenant_id'],
self.assertEqual(self.metering_label['project_id'],
metering_label['project_id'])
self.assertEqual(self.metering_label['name'], metering_label['name'])
self.assertEqual(self.metering_label['description'],
+1 -1
View File
@@ -161,7 +161,7 @@ class CredentialProvider(object, metaclass=abc.ABCMeta):
def cleanup_default_secgroup(self, security_group_client, tenant):
resp_body = security_group_client.list_security_groups(
tenant_id=tenant,
project_id=tenant,
name="default")
secgroups_to_delete = resp_body['security_groups']
for secgroup in secgroups_to_delete:
+20 -20
View File
@@ -271,17 +271,17 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
creds = self.creds_client.get_credentials(**cred_params)
return cred_provider.TestResources(creds)
def _create_network_resources(self, tenant_id):
"""The function creates network resources in the given tenant.
def _create_network_resources(self, project_id):
"""The function creates network resources in the given project.
The function checks if network_resources class member is empty,
In case it is, it will create a network, a subnet and a router for
the tenant according to the given tenant id parameter.
the project according to the given project id parameter.
Otherwise it will create a network resource according
to the values from network_resources dict.
:param tenant_id: The tenant id to create resources for.
:type tenant_id: str
:param project_id: The project id to create resources for.
:type project_id: str
:raises: InvalidConfiguration, Exception
:returns: network resources(network,subnet,router)
:rtype: tuple
@@ -307,15 +307,15 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
self.name, prefix=self.resource_prefix)
if not self.network_resources or self.network_resources['network']:
network_name = rand_name_root + "-network"
network = self._create_network(network_name, tenant_id)
network = self._create_network(network_name, project_id)
try:
if not self.network_resources or self.network_resources['subnet']:
subnet_name = rand_name_root + "-subnet"
subnet = self._create_subnet(subnet_name, tenant_id,
subnet = self._create_subnet(subnet_name, project_id,
network['id'])
if not self.network_resources or self.network_resources['router']:
router_name = rand_name_root + "-router"
router = self._create_router(router_name, tenant_id)
router = self._create_router(router_name, project_id)
self._add_router_interface(router['id'], subnet['id'])
except Exception:
try:
@@ -328,18 +328,18 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
network['name'])
except Exception as cleanup_exception:
msg = "There was an exception trying to setup network " \
"resources for tenant %s, and this error happened " \
"resources for project %s, and this error happened " \
"trying to clean them up: %s"
LOG.warning(msg, tenant_id, cleanup_exception)
LOG.warning(msg, project_id, cleanup_exception)
raise
return network, subnet, router
def _create_network(self, name, tenant_id):
def _create_network(self, name, project_id):
resp_body = self.networks_admin_client.create_network(
name=name, tenant_id=tenant_id)
name=name, project_id=project_id)
return resp_body['network']
def _create_subnet(self, subnet_name, tenant_id, network_id):
def _create_subnet(self, subnet_name, project_id, network_id):
base_cidr = netaddr.IPNetwork(self.project_network_cidr)
mask_bits = self.project_network_mask_bits
for subnet_cidr in base_cidr.subnet(mask_bits):
@@ -349,7 +349,7 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
create_subnet(
network_id=network_id, cidr=str(subnet_cidr),
name=subnet_name,
tenant_id=tenant_id,
project_id=project_id,
enable_dhcp=self.network_resources['dhcp'],
ip_version=(ipaddress.ip_network(
str(subnet_cidr)).version))
@@ -358,7 +358,7 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
create_subnet(network_id=network_id,
cidr=str(subnet_cidr),
name=subnet_name,
tenant_id=tenant_id,
project_id=project_id,
ip_version=(ipaddress.ip_network(
str(subnet_cidr)).version))
break
@@ -370,9 +370,9 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
raise Exception(message)
return resp_body['subnet']
def _create_router(self, router_name, tenant_id):
def _create_router(self, router_name, project_id):
kwargs = {'name': router_name,
'tenant_id': tenant_id}
'project_id': project_id}
if self.public_network_id:
kwargs['external_gateway_info'] = dict(
network_id=self.public_network_id)
@@ -613,7 +613,7 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
# enabled, cleanup_default_secgroup will not raise error. But
# here cannot use test_utils.is_extension_enabled for it will
# cause "circular dependency". So here just use try...except to
# ensure tenant deletion without big changes.
# ensure project deletion without big changes.
LOG.info("Deleting project and security group for project: %s",
project_id)
@@ -622,12 +622,12 @@ class DynamicCredentialProvider(cred_provider.CredentialProvider):
self.cleanup_default_secgroup(
self.security_groups_admin_client, project_id)
except lib_exc.NotFound:
LOG.warning("failed to cleanup tenant %s's secgroup",
LOG.warning("failed to cleanup project %s's secgroup",
project_id)
try:
self.creds_client.delete_project(project_id)
except lib_exc.NotFound:
LOG.warning("tenant with id: %s not found for delete",
LOG.warning("project with id: %s not found for delete",
project_id)
self._creds = {}
+2 -2
View File
@@ -688,7 +688,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
sg_rule = sec_group_rules_client.create_security_group_rule(**ruleset)
sg_rule = sg_rule['security_group_rule']
self.assertEqual(secgroup['tenant_id'], sg_rule['tenant_id'])
self.assertEqual(secgroup['project_id'], sg_rule['project_id'])
self.assertEqual(secgroup['id'], sg_rule['security_group_id'])
return sg_rule
@@ -1170,7 +1170,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
floatingip_kwargs = {
'floating_network_id': external_network_id,
'port_id': port_id,
'tenant_id': server.get('project_id') or server['tenant_id'],
'project_id': server.get('project_id') or server['tenant_id'],
'fixed_ip_address': ip4,
}
if CONF.network.subnet_id:
@@ -735,11 +735,11 @@ class TestDynamicCredentialProvider(base.TestCase):
@mock.patch('tempest.lib.common.rest_client.RestClient')
def test_network_cleanup(self, MockRestClient):
def side_effect(**args):
return {"security_groups": [{"tenant_id": args['tenant_id'],
return {"security_groups": [{"project_id": args['project_id'],
"name": args['name'],
"description": args['name'],
"security_group_rules": [],
"id": "sg-%s" % args['tenant_id']}]}
"id": "sg-%s" % args['project_id']}]}
creds = dynamic_creds.DynamicCredentialProvider(
neutron_available=True,
project_network_cidr='10.100.0.0/16', project_network_mask_bits=28,