Use project_reader in create server tests

We have project_reader credentials in tempest and they
use the same project as member role creds. Nova support
the project reader role in get server API. Moving the
create server tests to use project reader creds in GET
API calls.

Partial implement blueprint test-nova-with-srbac-defaults

Change-Id: I416b977ab93e4ddd4e64650f257de1295565d8c4
Signed-off-by: Jason Paroly <jparoly@redhat.com>
This commit is contained in:
Jason Paroly
2025-12-10 08:54:00 -05:00
parent 31e13d302c
commit 4b69de4c03

View File

@@ -33,7 +33,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
This is to create server booted from image and with disk_config 'AUTO'
"""
credentials = ['primary', 'project_reader']
disk_config = 'AUTO'
volume_backed = False
@@ -46,6 +46,10 @@ class ServersTestJSON(base.BaseV2ComputeTest):
def setup_clients(cls):
super(ServersTestJSON, cls).setup_clients()
cls.client = cls.servers_client
if CONF.enforce_scope.nova:
cls.reader_client = cls.os_project_reader.servers_client
else:
cls.reader_client = cls.client
@classmethod
def resource_setup(cls):
@@ -71,7 +75,8 @@ class ServersTestJSON(base.BaseV2ComputeTest):
disk_config=disk_config,
adminPass=cls.password,
volume_backed=cls.volume_backed)
cls.server = cls.client.show_server(server_initial['id'])['server']
cls.server = cls.reader_client.show_server(
server_initial['id'])['server']
@decorators.attr(type='smoke')
@decorators.idempotent_id('5de47127-9977-400a-936f-abcfbec1218f')
@@ -95,7 +100,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('9a438d88-10c6-4bcd-8b5b-5b6e25e1346f')
def test_list_servers(self):
"""The created server should be in the list of all servers"""
body = self.client.list_servers()
body = self.reader_client.list_servers()
servers = body['servers']
found = [i for i in servers if i['id'] == self.server['id']]
self.assertNotEmpty(found)
@@ -103,7 +108,7 @@ class ServersTestJSON(base.BaseV2ComputeTest):
@decorators.idempotent_id('585e934c-448e-43c4-acbf-d06a9b899997')
def test_list_servers_with_detail(self):
"""The created server should be in the detailed list of all servers"""
body = self.client.list_servers(detail=True)
body = self.reader_client.list_servers(detail=True)
servers = body['servers']
found = [i for i in servers if i['id'] == self.server['id']]
self.assertNotEmpty(found)
@@ -193,6 +198,8 @@ class ServersTestFqdnHostnames(base.BaseV2ComputeTest):
server hostname with dashes. This test verifies the same.
"""
credentials = ['primary', 'project_reader']
@classmethod
def setup_credentials(cls):
cls.prepare_instance_network()
@@ -202,6 +209,10 @@ class ServersTestFqdnHostnames(base.BaseV2ComputeTest):
def setup_clients(cls):
super(ServersTestFqdnHostnames, cls).setup_clients()
cls.client = cls.servers_client
if CONF.enforce_scope.nova:
cls.reader_client = cls.os_project_reader.servers_client
else:
cls.reader_client = cls.client
@decorators.idempotent_id('622066d2-39fc-4c09-9eeb-35903c114a0a')
@testtools.skipUnless(
@@ -250,6 +261,7 @@ class ServersV294TestFqdnHostnames(base.BaseV2ComputeTest):
more than 64 characters
"""
credentials = ['primary', 'project_reader']
min_microversion = '2.94'
@classmethod
@@ -261,6 +273,10 @@ class ServersV294TestFqdnHostnames(base.BaseV2ComputeTest):
def setup_clients(cls):
super(ServersV294TestFqdnHostnames, cls).setup_clients()
cls.client = cls.servers_client
if CONF.enforce_scope.nova:
cls.reader_client = cls.os_project_reader.servers_client
else:
cls.reader_client = cls.client
@classmethod
def resource_setup(cls):
@@ -279,7 +295,8 @@ class ServersV294TestFqdnHostnames(base.BaseV2ComputeTest):
accessIPv4=cls.accessIPv4,
adminPass=cls.password,
hostname=cls.hostname)
cls.server = cls.client.show_server(cls.test_server['id'])['server']
cls.server = cls.reader_client.show_server(
cls.test_server['id'])['server']
def verify_metadata_hostname(self, md_json):
md_dict = json.loads(md_json)