资源

基础资源类。

Resource 类是一个基础类,用于表示远程资源。构成此资源请求或响应的属性被指定为资源子类上的类成员,其值为组件类型,包括 BodyHeaderURI

对于更新管理,Resource 使用一系列 _ComponentManager 实例来管理该特定组件类型的属性。这对于 Body 和 Header 类型特别有用,以便仅发送请求到服务器所需的数值。

在发出请求时,会检查每个管理器以收集构建通过 keystoneauth 会话发送的请求所需的 URI、主体和标头数据。来自 keystoneauth 的响应随后被转换为此 Resource 类的适当组件和类型,然后返回给调用者。

组件

class openstack.resource.Body(name, type=None, default=None, alias=None, aka=None, alternate_id=False, list_type=None, coerce_to_default=False, deprecated=False, deprecation_reason=None)
class openstack.resource.Header(name, type=None, default=None, alias=None, aka=None, alternate_id=False, list_type=None, coerce_to_default=False, deprecated=False, deprecation_reason=None)
class openstack.resource.URI(name, type=None, default=None, alias=None, aka=None, alternate_id=False, list_type=None, coerce_to_default=False, deprecated=False, deprecation_reason=None)

Resource 类

class openstack.resource.Resource(_synchronized=False, connection=None, **attrs)

基础资源

参数:
  • _synchronized (bool) – 不打算直接使用。请参阅 new()existing()

  • connection (openstack.connection.Connection) – 对正在使用的 Connection 的引用。默认为 None,允许在单元测试中等情况下使用不具有活动 Connection 的 Resource 对象。Resource 代码中对 self._connection 的使用应检查是否为 None 以进行保护。

resource_key = None

资源的单数形式的键。

resources_key = None

资源的复数形式的键。

pagination_key = None

用于分页链接的键

id

此资源的 ID。

name

此资源的名称。

location

此资源在 OpenStack 中的位置。

base_path = ''

此资源的 URI 的基本部分。

allow_create = False

允许对此资源进行创建操作。

allow_fetch = False

允许对此资源进行获取操作。

allow_commit = False

允许对此资源进行更新操作。

allow_delete = False

允许对此资源进行删除操作。

allow_list = False

允许对此资源进行列表操作。

allow_head = False

允许对此资源进行 head 操作。

allow_patch = False

允许对此资源进行 patch 操作。

allow_empty_commit = False

提交操作发生在标头或主体未发生更改的情况下。

commit_method = 'PUT'

提交资源的 HTTP 方法 (PUT、PATCH、POST)

create_method = 'POST'

创建资源的 HTTP 方法 (POST、PUT)

commit_jsonpatch = False

提交是否使用 JSON patch 格式。

requires_id = True

此资源调用是否需要 ID

create_requires_id = None

创建是否需要 ID(如果为 None,则由方法确定)。

create_exclude_id_from_body = False

创建是否应从请求主体中排除 ID。

has_body = True

响应是否具有主体

create_returns_body = None

创建是否返回主体(如果为 False,则需要 ID),默认为 has_body

microversion = None

API 微版本(字符串或 None),此资源加载时使用的版本

keys() 一个类似于集合的对象,提供对 D 的键的视图
items() 一个类似于集合的对象,提供对 D 的项目的视图
classmethod new(**kwargs)

创建一个新的资源实例。

在创建实例时,将 Resource_synchronized 参数设置为 False,以指示资源尚未存在于服务器端。这将把在 **kwargs 中传递的所有属性标记为资源的“脏”属性,从而在后续调用(如 update())中跟踪它们的变化。

参数:

kwargs (dict) – 每个命名参数都将作为结果 Resource 对象的属性设置。

classmethod existing(connection=None, **kwargs)

创建一个现有远程资源的实例。

在创建实例时,将 Resource_synchronized 参数设置为 True,以指示它代表服务器端现有资源的的状态。因此,在 **kwargs 中传递的所有属性都被认为是“干净的”,因此立即调用 update() 将不会生成要在服务器上修改的属性的主体。

参数:

kwargs (dict) – 每个命名参数都将作为结果 Resource 对象的属性设置。

to_dict(body=True, headers=True, computed=True, ignore_none=False, original_names=False, _to_munch=False)

返回此资源的内容的字典

参数:
  • body (bool) – 在返回的字典中包含 Body 属性。

  • headers (bool) – 在返回的字典中包含 Header 属性。

  • computed (bool) – 在返回的字典中包含 Computed 属性。

  • ignore_none (bool) – 如果为 True,则排除值为 None 的键/值对。这将排除服务器尚未返回的属性。

  • original_names (bool) – 如果为 True,则使用从服务器接收到的属性名称。

  • _to_munch (bool) – 仅供内部使用。转换为 utils.Munch 而不是 dict。

返回值:

一个键/值对的字典,其中键的命名方式与此类中的属性名称相同。

toDict(body=True, headers=True, computed=True, ignore_none=False, original_names=False, _to_munch=False)

返回此资源的内容的字典

参数:
  • body (bool) – 在返回的字典中包含 Body 属性。

  • headers (bool) – 在返回的字典中包含 Header 属性。

  • computed (bool) – 在返回的字典中包含 Computed 属性。

  • ignore_none (bool) – 如果为 True,则排除值为 None 的键/值对。这将排除服务器尚未返回的属性。

  • original_names (bool) – 如果为 True,则使用从服务器接收到的属性名称。

  • _to_munch (bool) – 仅供内部使用。转换为 utils.Munch 而不是 dict。

返回值:

一个键/值对的字典,其中键的命名方式与此类中的属性名称相同。

copy(body=True, headers=True, computed=True, ignore_none=False, original_names=False, _to_munch=False)

返回此资源的内容的字典

参数:
  • body (bool) – 在返回的字典中包含 Body 属性。

  • headers (bool) – 在返回的字典中包含 Header 属性。

  • computed (bool) – 在返回的字典中包含 Computed 属性。

  • ignore_none (bool) – 如果为 True,则排除值为 None 的键/值对。这将排除服务器尚未返回的属性。

  • original_names (bool) – 如果为 True,则使用从服务器接收到的属性名称。

  • _to_munch (bool) – 仅供内部使用。转换为 utils.Munch 而不是 dict。

返回值:

一个键/值对的字典,其中键的命名方式与此类中的属性名称相同。

create(session, prepend_key=True, base_path=None, *, resource_request_key=None, resource_response_key=None, microversion=None, **params)

基于此实例创建远程资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • prepend_key – 一个布尔值,指示是否应在资源创建请求中将 resource_key 附加到请求体之前。默认为 True。

  • base_path (str) – 创建资源的 URI 的基本部分,如果与 base_path 不同。

  • resource_request_key (str) – 覆盖在将键附加到请求体时使用 self.resource_key 的用法。如果 prepend_key 为 false,则忽略。

  • resource_response_key (str) – 覆盖在处理响应体时使用 self.resource_key 的用法。如果 prepend_key 为 false,则忽略。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • params (dict) – 传递的额外参数。

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_create 未设置为 True

classmethod bulk_create(session, data, prepend_key=True, base_path=None, *, microversion=None, **params)

基于此类和数据创建多个远程资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • data – 字典列表,表示要创建的资源。

  • prepend_key – 一个布尔值,指示是否应在资源创建请求中将 resource_key 附加到请求体之前。默认为 True。

  • base_path (str) – 创建资源的 URI 的基本部分,如果与 base_path 不同。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • params (dict) – 传递的额外参数。

返回值:

Resource 对象的生成器。

引发:

MethodNotSupported 如果 Resource.allow_create 未设置为 True

fetch(session, requires_id=True, base_path=None, error_message=None, skip_cache=False, *, resource_response_key=None, microversion=None, **params)

基于此实例获取远程资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • requires_id (boolean) – 一个布尔值,指示资源 ID 是否应作为请求的 URI 的一部分。

  • base_path (str) – 获取资源的 URI 的基本部分,如果与 base_path 不同。

  • error_message (str) – 如果请求的对象不存在,则返回的错误消息。

  • skip_cache (bool) – 一个布尔值,指示是否应跳过此调用的可选 API 缓存。

  • resource_response_key (str) – 覆盖在处理响应体时使用 self.resource_key 的用法。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • params (dict) – 可以使用的额外参数。

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_fetch 未设置为 True

引发:

NotFoundException 如果未找到该资源。

head(session, base_path=None, *, microversion=None)

基于此实例获取远程资源的头部信息。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • base_path (str) – 获取资源的 URI 的基本部分,如果与 base_path 不同。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_head 未设置为 True

引发:

NotFoundException 如果未找到该资源。

property requires_commit

下一个 commit() 调用是否会执行任何操作。

commit(session, prepend_key=True, has_body=True, retry_on_conflict=None, base_path=None, *, microversion=None, **kwargs)

提交实例的状态到远程资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • prepend_key – 一个布尔值,指示是否应在资源更新请求中将 resource_key 附加到前面。默认为 True。

  • retry_on_conflict (bool) – 是否启用在 HTTP CONFLICT (409) 发生时重试。值为 None 将使用 Adapter 的默认值。

  • base_path (str) – 修改资源的 URI 的基本部分,如果与 base_path 不同。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • kwargs (dict) – 将传递给 _prepare_request() 的参数

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_commit 未设置为 True

patch(session, patch=None, prepend_key=True, has_body=True, retry_on_conflict=None, base_path=None, *, microversion=None)

修补远程资源。

允许通过提供要应用于资源的 JSON 补丁列表来修改资源。补丁可以使用原始(服务器端)和 SDK 字段名称。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • patch – 附加的 JSON 补丁,为列表或单个补丁项。如果提供,它将应用于当前资源的任何更改之上。

  • prepend_key – 一个布尔值,指示是否应在资源更新请求中将 resource_key 附加到前面。默认为 True。

  • retry_on_conflict (bool) – 是否启用在 HTTP CONFLICT (409) 发生时重试。值为 None 将使用 Adapter 的默认值。

  • base_path (str) – 修改资源的 URI 的基本部分,如果与 base_path 不同。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_patch 未设置为 True

delete(session, error_message=None, *, microversion=None, **kwargs)

基于此实例删除远程资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • kwargs (dict) – 将传递给 _prepare_request() 的参数

返回值:

Resource 实例。

引发:

MethodNotSupported 如果 Resource.allow_commit 未设置为 True

引发:

NotFoundException 如果未找到该资源。

classmethod list(session, paginated=True, base_path=None, allow_unknown_params=False, *, microversion=None, headers=None, max_items=None, **params)

此方法是一个生成器,它产生资源对象。

此资源对象列表生成器处理分页并接受查询参数以进行响应过滤。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • paginated (bool) – 如果对该资源的 GET 返回分页响应序列,则为 True,否则如果 GET 只返回一页数据,则为 False。**当 paginated 为 False 时,无论 API 是否支持分页,都将只返回一页数据。**

  • base_path (str) – 列出资源的 URI 的基本部分,如果与 base_path 不同。

  • allow_unknown_params (bool) – 如果设置为 True,则接受但丢弃未知的查询参数。这允许获取“filters”列表并将所有已知内容传递给服务器。将 False 导致在传递未知查询参数时发生验证异常。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • headers (dict) – 要注入到 HTTP 请求中的其他标头。

  • max_items (int) – 要返回的最大项目数。通常,这必须与 paginated=True 一起使用。

  • params (dict) – 这些关键字参数将通过 _transpose() 方法传递,以查找其中任何一个是否与要发送到 get() 的预期查询参数匹配。它们还会针对 base_path 格式字符串进行检查,以查看此参数的内容是否需要填充任何路径片段。服务器支持的用作过滤器的参数将传递到 API 调用中,其余参数将应用于检索结果的过滤器。

返回值:

Resource 对象的生成器。

引发:

MethodNotSupported 如果 Resource.allow_list 未设置为 True

引发:

InvalidResourceQuery 如果查询包含无效参数。

classmethod find(session, name_or_id, ignore_missing=True, list_base_path=None, *, microversion=None, all_projects=None, **params)

按其名称或 ID 查找资源。

参数:
  • session (Adapter) – 用于发出此请求的会话。

  • name_or_id – 此资源的标识符(如果请求需要)。默认值为 None

  • ignore_missing (bool) – 当设置为 False 时,如果资源不存在,将引发 NotFoundException。当设置为 True 时,尝试查找不存在的资源时将返回 None。

  • list_base_path (str) – 需要列出资源时使用的 base_path。

  • microversion (str) – 覆盖协商版本使用的 API 版本。

  • params (dict) – 传递到基础方法中的任何其他参数,例如传递给 existing() 以传递 URI 参数。

返回值:

与给定名称或 ID 匹配的 Resource 对象,或者如果没有任何匹配项则返回 None。

引发:

openstack.exceptions.DuplicateResource 如果在此请求中找到多个资源。

引发:

openstack.exceptions.NotFoundException 如果未找到任何内容且 ignore_missing 为 False