298c5107eb
This allows us to use a new version of flake8 that supports Python 3-only syntax. Existing issues are resolved. Change-Id: I5de7e5cde6a5260f4e7e57586952256b59d3756d Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# 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 datetime import datetime
|
|
|
|
from oslo_versionedobjects import base
|
|
from oslo_versionedobjects import fields as obj_fields
|
|
|
|
# INTRO: This example shows how a object (a plain-old-python-object) with
|
|
# some associated fields can be used, and some of its built-in methods can
|
|
# be used to convert that object into a primitive and back again (as well
|
|
# as determine simple changes on it.
|
|
|
|
|
|
# Ensure that we always register our object with an object registry,
|
|
# so that it can be deserialized from its primitive form.
|
|
@base.VersionedObjectRegistry.register
|
|
class IOTLightbulb(base.VersionedObject):
|
|
"""Simple light bulb class with some data about it."""
|
|
|
|
VERSION = '1.0' # Initial version
|
|
|
|
#: Namespace these examples will use.
|
|
OBJ_PROJECT_NAMESPACE = 'versionedobjects.examples'
|
|
|
|
#: Required fields this object **must** declare.
|
|
fields = {
|
|
'serial': obj_fields.StringField(),
|
|
'manufactured_on': obj_fields.DateTimeField(),
|
|
}
|
|
|
|
|
|
# Now do some basic operations on a light bulb.
|
|
bulb = IOTLightbulb(serial='abc-123', manufactured_on=datetime.now())
|
|
print("The __str__() output of this new object: %s" % bulb)
|
|
print("The 'serial' field of the object: %s" % bulb.serial)
|
|
bulb_prim = bulb.obj_to_primitive()
|
|
print("Primitive representation of this object: %s" % bulb_prim)
|
|
|
|
# Now convert the primitive back to an object (isn't it easy!)
|
|
bulb = IOTLightbulb.obj_from_primitive(bulb_prim)
|
|
|
|
bulb.obj_reset_changes()
|
|
print("The __str__() output of this new (reconstructed)"
|
|
" object: %s" % bulb)
|
|
|
|
# Mutating a field and showing what changed.
|
|
bulb.serial = 'abc-124'
|
|
print("After serial number change, the set of fields that"
|
|
" have been mutated is: %s" % bulb.obj_what_changed())
|