From 6e35b5785d12513dc0076145f4de5e1f98034250 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Sat, 28 Jan 2012 22:52:29 -0500 Subject: Add 'all_tenants' filter to GET /servers. Update the OpenStack API's GET /servers method so that it only returns servers from a single tenant when an admin account is used. Adds an 'all_tenants' filter option that can be used to obtain servers from all tenants (legacy behavior). Fixes LP Bug # 923218. Change-Id: I2fd3bd3e2c374ff1aed9c11006585c3f93449c6e --- nova/tests/api/openstack/compute/test_servers.py | 44 ++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'nova/tests') diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index c6c7fcc43..42018a23d 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -884,6 +884,50 @@ class ServersControllerTest(test.TestCase): self.assertTrue('servers' in res) + def test_admin_restricted_tenant(self): + def fake_get_all(context, filters=None, instances=None): + self.assertNotEqual(filters, None) + self.assertEqual(filters['project_id'], 'fake') + return [fakes.stub_instance(100)] + + self.stubs.Set(nova.db, 'instance_get_all_by_filters', + fake_get_all) + + req = fakes.HTTPRequest.blank('/v2/fake/servers', + use_admin_context=True) + res = self.controller.index(req) + + self.assertTrue('servers' in res) + + def test_admin_all_tenants(self): + def fake_get_all(context, filters=None, instances=None): + self.assertNotEqual(filters, None) + self.assertTrue('project_id' not in filters) + return [fakes.stub_instance(100)] + + self.stubs.Set(nova.db, 'instance_get_all_by_filters', + fake_get_all) + + req = fakes.HTTPRequest.blank('/v2/fake/servers?all_tenants=1', + use_admin_context=True) + res = self.controller.index(req) + + self.assertTrue('servers' in res) + + def test_all_tenants(self): + def fake_get_all(context, filters=None, instances=None): + self.assertNotEqual(filters, None) + self.assertEqual(filters['project_id'], 'fake') + return [fakes.stub_instance(100)] + + self.stubs.Set(nova.db, 'instance_get_all_by_filters', + fake_get_all) + + req = fakes.HTTPRequest.blank('/v2/fake/servers?all_tenants=1') + res = self.controller.index(req) + + self.assertTrue('servers' in res) + def test_get_servers_allows_flavor(self): server_uuid = str(utils.gen_uuid()) -- cgit