rehome get_updatable_fields into object utils
This patch rehomes the get_updatable_fields function from neutron.objects.base into neutron-lib. A unit test and release note is also included. Change-Id: I781607ca88626ac6e75b3df53ccee33f61c22fdf
This commit is contained in:
@@ -98,3 +98,11 @@ class NotEqual(FilterObj):
|
|||||||
|
|
||||||
def filter(self, column):
|
def filter(self, column):
|
||||||
return column != self.value
|
return column != self.value
|
||||||
|
|
||||||
|
|
||||||
|
def get_updatable_fields(cls, fields):
|
||||||
|
fields = fields.copy()
|
||||||
|
for field in cls.fields_no_update:
|
||||||
|
if field in fields:
|
||||||
|
del fields[field]
|
||||||
|
return fields
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
from neutron_lib.objects import utils as obj_utils
|
from neutron_lib.objects import utils as obj_utils
|
||||||
from neutron_lib.tests import _base as base
|
from neutron_lib.tests import _base as base
|
||||||
|
|
||||||
@@ -31,13 +33,15 @@ class TestUtils(base.BaseTestCase):
|
|||||||
|
|
||||||
filter_obj = obj_utils.NotIn([1, 2, 3])
|
filter_obj = obj_utils.NotIn([1, 2, 3])
|
||||||
fake_column = FakeColumn([1, 2, 4, 5])
|
fake_column = FakeColumn([1, 2, 4, 5])
|
||||||
self.assertEqual([4, 5], filter_obj.filter(fake_column))
|
self.assertEqual([4, 5],
|
||||||
|
sorted(filter_obj.filter(fake_column)))
|
||||||
|
|
||||||
fake_column = FakeColumn([1, 2])
|
fake_column = FakeColumn([1, 2])
|
||||||
self.assertEqual([], filter_obj.filter(fake_column))
|
self.assertEqual([], filter_obj.filter(fake_column))
|
||||||
|
|
||||||
fake_column = FakeColumn([4, 5])
|
fake_column = FakeColumn([4, 5])
|
||||||
self.assertEqual([4, 5], filter_obj.filter(fake_column))
|
self.assertEqual([4, 5],
|
||||||
|
sorted(filter_obj.filter(fake_column)))
|
||||||
|
|
||||||
def test_get_objects_with_filters_not_equal(self):
|
def test_get_objects_with_filters_not_equal(self):
|
||||||
|
|
||||||
@@ -50,10 +54,23 @@ class TestUtils(base.BaseTestCase):
|
|||||||
|
|
||||||
filter_obj = obj_utils.NotEqual(1)
|
filter_obj = obj_utils.NotEqual(1)
|
||||||
fake_column = FakeColumn([1, 2, 4, 5])
|
fake_column = FakeColumn([1, 2, 4, 5])
|
||||||
self.assertEqual([2, 4, 5], filter_obj.filter(fake_column))
|
self.assertEqual([2, 4, 5],
|
||||||
|
sorted(filter_obj.filter(fake_column)))
|
||||||
|
|
||||||
fake_column = FakeColumn([1])
|
fake_column = FakeColumn([1])
|
||||||
self.assertEqual([], filter_obj.filter(fake_column))
|
self.assertEqual([], filter_obj.filter(fake_column))
|
||||||
|
|
||||||
fake_column = FakeColumn([4, 5])
|
fake_column = FakeColumn([4, 5])
|
||||||
self.assertEqual([4, 5], filter_obj.filter(fake_column))
|
self.assertEqual([4, 5],
|
||||||
|
sorted(filter_obj.filter(fake_column)))
|
||||||
|
|
||||||
|
def test_get_updatable_fields(self):
|
||||||
|
mock_class = mock.Mock()
|
||||||
|
mock_class.fields_no_update = [0, 2, 6]
|
||||||
|
|
||||||
|
mock_fields = mock.Mock()
|
||||||
|
mock_fields.copy.return_value = {k: k for k in range(7)}
|
||||||
|
|
||||||
|
updatable = obj_utils.get_updatable_fields(mock_class, mock_fields)
|
||||||
|
self.assertEqual([1, 3, 4, 5],
|
||||||
|
sorted(list(updatable.keys())))
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- The ``get_updatable_fields`` function from ``neutron.objects.base`` is now
|
||||||
|
available in ``neutron_lib.object.utils``.
|
Reference in New Issue
Block a user