metalsmith package¶
子模块¶
Module contents¶
- class metalsmith.Instance(connection, node, allocation=None)¶
基类:
objectmetalsmith 中的实例状态。
- 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_node的hostname。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,则配置已完成。- 引发:
- 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 对象。
- 引发:
- show_instance(instance_id)¶
显示实例信息。
- 参数:
instance_id – 主机名、UUID 或节点名称。
- 返回值:
- 引发:
metalsmith.exceptions.InstanceNotFound如果实例不是有效的实例。
- show_instances(instances)¶
显示实例信息。
比在循环中调用
show_instance()更有效,因为它缓存了节点列表。- 参数:
instances – 主机名、UUID 或节点名称的列表。
- 返回值:
metalsmith.Instance对象的列表,顺序与instances相同。- 引发:
metalsmith.exceptions.InstanceNotFound如果无法找到其中一个实例,或者找到的节点不是有效的实例。
- unprovision_node(node, wait=None)¶
取消配置先前配置的节点。
- 参数:
node – Node 对象、
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如果找不到请求的节点。