资源¶
基础资源类。
Resource 类是一个基础类,用于表示远程资源。构成此资源请求或响应的属性被指定为资源子类上的类成员,其值为组件类型,包括 Body、Header 和 URI。
对于更新管理,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。