From 4fbe94a98cecb150b3e2dfacdc57bf0b713a32f3 Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Tue, 10 Mar 2020 09:34:09 +0000 Subject: [PATCH] Add stub unified limits driver The unified limits driver is starting with the noop driver. This gives us the closest API behaviour to what we describe in the spec. The Unified Limits quota driver will has several purposes: * stop all existing quota enforcement, so we can replace it * stop checking the database for quota info * make the API do what it does today with the noop driver enabled The next few patches will assert the existing API behaviour with the unified limits quota driver. This is the exact same thing that happens today when you enable the noop driver. As we add back limits, using the new unified limits approach, we will update the API so users are informed about what limits are actually being enforced. blueprint unified-limits-nova Change-Id: Iab152a6b2bb58454c32889390ec9add43771fa62 --- nova/quota.py | 13 +++++++++++++ nova/tests/unit/test_quota.py | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/nova/quota.py b/nova/quota.py index a311ecc87f..818c4a4751 100644 --- a/nova/quota.py +++ b/nova/quota.py @@ -768,6 +768,19 @@ class NoopQuotaDriver(object): pass +class UnifiedLimitsDriver(NoopQuotaDriver): + """Ease migration to new unified limits code. + + Help ease migration to unified limits by ensuring the old code + paths still work with unified limits. Eventually the expectation is + all this legacy quota code will go away, leaving the new simpler code + """ + + def __init__(self): + LOG.warning("The Unified Limits Quota Driver is experimental and " + "is under active development. Do not use this driver.") + + class BaseResource(object): """Describe a single resource for quota checking.""" diff --git a/nova/tests/unit/test_quota.py b/nova/tests/unit/test_quota.py index 48910cf75c..c9784602a9 100644 --- a/nova/tests/unit/test_quota.py +++ b/nova/tests/unit/test_quota.py @@ -1871,6 +1871,12 @@ class NoopQuotaDriverTestCase(test.TestCase): self.assertEqual(self.expected_settable_quotas, result) +class UnifiedLimitsDriverTestCase(NoopQuotaDriverTestCase): + def setUp(self): + super(UnifiedLimitsDriverTestCase, self).setUp() + self.driver = quota.UnifiedLimitsDriver() + + @ddt.ddt class QuotaCountTestCase(test.NoDBTestCase): @mock.patch('nova.scheduler.client.report.SchedulerReportClient.'