base¶
通用的内部对象模型
- class oslo_versionedobjects.base.ComparableVersionedObject¶
提供比较方法的混合类
当需要比较对象时(例如在测试中),可以使用此混合类。
- class oslo_versionedobjects.base.ObjectListBase(*args, **kwargs)¶
对象列表的混合类。
可以将此混合类添加为实现对象列表的对象的基础类。它添加了一个名为“objects”的字段,该字段是列表存储,并且本身的行为就像一个列表。它可以自动序列化对象列表。
- class oslo_versionedobjects.base.TimestampedObject¶
带有时间戳字段的数据库支持对象的混合类。
从 oslo_db TimestampMixin 继承的 Sqlalchemy 模型将包含这些字段,并且相应的对象将受益于此混合类。
- class oslo_versionedobjects.base.VersionedObject(context=None, **kwargs)¶
基础类和对象工厂。
这构成了可以通过 RPC 远程传输或实例化的所有对象的基础。只需定义从这个基础类继承的类,就可以使其可远程实例化。对象应实现必要的“get”类方法和适当的“save”对象方法。
- obj_attr_is_set(attrname)¶
测试对象以查看是否存在 attrname。
如果命名的属性已设置值,则返回 True,否则返回 False。如果 attrname 不是此对象的有效属性,则引发 AttributeError。
- classmethod obj_class_from_name(objname, objver)¶
根据名称和版本从注册表中返回一个类。
- obj_clone()¶
创建一个副本。
- classmethod obj_from_primitive(primitive, context=None)¶
对象逐字段的填充。
- obj_get_changes()¶
返回已更改字段及其新值的字典。
- obj_load_attr(attrname)¶
从真实对象加载额外的属性。
这应该加载 self.$attrname 并缓存任何可能对未来加载操作有用的数据。
- obj_make_compatible(primitive, target_version)¶
使对象表示与目标版本兼容。
此方法负责获取对象的原始表示形式,并使其适合给定的 target_version。这可能意味着转换对象属性的格式,删除自目标版本以来添加的属性等。通常
如果新版本的对象添加了字段,此例程应将其从旧版本中删除。
如果新版本更改或限制了字段的格式,则应将其转换回仅了解旧版本的客户端可以容忍的内容。
如果此对象依赖的对象被更新,则此对象也应进行版本更新。然后,此例程应将依赖对象回退到较低版本(通过调用其 obj_make_compatible()),如果此对象的请求版本早于添加新依赖对象时的版本。
- 参数:
primitive –
obj_to_primitive()的结果target_version – 接收对象的请求版本
- 引发:
oslo_versionedobjects.exception.UnsupportedObjectError如果由于某种原因无法进行转换
- classmethod obj_name()¶
返回对象名称
返回用于远程水合的此对象的规范名称。
- obj_reset_changes(fields=None, recursive=False)¶
重置已更改字段的列表。
- 参数:
fields – 要重置的字段列表,如果为 None,则为“all”。
recursive – 在正在重置的字段列表中任何子对象上调用 obj_reset_changes(recursive=True)。
这不是“恢复到以前的值”。
在递归重置中指定字段仅在顶层有效。所有内容都将重置为全部。
- obj_to_primitive(target_version=None, version_manifest=None)¶
简单的基本情况反序列化。
这为 fields 中的每个项目调用 to_primitive()。
- obj_what_changed()¶
返回已修改字段的集合。
- save(context)¶
将更改的字段保存回存储。
这对于子类是可选的,但在此基础类中呈现以保持那些子类的一致性。
- class oslo_versionedobjects.base.VersionedObjectDictCompat¶
提供字典键访问兼容性的混合类
如果对象需要支持使用字典项而不是对象属性访问属性,请从该类继承。这仅应作为临时措施,直到所有调用者都转换为使用现代属性访问为止。
- class oslo_versionedobjects.base.VersionedObjectSerializer¶
一个 VersionedObject 感知的序列化器。
此方法实现了 Oslo 序列化器接口,并提供了序列化和反序列化 VersionedObject 实体。任何需要接受或返回 VersionedObjects 作为参数或结果值的服务都应将其传递给其 RPCClient 和 RPCServer 对象。
- OBJ_BASE_CLASS¶
- deserialize_entity(context, entity)¶
从原始形式反序列化某些内容。
- 参数:
ctxt – 反序列化形式的请求上下文
entity – 要反序列化的原始数据
- 返回值:
实体的反序列化形式
- serialize_entity(context, entity)¶
将某些内容序列化为原始形式。
- 参数:
ctxt – 反序列化形式的请求上下文
entity – 要序列化的实体
- 返回值:
实体的序列化形式
- oslo_versionedobjects.base.obj_make_list(context, list_obj, item_cls, db_list, **extra_args)¶
从原始列表构造一个对象列表。
此方法在 db_list 的每个项目上调用 item_cls._from_db_object(),并将结果对象添加到 list_obj。
- 参数:context:
请求上下文
- 参数:list_obj:
一个 ObjectListBase 对象
- 参数:item_cls:
列表中对象的 VersionedObject 类
- 参数:db_list:
要转换为对象的原始列表
- 参数:extra_args:
传递给 _from_db_object() 的额外参数
- 返回值:
list_obj
- oslo_versionedobjects.base.obj_tree_get_versions(objname, tree=None)¶
构造依赖对象版本的映射。
此方法构建一个依赖对象版本的列表,给定一个具有其他对象作为字段的顶级对象。它递归地遍历树以确定顶级对象中可能包含的所有对象(按符号名称)以及每个对象的最大版本。结果是一个字典,例如
{'MyObject': '1.23', ... }
- 参数:
objname – 开始的顶级对象
tree – 内部使用,在此处传递 None。
- 返回值:
对象名称和版本的字典
- oslo_versionedobjects.base.remotable(fn)¶
用于远程对象方法的装饰器。
- oslo_versionedobjects.base.remotable_classmethod(fn)¶
用于远程类方法的装饰器。