From 7e36553fa16e599b65abb2ad1f032fdfc08cf1c8 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Sat, 22 Oct 2016 23:20:49 -0700 Subject: [PATCH] Add missing compat routine for Usage object We added a v1.1 to Usage without a compat routine to go with it. It's not really a big deal as we're not sending this over RPC anywhere yet that I know of, but we should have this for the sake of completeness. Change-Id: Ia50448741b29e1c33e4988a9476418b6ba835983 --- nova/objects/resource_provider.py | 7 +++++++ nova/tests/unit/objects/test_resource_provider.py | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/nova/objects/resource_provider.py b/nova/objects/resource_provider.py index 30dc71e20801..7d0f460907f7 100644 --- a/nova/objects/resource_provider.py +++ b/nova/objects/resource_provider.py @@ -937,6 +937,13 @@ class Usage(base.NovaObject): 'usage': fields.NonNegativeIntegerField(), } + def obj_make_compatible(self, primitive, target_version): + super(Usage, self).obj_make_compatible(primitive, target_version) + target_version = versionutils.convert_version_to_tuple(target_version) + if target_version < (1, 1) and 'resource_class' in primitive: + rc = primitive['resource_class'] + rc_cache.raise_if_custom_resource_class_pre_v1_1(rc) + @staticmethod def _from_db_object(context, target, source): for field in target.fields: diff --git a/nova/tests/unit/objects/test_resource_provider.py b/nova/tests/unit/objects/test_resource_provider.py index bd0ba3ccc46b..75e2c01e9691 100644 --- a/nova/tests/unit/objects/test_resource_provider.py +++ b/nova/tests/unit/objects/test_resource_provider.py @@ -541,3 +541,13 @@ class TestAllocationListNoDB(test_objects._LocalTest, class TestRemoteAllocationListNoDB(test_objects._RemoteTest, _TestAllocationListNoDB): USES_DB = False + + +class TestUsageNoDB(test_objects._LocalTest): + USES_DB = False + + def test_v1_1_resource_class(self): + usage = objects.Usage(resource_class='foo') + self.assertRaises(ValueError, + usage.obj_to_primitive, + target_version='1.0')