metalsmith package

子模块

Module contents

class metalsmith.Instance(connection, node, allocation=None)

基类: object

metalsmith 中的实例状态。

property allocation

与节点关联的分配对象(如果有)。

property hostname

节点的hostname。

ip_addresses()

返回此实例的 IP 地址。

返回值:

将网络名称或 ID 映射到 IP 地址列表的字典。

property is_deployed

节点是否已部署。

property is_healthy

实例是否未处于故障或维护状态。

network_cache = {}
nics()

列出此实例的 NIC。

返回值:

包含附加 network 字段的完整网络表示形式的 Port 对象列表。

property node

底层的 Node 对象。

property state

实例状态,为 InstanceState 的其中一个。

to_dict()

将实例转换为字典。

property uuid

实例 UUID(对于 metalsmith 而言与 Node UUID 相同)。

class metalsmith.InstanceState(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

基础: Enum

实例的状态。

ACTIVE = 'active'

实例已配置。

DEPLOYING = 'deploying'

正在进行配置。

这包括节点仍处于 available 状态,但已关联实例的情况。

ERROR = 'error'

实例出现故障。

MAINTENANCE = 'maintenance'

实例已配置,但处于维护模式。

UNKNOWN = 'unknown'

节点处于意外状态。

它可能未配置或由第三方修改。

property is_deployed

状态是否表示完成的部署。

property is_healthy

状态是否被认为健康。

class metalsmith.Provisioner(session=None, cloud_region=None, dry_run=False)

基类: object

使用 OpenStack 部署/取消部署节点的 API。

参数:
  • session – 用于进行 API 请求的 Session 对象(来自 keystoneauth)。cloud_region 互斥。

  • cloud_region – 用于进行 API 请求的云配置对象(来自 openstacksdk)。session 互斥。

  • dry_run – 布尔值,设置为 True 以防止实际进行任何 API 调用。

变量:

connection – 用于在配置期间访问 OpenStack API 的 openstacksdk Connection 对象。

allocations_cache = {}
list_instances()

列出由 metalsmith 部署的实例。

返回值:

metalsmith.Instance 对象的列表。

provision_node(node, image, nics=None, root_size_gb=None, swap_size_mb=None, config=None, hostname=None, netboot=False, capabilities=None, traits=None, wait=None, clean_up_on_failure=True)

使用给定的镜像配置节点。

示例

provisioner.provision_node("compute-1", "centos",
                           nics=[{"network": "private"},
                                 {"network": "external"}],
                           root_size_gb=50,
                           wait=3600)
参数:
  • node – 节点对象、UUID 或名称。如果尚未预留,则首先预留。必须处于“available”状态且未处于维护模式。

  • image – 镜像源 - sources 的其中一个、Image 名称或 UUID。

  • nics

    要附加到物理端口的虚拟 NIC 列表。每个项目都是一个字典,其中包含一个键,用于描述 NIC 的类型

    • {"port": "<port 名称 ID>"} 使用提供的预创建端口。

    • {"network": "<network 名称 ID>"} 在提供的网络上创建端口。可选地,可以使用 fixed_ip 参数指定 IP 地址。

    • {"subnet": "<subnet 名称 ID>"} 从提供的子网创建具有 IP 地址的端口。网络由子网确定。

  • root_size_gb – 根分区的尺寸。默认情况下,使用 local_gb 属性的值。

  • swap_size_mb – 交换分区的尺寸。对于整个磁盘镜像,指定它是一个错误。

  • config – 要传递给实例的配置,是 metalsmith.instance_config 中的对象之一。

  • hostname – 要分配给实例的主机名。如果提供,则覆盖传递给 reserve_nodehostname

  • netboot – 是否对最终实例使用网络启动。已弃用,在 Ironic Zed 中不起作用。

  • capabilities – 节点的请求功能。如果存在,则覆盖由 reserve_node() 设置的功能。请注意,功能不会检查节点提供的功能 - 使用 reserve_node() 进行检查。

  • traits – 节点的请求特征。如果存在,则覆盖由 reserve_node() 设置的特征。请注意,特征不会检查节点提供的特征 - 使用 reserve_node() 进行检查。

  • wait – 等待部署完成的秒数,None 表示立即返回。

  • clean_up_on_failure – 如果为 True,则在失败时清除节点上的实例信息,分离 VIF,删除创建的端口和分配。

返回值:

metalsmith.Instance 对象,包含当前配置状态。如果 wait 不为 None,则配置已完成。

引发:

metalsmith.exceptions.Error

reserve_node(resource_class, conductor_group=None, capabilities=None, traits=None, candidates=None, predicate=None, hostname=None)

查找并预留合适的节点。

示例

node = provisioner.reserve_node("compute",
                                capabilities={"boot_mode": "uefi"})
参数:
  • resource_class – 请求的资源类。

  • conductor_group – 从中选择节点的 Conductor 组。值 None 表示任何组,使用空字符串 “” 表示来自默认组的节点。

  • capabilities – 请求的功能,以字典形式提供。

  • traits – 请求的特性,以字符串列表形式提供。

  • candidates – 要从中选择的节点列表(UUID、名称或 Node 对象)。仍然会对提供的列表应用过滤器(用于资源类和功能)。保留节点考虑的顺序。

  • predicate – 在节点上运行的自定义谓词。一个可调用对象,接受一个节点并返回 True 如果应该包含,False 否则。任何异常都会传播给调用者。

  • hostname – 要分配给实例的主机名。默认为节点的名称或 UUID。

返回值:

预留的 Node 对象。

引发:

metalsmith.exceptions.ReservationFailed

show_instance(instance_id)

显示实例信息。

参数:

instance_id – 主机名、UUID 或节点名称。

返回值:

metalsmith.Instance 对象。

引发:

metalsmith.exceptions.InstanceNotFound 如果实例不是有效的实例。

show_instances(instances)

显示实例信息。

比在循环中调用 show_instance() 更有效,因为它缓存了节点列表。

参数:

instances – 主机名、UUID 或节点名称的列表。

返回值:

metalsmith.Instance 对象的列表,顺序与 instances 相同。

引发:

metalsmith.exceptions.InstanceNotFound 如果无法找到其中一个实例,或者找到的节点不是有效的实例。

unprovision_node(node, wait=None)

取消配置先前配置的节点。

参数:
  • nodeNode 对象、metalsmith.Instance、主机名、UUID 或节点名称。

  • wait – 等待进程完成的秒数,None 表示立即返回。

返回值:

最新的 Node 对象。

引发:

metalsmith.exceptions.DeploymentFailed 如果取消配置失败。

引发:

metalsmith.exceptions.DeploymentTimeout 如果取消配置超时。

引发:

metalsmith.exceptions.InstanceNotFound 如果找不到请求的节点。

wait_for_provisioning(nodes, timeout=None)

等待节点配置完成。

循环直到所有节点完成配置。

参数:
  • nodes – 节点列表(UUID、名称、Node 对象或 metalsmith.Instance)。

  • timeout – 等待所有节点完成配置的时间(以秒为单位)。如果为 None(默认值),则永久等待(更准确地说,直到服务器端操作超时)。

返回值:

如果全部成功,则返回更新的 metalsmith.Instance 对象列表。

引发:

metalsmith.exceptions.DeploymentFailed 如果配置失败或超时。

引发:

metalsmith.exceptions.InstanceNotFound 如果找不到请求的节点。