]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
fix reference to tenant id.
authorfujioka yuuichi <fujioka-yuuichi@zx.mxh.nes.nec.co.jp>
Tue, 14 May 2013 00:01:17 +0000 (09:01 +0900)
committerfujioka yuuichi <fujioka-yuuichi@zx.mxh.nes.nec.co.jp>
Thu, 16 May 2013 10:28:13 +0000 (19:28 +0900)
Administrator can create resource, even if the tenant of resource is
different from the one of authentication. For example, administrator
can operate 'quantum net-create' command with different tenant
between the authentication tenant(--os-tenant-name) and --tenant-id.

In this case, quota cannot be restricted with the resource tenant,
because it is restricted with --os-tenant-name.

This patch fixes this problem.

Fixes: bug #1179729
Change-Id: I8ce893bb583d52f81c661082372d725bebf9c1be

quantum/db/quota_db.py
quantum/tests/unit/test_quota_ext.py

index 5ccf8adb77593ad4dc4f4421cf22c2027f72f280..eef09f2941a64ec5f36576c631cf4df4cd880a31 100644 (file)
@@ -138,7 +138,7 @@ class DbQuotaDriver(object):
 
         # Grab and return the quotas (without usages)
         quotas = DbQuotaDriver.get_tenant_quotas(
-            context, sub_resources, context.tenant_id)
+            context, sub_resources, tenant_id)
 
         return dict((k, v) for k, v in quotas.items())
 
index 73cfc74f97d34496251841813d43d2c2fbd21b9d..3b4315503f25e08ae221664a12f0a57bf9683619 100644 (file)
@@ -9,9 +9,11 @@ from quantum.common import config
 from quantum.common import exceptions
 from quantum import context
 from quantum.db import api as db
+from quantum.db import quota_db
 from quantum import manager
 from quantum.plugins.linuxbridge.db import l2network_db_v2
 from quantum import quota
+from quantum.tests import base
 from quantum.tests.unit import test_api_v2
 from quantum.tests.unit import test_extensions
 from quantum.tests.unit import testlib_api
@@ -341,3 +343,31 @@ class QuotaExtensionCfgTestCase(QuotaExtensionTestCase):
 
 class QuotaExtensionCfgTestCaseXML(QuotaExtensionCfgTestCase):
     fmt = 'xml'
+
+
+class TestDbQuotaDriver(base.BaseTestCase):
+    """Test for quantum.db.quota_db.DbQuotaDriver."""
+
+    def test_get_tenant_quotas_arg(self):
+        """Call quantum.db.quota_db.DbQuotaDriver._get_quotas."""
+
+        driver = quota_db.DbQuotaDriver()
+        ctx = context.Context('', 'bar')
+
+        foo_quotas = {'network': 5}
+        default_quotas = {'network': 10}
+        target_tenant = 'foo'
+
+        with mock.patch.object(quota_db.DbQuotaDriver,
+                               'get_tenant_quotas',
+                               return_value=foo_quotas) as get_tenant_quotas:
+
+            quotas = driver._get_quotas(ctx,
+                                        target_tenant,
+                                        default_quotas,
+                                        ['network'])
+
+            self.assertEqual(quotas, foo_quotas)
+            get_tenant_quotas.assert_called_once_with(ctx,
+                                                      default_quotas,
+                                                      target_tenant)