diff --git a/neutron_lib/objects/extensions/__init__.py b/neutron_lib/objects/extensions/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/neutron_lib/objects/extensions/standardattributes.py b/neutron_lib/objects/extensions/standardattributes.py new file mode 100644 index 000000000..24e9987fa --- /dev/null +++ b/neutron_lib/objects/extensions/standardattributes.py @@ -0,0 +1,50 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from oslo_versionedobjects import fields as obj_fields + + +STANDARD_ATTRIBUTES = { + 'revision_number': obj_fields.IntegerField(), + 'description': obj_fields.StringField(nullable=True), + 'created_at': obj_fields.DateTimeField(nullable=True, tzinfo_aware=False), + 'updated_at': obj_fields.DateTimeField(nullable=True, tzinfo_aware=False), +} + + +def add_standard_attributes(cls): + """Add standard attributes to the said class. + + :param cls: The class to add standard attributes to. + :returns: None. + """ + # Don't use parent's fields in case child class doesn't create + # its own instance of list + cls.fields = cls.fields.copy() + cls.fields.update(STANDARD_ATTRIBUTES) + # those fields are updated by sqlalchemy itself + cls.fields_no_update += ('created_at', 'updated_at') + # revision numbers are managed by service plugin and are bumped + # automatically; consumers should not bump them explicitly + cls.fields_no_update.append('revision_number') + + +def add_tag_filter_names(cls): + """Add tag filter names to the said class. + + :param cls: The class to add tag filter names to. + :returns: None. + """ + cls.add_extra_filter_name("tags") + cls.add_extra_filter_name("not-tags") + cls.add_extra_filter_name("tags-any") + cls.add_extra_filter_name("not-tags-any") diff --git a/releasenotes/notes/rehome-obj-stdattrs-06c4df5bb1fca3f1.yaml b/releasenotes/notes/rehome-obj-stdattrs-06c4df5bb1fca3f1.yaml new file mode 100644 index 000000000..d5ae905ba --- /dev/null +++ b/releasenotes/notes/rehome-obj-stdattrs-06c4df5bb1fca3f1.yaml @@ -0,0 +1,4 @@ +--- +features: + - The ``neutron.objects.extensions.standardattributes`` module is now + available as ``neutron_lib.objects.extensions.standardattributes``.