openstack.baremetal.v1.Node

Node 类

Node 类继承自 Resource

class openstack.baremetal.v1.node.Node(_synchronized=False, connection=None, **attrs)

基础资源

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

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

resources_key = 'nodes'

资源的复数形式的键。

base_path = '/nodes'

此资源的 URI 的基本部分。

allow_create = True

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

allow_fetch = True

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

allow_commit = True

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

allow_delete = True

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

allow_list = True

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

allow_patch = True

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

commit_method = 'PATCH'

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

commit_jsonpatch = True

提交是否使用 JSON patch 格式。

allocation_id

与此节点关联的分配的 UUID。在 API 微版本 1.52 中添加。

owner

拥有裸机节点的租户的字符串或 UUID。在 API 微版本 1.50 中添加。

boot_mode

当前的启动模式状态 (uefi/bios)。在 API 微版本 1.75 中添加。

chassis_id

与此节点关联的底盘的 UUID。可以为空或 None。

clean_step

当前的清理步骤。

conductor_group

管理此节点的 Conductor 组。在 API 微版本 1.46 中添加。

created_at

上次更新节点的的时间戳。

deploy_step

当前的部署步骤。在 API 微版本 1.44 中添加。

description

节点的描述。在 API 微版本 1.51 中添加。

driver

驱动程序的名称。

driver_info

驱动程序管理此节点所需的所有元数据。字段列表因驱动程序而异,可以从 openstack.baremetal.v1.driver.Driver 资源中检索。

driver_internal_info

节点驱动程序设置和存储的内部元数据。此为只读的。

extra

一组或多组任意元数据键值对。

fault

导致节点进入维护模式的故障类型。在 API 微版本 1.42 中引入。

id

节点资源的 UUID。

instance_info

用于自定义部署镜像的信息,例如根分区的大小、base64 编码字符串形式的 config drive 和其他元数据。

instance_id

与此节点关联的 nova 实例的 UUID。

is_automated_clean_enabled

覆盖启用自动清理。在 API 微版本 1.47 中添加。

is_console_enabled

是否在此节点上启用控制台访问。

is_maintenance

节点是否当前处于“维护模式”。置于维护模式的节点将被从可用资源池中移除。

is_retired

是否将节点标记为已退休。在 API 微版本 1.61 中添加。

is_secure_boot

节点是否当前以启用安全启动的方式启动。在 API 微版本 1.75 中添加。

last_error

从开始但未能完成的最近事务中的任何错误。

lessee

指示节点是否租给特定项目的字段。在 API 版本 1.65 中添加

相对链接列表,包括 self 和 bookmark 链接。

maintenance_reason

用户可设置的描述,说明节点被置于维护模式的原因。

name

节点的易于理解的标识符。可能未定义。某些单词是保留的。在 API 微版本 1.5 中添加

parent_node

作为此节点的父节点的节点。在 API 版本 1.83 中添加

ports

链接到此节点上的端口集合。

port_groups

链接到此节点上的端口组集合。自 API 微版本 1.24 起可用。

power_state

当前的电源状态。通常为“电源开启”或“电源关闭”,但如果服务无法确定电源状态,则可能是“None”。

properties

节点的物理特性。内容由服务在检查期间填充。

provision_state

节点的当前配置状态。

retired_reason

节点被标记为已退休的原因。在 API 微版本 1.61 中添加。

raid_config

节点的当前 RAID 配置。

reservation

正在持有此节点上锁定的服务 Conductor 主机的名称,如果已持有锁。

resource_class

外部调度程序用作识别此节点作为特定类型资源单元的字符串。在 API 微版本 1.21 中添加。

service_step

当前正在执行的服务步骤的字符串。在 API 微版本 1.89 中添加。

runbook

作为替代 clean_stepsservice_steps 的 runbook 的 UUID 或逻辑名称的字符串。在 API 微版本 1.92 中添加。

shard

指示此节点所属的分片的字符串。在 API 微版本 1,82 中添加。

states

链接到状态集合。

target_provision_state

如果请求了配置操作,则为请求的状态。例如,AVAILABLEDEPLOYINGDEPLOYWAITDEPLOYINGACTIVE 等。

target_power_state

状态转换期间请求的状态。

target_raid_config

将在节点下次通过 CLEANING 状态转换时应用的节点的请求 RAID 配置。

traits

节点的特性。在 API 微版本 1.37 中引入。

updated_at

上次更新节点的的时间戳。

bios_interface

用于设置节点 BIOS 属性时的 BIOS 接口。在 API 微版本 1.40 中引入。

boot_interface

用于配置节点启动的启动接口。在 API 微版本 1.31 中引入。

console_interface

用于处理串口控制台时的控制台接口。在 API 微版本 1.31 中引入。

deploy_interface

用于部署节点时的部署接口。在 API 微版本 1.31 中引入。

firmware_interface

用于管理节点时的固件接口。在 API 微版本 1.86 中引入

inspect_interface

用于检查节点时的检查接口。在 API 微版本 1.31 中引入。

management_interface

用于节点管理操作的管理接口。在 API 微版本 1.31 中引入。

network_interface

用于为该节点配置网络连接的网络接口提供程序。在 API 微版本 1.20 中引入。

power_interface

用于节点电源操作的电源接口。在 API 微版本 1.31 中引入。

raid_interface

用于配置节点 RAID 的 RAID 接口。在 API 微版本 1.31 中引入。

rescue_interface

用于节点救援的救援接口。在 API 微版本 1.38 中引入。

storage_interface

用于附加远程存储的存储接口。在 API 微版本 1.33 中引入。

vendor_interface

用于节点供应商特定操作的供应商接口。在 API 微版本 1.31 中引入。

create(session, *args, **kwargs)

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

覆盖的版本能够处理填充的 provision_state 字段,该字段的值为以下三种之一:enrollmanageableavailable。如果未提供,则使用服务器默认值(Ironic 的较新版本中为 enroll)。

此调用不会导致节点进行自动清理。如果需要,请使用 provision_state=manageable,然后调用 set_provision_state()

请注意,需要 Bare Metal API 1.4 才能使用 manageable,需要 1.11 才能使用 enroll

警告

使用 provision_state=available 仅适用于 API 版本 1.1 到 1.10,因此与设置在 1.11 之后出现的任何字段不兼容。

参数:

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

返回值:

Resource 实例。

引发:

如果节点 provision_state 不是 Noneenrollmanageableavailable 中的一个,则会引发 ValueError。

引发:

NotSupported 如果服务器支持的任何 API 版本都无法达到 provision_state

commit(session, *args, **kwargs)

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

参数:

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

返回值:

Node 实例。

set_provision_state(session, target, config_drive=None, clean_steps=None, rescue_password=None, wait=False, timeout=None, deploy_steps=None, service_steps=None, runbook=None)

运行一个操作来修改此节点的配置状态。

此调用是异步的,一旦 Bare Metal 服务确认请求,它将返回成功。

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

  • target – 配置操作,例如 activeprovide。有关可用操作,请参阅 Bare Metal 服务文档。

  • config_drive – 要传递给节点的配置驱动器,仅对 active` ``rebuild 目标有效。您可以使用 openstack.baremetal.configdrive 中的函数来构建它。

  • clean_steps – 要执行的清理步骤,仅对 clean 目标有效。

  • rescue_password – 救援操作的密码,仅对 rescue 目标有效。

  • wait – 是否等待达到目标状态。

  • timeout – 等待达到目标状态的超时时间(秒)。如果为 None,则无限期等待。

  • deploy_steps – 要执行的部署步骤,仅对 activerebuild 目标有效。

  • service_steps – 要执行的服务步骤,仅对 service 目标有效。

  • runbook – 运行手册的 UUID 或逻辑名称。

返回值:

Node 实例。

引发:

如果 config_driveclean_stepsdeploy_stepsrescue_password 与无效的 target 一起提供,则会引发 ValueError。

引发:

ResourceFailure 如果节点在等待状态时达到错误状态。

引发:

ResourceTimeout 如果在等待状态时达到超时。

wait_for_power_state(session, expected_state, timeout=None)

等待节点达到预期的电源状态。

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

  • expected_state – 预期的电源状态。

  • timeout – 如果 wait 设置为 True,则指定等待预期状态达到的时间(秒)。None(默认值)表示没有客户端超时。

返回值:

Node 实例。

引发:

ResourceTimeout 超时时。

wait_for_provision_state(session, expected_state, timeout=None, abort_on_failed_state=True)

等待节点达到预期的状态。

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

  • expected_state – 预期的配置状态。

  • timeout – 如果 wait 设置为 True,则指定等待预期状态达到的时间(秒)。None(默认值)表示没有客户端超时。

  • abort_on_failed_state – 如果为 True(默认值),则如果节点达到与预期状态不匹配的失败状态,则中止等待。请注意,enroll -> manageable 转换的失败状态是 enroll

返回值:

Node 实例。

引发:

ResourceFailure 如果节点在等待状态时达到错误状态,并且 abort_on_failed_stateTrue

引发:

ResourceTimeout 超时时。

wait_for_reservation(session, timeout=None)

等待释放节点上的锁。

Ironic 中的裸机节点具有一个预留锁,用于表示一个 conductor 已经锁定了节点,以便执行某种操作,例如作为机器状态更改的结果更改配置。

此锁可能发生在电源同步期间,并阻止更新附加到节点的对象,例如端口。

请注意,在本次调用返回后,一个 conductor 仍然可以重新获取锁,因此应将其视为尽力而为。

如果节点上没有预留,则立即返回。

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

  • timeout – 如果 wait 设置为 True,则指定等待锁释放的时间(秒)。None(默认值)表示没有超时。

返回值:

Node 实例。

inject_nmi(session)

注入 NMI。

参数:

session – 用于进行此请求的会话。

返回值:

set_power_state(session, target, wait=False, timeout=None)

运行一个操作来修改此节点的电源状态。

此调用是异步的,一旦 Bare Metal 服务确认请求,它将返回成功。

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

  • target – 目标电源状态,作为 PowerAction 或一个字符串。

  • wait – 是否等待达到预期的电源状态。

  • timeout – 等待达到目标状态的超时时间(秒)。如果为 None,则无限期等待。

attach_vmedia(session, device_type, image_url, image_download_source=None, retry_on_conflict=True)

将虚拟介质设备附加到节点。

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

  • device_type – 虚拟媒体设备的类型。

  • image_url – 要附加的镜像的 URL。

  • image_download_source – 镜像下载的来源。

  • retry_on_conflict – 是否重试 HTTP CONFLICT 错误。当虚拟媒体已经在节点上使用或节点被锁定时,可能会发生这种情况。由于后者更常见,因此默认值为 True。

返回值:

引发:

NotSupported 如果服务器不支持 VMEDIA API。

detach_vmedia(session, device_types=None)

从节点分离虚拟媒体

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

  • device_types – 要分离的虚拟媒体设备的类型列表。

返回值:

True 如果虚拟媒体已分离,否则 False

引发:

NotSupported 如果服务器不支持 VMEDIA API

attach_vif(session, vif_id, retry_on_conflict=True, *, port_id=None, port_group_id=None)

将 VIF 附加到节点。

VIF ID 的确切形式取决于节点使用的网络接口。在最常见的情况下,它是网络服务端口(而不是裸机端口)ID。VIF 在同一时间只能附加到一个节点。

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

  • vif_id – 特定于后端的 VIF ID。

  • retry_on_conflict – 是否重试 HTTP CONFLICT 错误。当 VIF 已被节点使用或节点被锁定时,可能会发生这种情况。由于后者更常见,因此默认值为 True。

  • port_id – 要附加 VIF 的端口的 UUID。只能提供 port_id 或 port_group_id 中的一个。

  • port_group_id – 要附加到的端口组的 UUID。只能提供 port_group_id 或 port_id 中的一个。

返回值:

引发:

NotSupported 如果服务器不支持 VIF API。

引发:

InvalidRequest 如果同时提供了 port_id 和 port_group_id。

detach_vif(session, vif_id, ignore_missing=True)

将 VIF 从节点分离。

VIF ID 的确切形式取决于节点使用的网络接口。在最常见的情况下,它是网络服务端口(而不是裸机端口)ID。

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

  • vif_id (string) – 特定于后端的 VIF ID。

  • ignore_missing (bool) – 当设置为 False 时,如果 VIF 不存在,将引发 NotFoundException。否则,返回 False

返回值:

True 如果 VIF 已分离,否则 False

引发:

NotSupported 如果服务器不支持 VIF API。

list_vifs(session)

列出附加到节点的 VIF 的 ID。

VIF ID 的确切形式取决于节点使用的网络接口。在最常见的情况下,它是网络服务端口(而不是裸机端口)ID。

参数:

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

返回值:

VIF ID 列表,以字符串形式表示。

引发:

NotSupported 如果服务器不支持 VIF API。

validate(session, required=('boot', 'deploy', 'power'))

验证节点上的必要信息。

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

  • required – 必须通过验证的接口列表。默认值为用于配置的最小必要接口列表。

返回值:

将接口名称映射到 ValidationResult 对象的字典。

引发:

ValidationException 如果必需接口的验证失败。

set_maintenance(session, reason=None)

启用节点上的维护模式。

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

  • reason – 可选的维护原因。

返回值:

Node 实例。

unset_maintenance(session)

禁用节点上的维护模式。

参数:

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

返回值:

Node 实例。

get_boot_device(session)

获取节点启动设备。

参数:

session – 用于进行此请求的会话。

返回值:

HTTP 响应。

set_boot_device(session, boot_device, persistent=False)

设置节点启动设备

参数:
  • session – 用于进行此请求的会话。

  • boot_device – 要分配给节点的启动设备。

  • persistent – 如果节点重启后启动设备更改是否保持。

返回值:

get_supported_boot_devices(session)

获取节点支持的启动设备。

参数:

session – 用于进行此请求的会话。

返回值:

HTTP 响应。

set_boot_mode(session, target)

发出请求以更改节点的启动模式

此调用是异步的,一旦 Bare Metal 服务确认请求,它将返回成功。

参数:
  • session – 用于进行此请求的会话。

  • target – 要设置为节点的启动模式,可以是 ‘uefi’/’bios’ 中的一种。

返回值:

引发:

ValueError 如果 target 不是 ‘uefi’ 或 ‘bios’ 中的一种。

set_secure_boot(session, target)

发出请求以更改节点的安全启动状态

此调用是异步的,一旦 Bare Metal 服务确认请求,它将返回成功。

参数:
  • session – 用于进行此请求的会话。

  • target (bool) – 指示安全启动状态的布尔值。True/False 分别对应于 ‘on’/’off’。

返回值:

引发:

ValueError 如果 target 不是布尔值。

add_trait(session, trait)

将特性添加到节点。

参数:
  • session – 用于进行此请求的会话。

  • trait – 要添加到节点的特性。

返回值:

remove_trait(session, trait, ignore_missing=True)

从节点删除特性。

参数:
  • session – 用于进行此请求的会话。

  • trait – 要从节点删除的特性。

  • ignore_missing (bool) – 当设置为 False 时,如果特性不存在,将引发 NotFoundException。否则,返回 False

返回布尔值:

成功删除特性时返回 True。如果特性已经不存在,则返回 False。

set_traits(session, traits)

设置节点的特性。

移除任何现有的 traits,并添加通过此方法传递的 traits。

参数:
  • session – 用于进行此请求的会话。

  • traits – 要添加到节点的 traits 列表。

返回值:

call_vendor_passthru(session, verb, method, body=None)

调用供应商直通方法。

参数:
  • session – 用于进行此请求的会话。

  • verb – HTTP 动词,可以是 GET、SET、POST、DELETE。

  • method – 使用 vendor_passthru 要调用的方法。

  • body – HTTP 调用中的 JSON 主体。

返回值:

HTTP 响应。

list_vendor_passthru(session)

列出节点上的供应商直通方法。

参数:

session – 用于进行此请求的会话。

返回值:

HTTP 响应。

get_console(session)

获取节点控制台。

参数:

session – 用于进行此请求的会话。

返回值:

HTTP 响应。

set_console_mode(session, enabled)

设置节点控制台模式。

参数:
  • session – 用于进行此请求的会话。

  • enabled – 控制台是否应启用。

返回值:

get_node_inventory(session, node_id)

获取节点的清单。

参数:
  • session – 用于进行此请求的会话。

  • node_id – **已弃用** 节点的 ID。

返回值:

HTTP 响应。

list_firmware(session)

列出与节点关联的固件组件。

参数:

session – 用于进行此请求的会话。

返回值:

HTTP 响应。

patch(session, patch=None, prepend_key=True, has_body=True, retry_on_conflict=None, base_path=None, *, microversion=None, reset_interfaces=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

PowerAction 类

PowerAction 枚举表示已知的电源操作。

class openstack.baremetal.v1.node.PowerAction(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

将操作映射到目标电源状态。

POWER_ON = 'power on'

打开节点电源。

POWER_OFF = 'power off'

关闭节点电源(使用硬关机)。

REBOOT = 'rebooting'

重启节点(使用硬关机)。

SOFT_POWER_OFF = 'soft power off'

使用软关机关闭节点电源。

SOFT_REBOOT = 'soft rebooting'

使用软关机重启节点。

ValidationResult 类

ValidationResult 类表示验证结果。

class openstack.baremetal.v1.node.ValidationResult(result, reason)

单个接口验证的结果。

变量:
  • result – 验证结果,True 表示成功,False 表示失败,None 表示不支持的接口。

  • reason – 如果 resultFalseNone,则解释结果。

WaitResult 类

WaitResult 类表示等待多个节点的结果。

class openstack.baremetal.v1.node.WaitResult(success, failure, timeout)

一个命名元组,表示等待多个节点的结果。

每个组件都是 Node 对象的列表

变量:
  • ~.success – 达到状态的 Node 对象列表。

  • ~.timeout – 达到超时的 Node 对象列表。

  • ~.failure – 发生错误的 Node 对象列表。

创建 WaitResult(success, failure, timeout) 的新实例