From 6d622630095bbd50dfba0c6ed57f504b5a13d5ae Mon Sep 17 00:00:00 2001 From: Matt Riedemann Date: Mon, 4 Feb 2019 09:34:18 -0500 Subject: [PATCH] Add ListOfUUIDField This adds a simple ListOfUUIDField which is copied from kuryr-kubernetes and is also needed in nova. Change-Id: Ife866af6e07c887774689fd98ac6fde6fa55d6de --- oslo_versionedobjects/fields.py | 4 ++++ oslo_versionedobjects/tests/test_fields.py | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/oslo_versionedobjects/fields.py b/oslo_versionedobjects/fields.py index 406ff8db..8073e70b 100644 --- a/oslo_versionedobjects/fields.py +++ b/oslo_versionedobjects/fields.py @@ -1180,6 +1180,10 @@ class ListOfObjectsField(AutoTypedField): super(ListOfObjectsField, self).__init__(**kwargs) +class ListOfUUIDField(AutoTypedField): + AUTO_TYPE = List(UUID()) + + class IPAddressField(AutoTypedField): AUTO_TYPE = IPAddress() diff --git a/oslo_versionedobjects/tests/test_fields.py b/oslo_versionedobjects/tests/test_fields.py index a1702b42..153ad677 100644 --- a/oslo_versionedobjects/tests/test_fields.py +++ b/oslo_versionedobjects/tests/test_fields.py @@ -851,6 +851,24 @@ class TestListOfIntegers(TestField): self.assertEqual('[[1, 2]]', self.field.stringify([[1, 2]])) +class TestListOfUUIDField(TestField): + def setUp(self): + super(TestListOfUUIDField, self).setUp() + self.field = fields.ListOfUUIDField() + self.uuid1 = '6b2097ea-d0e3-44dd-b131-95472b3ea8fd' + self.uuid2 = '478c193d-2533-4e71-ab2b-c7683f67d7f9' + self.coerce_good_values = [([self.uuid1, self.uuid2], + [self.uuid1, self.uuid2])] + # coerce_bad_values is intentionally ignored since the UUID field + # allows non-UUID values for now. See TestUUIDField for examples. + self.to_primitive_values = [([self.uuid1], [self.uuid1])] + self.from_primitive_values = [([self.uuid1], [self.uuid1])] + + def test_stringify(self): + self.assertEqual('[%s,%s]' % (self.uuid1, self.uuid2), + self.field.stringify([self.uuid1, self.uuid2])) + + class TestLocalMethods(test.TestCase): @mock.patch.object(obj_base.LOG, 'exception') def test__make_class_properties_setter_value_error(self, mock_log):