Use project_reader in list servers filters 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
list servers filters tests to use project reader creds in GET server
API calls.
Change-Id: Ife7b1551c5c948071f38639c442508b1da4b6595
Signed-off-by: Jason Paroly <jparoly@redhat.com>
diff --git a/tempest/api/compute/servers/test_list_server_filters.py b/tempest/api/compute/servers/test_list_server_filters.py
index 7873296..45f3348 100644
--- a/tempest/api/compute/servers/test_list_server_filters.py
+++ b/tempest/api/compute/servers/test_list_server_filters.py
@@ -28,6 +28,8 @@
class ListServerFiltersTestJSON(base.BaseV2ComputeTest):
"""Test listing servers filtered by specified attribute"""
+ credentials = ['primary', 'project_reader']
+
@classmethod
def setup_credentials(cls):
cls.set_network_resources(network=True, subnet=True, dhcp=True)
@@ -37,6 +39,10 @@
def setup_clients(cls):
super(ListServerFiltersTestJSON, 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):
@@ -80,7 +86,7 @@
def test_list_servers_filter_by_image(self):
"""Filter the list of servers by image"""
params = {'image': self.image_ref}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1['id'], map(lambda x: x['id'], servers))
@@ -91,7 +97,7 @@
def test_list_servers_filter_by_flavor(self):
"""Filter the list of servers by flavor"""
params = {'flavor': self.flavor_ref_alt}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertNotIn(self.s1['id'], map(lambda x: x['id'], servers))
@@ -102,7 +108,7 @@
def test_list_servers_filter_by_server_name(self):
"""Filter the list of servers by server name"""
params = {'name': self.s1_name}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -113,7 +119,7 @@
def test_list_servers_filter_by_active_status(self):
"""Filter the list of servers by server active status"""
params = {'status': 'active'}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1['id'], map(lambda x: x['id'], servers))
@@ -127,7 +133,7 @@
self.client.stop_server(self.s1['id'])
waiters.wait_for_server_status(self.client, self.s1['id'],
'SHUTOFF')
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
self.client.start_server(self.s1['id'])
waiters.wait_for_server_status(self.client, self.s1['id'],
'ACTIVE')
@@ -144,7 +150,7 @@
Verify only the expected number of servers are returned (one server)
"""
params = {'limit': 1}
- servers = self.client.list_servers(**params)
+ servers = self.reader_client.list_servers(**params)
self.assertEqual(1, len([x for x in servers['servers'] if 'id' in x]))
@decorators.idempotent_id('b1495414-2d93-414c-8019-849afe8d319e')
@@ -154,7 +160,7 @@
Verify only the expected number of servers are returned (no server)
"""
params = {'limit': 0}
- servers = self.client.list_servers(**params)
+ servers = self.reader_client.list_servers(**params)
self.assertEmpty(servers['servers'])
@decorators.idempotent_id('37791bbd-90c0-4de0-831e-5f38cba9c6b3')
@@ -164,8 +170,8 @@
Verify only the expected number of servers are returned (all servers)
"""
params = {'limit': 100000}
- servers = self.client.list_servers(**params)
- all_servers = self.client.list_servers()
+ servers = self.reader_client.list_servers(**params)
+ all_servers = self.reader_client.list_servers()
self.assertEqual(len([x for x in all_servers['servers'] if 'id' in x]),
len([x for x in servers['servers'] if 'id' in x]))
@@ -175,7 +181,7 @@
def test_list_servers_detailed_filter_by_image(self):
""""Filter the detailed list of servers by image"""
params = {'image': self.image_ref}
- body = self.client.list_servers(detail=True, **params)
+ body = self.reader_client.list_servers(detail=True, **params)
servers = body['servers']
self.assertIn(self.s1['id'], map(lambda x: x['id'], servers))
@@ -186,7 +192,7 @@
def test_list_servers_detailed_filter_by_flavor(self):
"""Filter the detailed list of servers by flavor"""
params = {'flavor': self.flavor_ref_alt}
- body = self.client.list_servers(detail=True, **params)
+ body = self.reader_client.list_servers(detail=True, **params)
servers = body['servers']
self.assertNotIn(self.s1['id'], map(lambda x: x['id'], servers))
@@ -197,7 +203,7 @@
def test_list_servers_detailed_filter_by_server_name(self):
"""Filter the detailed list of servers by server name"""
params = {'name': self.s1_name}
- body = self.client.list_servers(detail=True, **params)
+ body = self.reader_client.list_servers(detail=True, **params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -208,7 +214,7 @@
def test_list_servers_detailed_filter_by_server_status(self):
"""Filter the detailed list of servers by server status"""
params = {'status': 'active'}
- body = self.client.list_servers(detail=True, **params)
+ body = self.reader_client.list_servers(detail=True, **params)
servers = body['servers']
test_ids = [s['id'] for s in (self.s1, self.s2, self.s3)]
@@ -223,7 +229,7 @@
"""Filter the list of servers by part of server name"""
# List all servers that contains '-instance' in name
params = {'name': '-instance'}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -234,7 +240,7 @@
part_name = self.s1_name[6:-1]
params = {'name': part_name}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -248,7 +254,7 @@
regexes = [r'^.*\-instance\-[0-9]+$', r'^.*\-instance\-.*$']
for regex in regexes:
params = {'name': regex}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -259,7 +265,7 @@
part_name = self.s1_name[-10:]
params = {'name': part_name}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers))
@@ -279,22 +285,22 @@
# so here look for the longest server ip, and filter by that ip,
# so as to ensure only one server is returned.
ip_list = {}
- self.s1 = self.client.show_server(self.s1['id'])['server']
+ self.s1 = self.reader_client.show_server(self.s1['id'])['server']
# Get first ip address in spite of v4 or v6
ip_addr = self.s1['addresses'][self.fixed_network_name][0]['addr']
ip_list[ip_addr] = self.s1['id']
- self.s2 = self.client.show_server(self.s2['id'])['server']
+ self.s2 = self.reader_client.show_server(self.s2['id'])['server']
ip_addr = self.s2['addresses'][self.fixed_network_name][0]['addr']
ip_list[ip_addr] = self.s2['id']
- self.s3 = self.client.show_server(self.s3['id'])['server']
+ self.s3 = self.reader_client.show_server(self.s3['id'])['server']
ip_addr = self.s3['addresses'][self.fixed_network_name][0]['addr']
ip_list[ip_addr] = self.s3['id']
longest_ip = max([[len(ip), ip] for ip in ip_list])[1]
params = {'ip': longest_ip}
- body = self.client.list_servers(**params)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(ip_list[longest_ip], map(lambda x: x['id'], servers))
@@ -311,7 +317,7 @@
# query addresses of the 3 servers
addrs = []
for s in [self.s1, self.s2, self.s3]:
- s_show = self.client.show_server(s['id'])['server']
+ s_show = self.reader_client.show_server(s['id'])['server']
addr_spec = s_show['addresses'][self.fixed_network_name][0]
addrs.append(addr_spec['addr'])
# find common part of the 3 ip addresses
@@ -329,8 +335,8 @@
else:
params = {'ip6': prefix}
# capture all servers in case something goes wrong
- all_servers = self.client.list_servers(detail=True)
- body = self.client.list_servers(**params)
+ all_servers = self.reader_client.list_servers(detail=True)
+ body = self.reader_client.list_servers(**params)
servers = body['servers']
self.assertIn(self.s1_name, map(lambda x: x['name'], servers),
@@ -350,5 +356,5 @@
Verify only the expected number of servers are returned (one server)
"""
params = {'limit': 1}
- servers = self.client.list_servers(detail=True, **params)
+ servers = self.reader_client.list_servers(detail=True, **params)
self.assertEqual(1, len(servers['servers']))