Bare Metal Introspection API

默认情况下,ironic-inspector 监听 [::]:5050,主机和端口可以在配置文件中更改。协议是基于 HTTP 的 JSON。

警告

ironic-inspector 项目处于维护模式,其 API 参考仅供参考。新的应用程序应使用 baremetal API 代替。

API 版本

概念

为了随着时间的推移为用户带来新功能,Ironic Inspector API 支持版本控制。存在两种类型的版本

  • 主要 版本,它们具有专用的 URL。

  • 微版本,可以通过使用 X-OpenStack-Ironic-Inspector-API-Version 头部或新的标准单数头部 OpenStack-API-Version: baremetal-introspection <version> 来请求。

版本 API 的工作方式与其他 API 不同,因为它们不需要身份验证。

所有 API 请求都支持新的标准单数头部 OpenStack-API-Version: baremetal-introspection <version> 和旧版 X-OpenStack-Ironic-Inspector-API-Version 头部。

这两个头部中的任何一个都应该包含在每个请求中;如果没有这两个头部,服务器将默认使用所有响应中当前支持的版本。

GET
/

列出 API 版本

这将获取部署中所有已知主要 API 版本的所有信息。将为每个主要 API 版本提供指向更具体信息的链接,以及有关支持的最小和最大微版本的信息。

正常响应代码:200

请求

响应示例

名称

入参

类型

描述

versions

body

数组

当前支持的版本信息的数组。

id

body

字符串

API 微版本,例如“1.12”。

links

body

数组

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

status

body

字符串

此 API 版本的状态。它可以是以下之一:

  • CURRENT 此版本是最新的,应优先于所有其他版本。

  • SUPPORTED 此版本可用,但将来可能不会更新。

  • DEPRECATED 此版本仍然可用,但将来可能会删除。

  • EXPERIMENTAL 此版本正在开发中,将来可能会更改。

x-openstack-ironic-inspector-api-min-version

标头

字符串

此端点支持的最小 API 微版本,例如“1.1”。

x-openstack-ironic-inspector-api-max-version

标头

字符串

此端点支持的最大 API 微版本,例如“1.10”。

{
  "versions": [
    {
      "id": "1.12",
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1",
          "rel": "self"
        }
      ],
      "status": "CURRENT"
    }
  ]
}
GET
/v1/

显示 v1 API

显示 Ironic Inspector v1 API 中的所有资源。

正常响应代码:200

请求

响应示例

名称

入参

类型

描述

resources

body

数组

一个可用的 API 资源列表。

links

body

数组

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

href

body

字符串

指向资源对象的书签链接。

rel

body

字符串

版本与 href 之间的关系。

name

body

字符串

资源名称,例如 introspectionrules

x-openstack-ironic-inspector-api-min-version

标头

字符串

此端点支持的最小 API 微版本,例如“1.1”。

x-openstack-ironic-inspector-api-max-version

标头

字符串

此端点支持的最大 API 微版本,例如“1.10”。

{
  "resources": [
    {
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1/introspection",
          "rel": "self"
        }
      ],
      "name": "introspection"
    },
    {
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1/continue",
          "rel": "self"
        }
      ],
      "name": "continue"
    },
    {
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1/rules",
          "rel": "self"
        }
      ],
      "name": "rules"
    }
  ]
}

版本历史记录

  • 1.0 引入版本控制时的 API 版本。

  • 1.1 添加了检索存储的内省数据的端点。

  • 1.2 用于操作内省规则的端点。

  • 1.3 用于取消正在运行的内省的端点。

  • 1.4 用于重新应用存储数据的内省的端点。

  • 1.5 支持 Ironic 节点名称。

  • 1.6 规则创建端点在成功时返回 201 而不是 200。

  • 1.7 UUID、started_atfinished_at 在内省状态 API 中。

  • 1.8 支持列出所有内省状态。

  • 1.9 禁用设置 IPMI 凭据,如果请求 IPMI 凭据,API 将返回 HTTP 400 响应。

  • 1.10 将节点状态添加到 GET /v1/introspection/<node>GET /v1/introspection API 响应数据中。

  • 1.11invert 和多个字段添加到规则响应数据中。

  • 1.12 此版本表示已完全从 API 中删除设置 IPMI 凭据的支持(所有版本)。

  • 1.13 为内省 API 添加了 manage_boot 参数。

  • 1.14 允许将格式应用于内省规则的操作中嵌套在字典和列表中的字符串。

  • 1.15 允许使用请求中提供的内省数据重新应用。

  • 1.16scope 字段添加到内省规则中。

  • 1.17 添加了 GET /v1/introspection/<node>/data/unprocessed

  • 1.18 添加了状态选择器 GET /v1/introspection?state=starting,...

节点内省 (introspection)

通过 /v1/introspection 资源启动内省、获取内省状态。 还有几个子资源,允许对内省执行进一步的操作。

POST
/v1/introspection/{node_id}

启动内省

启动节点 {node_id} 的硬件内省。 在调用此端点之前,需要完成此节点的任何电源管理配置。

如果缺少或身份验证无效,响应代码将分别为 401 和 403。 如果 Inspector 未找到节点 {node_id},它将返回 404。

正常响应代码:202

错误代码:400、401、403、404

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

manage_boot (可选)

查询

字符串

当前 ironic-inspector 的安装是否可以管理节点的 PXE 启动。

GET
/v1/introspection/

列出所有内省状态

返回的状态列表按 started_at, uuid 属性对排序,较新的项目优先。

如果缺少或身份验证无效,响应代码将为 401 和 403。

正常响应代码:200

错误代码:400、401、403

请求

状态列表可以使用以下查询字符串字段进行分页

名称

入参

类型

描述

marker (可选)

查询

字符串

使用 limit 参数进行初始有限请求,并将响应中最后一个看到的项目的 ID 作为后续请求中的 marker 参数值。

limit (可选)

查询

整数

请求一页的项目大小。 返回最多 limit 值数量的项目。 使用 limit 参数进行初始有限请求,并将响应中最后一个看到的项目的 ID 作为后续有限请求中的 marker 参数值。 此值不能大于配置中的 api_max_limit 选项。 如果它高于 api_max_limit,则返回 400 Bad Request。

state

body

字符串

当前内省状态,可能的值:enrollingerrorfinishedprocessingreapplyingstartingwaiting。 有关状态的详细信息,请参阅 Inspector 状态

响应

响应将包含状态对象列表

名称

入参

类型

描述

error

body

字符串

错误描述字符串或 null;如果内省被中止,则为 Canceled by operator

finished

body

布尔值

此节点的内省是否完成。

finished_at

body

字符串

内省完成的 UTC ISO8601 时间戳或 null

links

body

数组

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

started_at

body

字符串

内省开始的 UTC ISO8601 时间戳。

state

body

字符串

当前内省状态,可能的值:enrollingerrorfinishedprocessingreapplyingstartingwaiting。 有关状态的详细信息,请参阅 Inspector 状态

uuid

路径

字符串

Ironic 节点的 UUID。

内省的示例 JSON 表示形式

{
  "introspection": [
    {
      "error": null,
      "finished": true,
      "finished_at": "2017-08-17T11:36:16",
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1/introspection/05ccda19-581b-49bf-8f5a-6ded99701d87",
          "rel": "self"
        }
      ],
      "started_at": "2017-08-17T11:33:43",
      "state": "finished",
      "uuid": "05ccda19-581b-49bf-8f5a-6ded99701d87"
    },
    {
      "error": null,
      "finished": true,
      "finished_at": "2017-08-16T12:24:30",
      "links": [
        {
          "href": "http://127.0.0.1:5050/v1/introspection/c244557e-899f-46fa-a1ff-5b2c6718616b",
          "rel": "self"
        }
      ],
      "started_at": "2017-08-16T12:22:01",
      "state": "finished",
      "uuid": "c244557e-899f-46fa-a1ff-5b2c6718616b"
    }
  ]
}
GET
/v1/introspection/{node_id}

显示内省状态

显示节点内省状态。

如果缺少或身份验证无效,响应代码将为 401 和 403。 如果 Inspector 未找到节点 {node_id},它将返回 404。

正常响应代码:200

错误代码:400、401、403、404

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

响应

响应将包含完整的内省信息,例如开始时间、结束时间、内省状态、任何错误。

名称

入参

类型

描述

error

body

字符串

错误描述字符串或 null;如果内省被中止,则为 Canceled by operator

finished

body

布尔值

此节点的内省是否完成。

finished_at

body

字符串

内省完成的 UTC ISO8601 时间戳或 null

links

body

数组

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

started_at

body

字符串

内省开始的 UTC ISO8601 时间戳。

state

body

字符串

当前内省状态,可能的值:enrollingerrorfinishedprocessingreapplyingstartingwaiting。 有关状态的详细信息,请参阅 Inspector 状态

uuid

路径

字符串

Ironic 节点的 UUID。

内省的示例 JSON 表示形式

{
  "error": null,
  "finished": true,
  "finished_at": "2017-08-16T12:24:30",
  "links": [
    {
      "href": "http://127.0.0.1:5050/v1/introspection/c244557e-899f-46fa-a1ff-5b2c6718616b",
      "rel": "self"
    }
  ],
  "started_at": "2017-08-16T12:22:01",
  "state": "finished",
  "uuid": "c244557e-899f-46fa-a1ff-5b2c6718616b"
}

内省管理 (introspection)

可以通过内省子资源中止内省、获取内省数据和重新应用内省。

POST
/v1/introspection/{node_id}/abort

中止内省

中止正在运行的内省。

正常响应代码:202

错误代码

  • 400 - 请求错误

  • 401、403 - 缺少或身份验证无效

  • 404 - 找不到节点

  • 409 - inspector 已锁定此节点进行处理

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

GET
/v1/introspection/{node_id}/data

获取内省数据

返回成功内省的存储数据。

注意

我们不提供有关存储数据格式和内容的任何向后兼容性保证。 特别是,它取决于使用的 ramdisk 和 ramdisk 本身以及 inspector 中启用的插件。

正常响应代码:200

错误代码

  • 400 - 请求错误

  • 401、403 - 缺少或身份验证无效

  • 404 - 找不到数据或未配置数据存储

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

响应

响应将包含 JSON 字符串形式的内省数据。

内省数据的示例 JSON 表示形式

{
   "cpu_arch":"x86_64",
   "macs":[
      "52:54:00:4e:3d:30"
   ],
   "root_disk":{
      "rotational":true,
      "vendor":"0x1af4",
      "name":"/dev/vda",
      "hctl":null,
      "wwn_vendor_extension":null,
      "wwn_with_extension":null,
      "model":"",
      "wwn":null,
      "serial":null,
      "size":13958643712
   },
   "interfaces":{
      "eth0":{
         "ip":"172.24.42.100",
         "mac":"52:54:00:4e:3d:30",
         "pxe":true,
         "client_id":null
      }
   },
   "cpus":2,
   "boot_interface":"52:54:00:4e:3d:30",
   "memory_mb":2048,
   "ipmi_address":"192.167.2.134",
   "inventory":{
      "bmc_address":"192.167.2.134",
      "interfaces":[
         {
            "lldp":null,
            "product":"0x0001",
            "vendor":"0x1af4",
            "name":"eth1",
            "has_carrier":true,
            "ipv4_address":"172.24.42.101",
            "client_id":null,
            "mac_address":"52:54:00:47:20:4d"
         },
         {
            "lldp":null,
            "product":"0x0001",
            "vendor":"0x1af4",
            "name":"eth0",
            "has_carrier":true,
            "ipv4_address":"172.24.42.100",
            "client_id":null,
            "mac_address":"52:54:00:4e:3d:30"
         }
      ],
      "disks":[
         {
            "rotational":true,
            "vendor":"0x1af4",
            "name":"/dev/vda",
            "hctl":null,
            "wwn_vendor_extension":null,
            "wwn_with_extension":null,
            "model":"",
            "wwn":null,
            "serial":null,
            "size":13958643712
         }
      ],
      "boot":{
         "current_boot_mode":"bios",
         "pxe_interface":"52:54:00:4e:3d:30"
      },
      "system_vendor":{
         "serial_number":"Not Specified",
         "product_name":"Bochs",
         "manufacturer":"Bochs"
      },
      "memory":{
         "physical_mb":2048,
         "total":2105864192
      },
      "cpu":{
         "count":2,
         "frequency":"2100.084",
      "flags": [
        "fpu",
        "mmx",
        "fxsr",
        "sse",
        "sse2"
        ],
         "architecture":"x86_64"
      }
   },
   "error":null,
   "local_gb":12,
   "all_interfaces":{
      "eth1":{
         "ip":"172.24.42.101",
         "mac":"52:54:00:47:20:4d",
         "pxe":false,
         "client_id":null
      },
      "eth0":{
         "ip":"172.24.42.100",
         "mac":"52:54:00:4e:3d:30",
         "pxe":true,
         "client_id":null
      }
   }
}
GET
/v1/introspection/{node_id}/data/unprocessed

获取未处理的内省数据

返回内省的存储原始(未处理)数据。

版本 1.17 中添加:现在可以检索未处理的内省数据。

注意

我们不提供有关存储数据格式和内容的任何向后兼容性保证。 特别是,它取决于使用的 ramdisk 和 ramdisk 本身以及 inspector 中启用的插件。

正常响应代码:200

错误代码

  • 400 - 请求错误

  • 401、403 - 缺少或身份验证无效

  • 404 - 找不到数据或未配置数据存储

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

响应

响应将包含 JSON 字符串形式的内省数据。

内省数据的示例 JSON 表示形式

{
   "cpu_arch":"x86_64",
   "macs":[
      "52:54:00:4e:3d:30"
   ],
   "root_disk":{
      "rotational":true,
      "vendor":"0x1af4",
      "name":"/dev/vda",
      "hctl":null,
      "wwn_vendor_extension":null,
      "wwn_with_extension":null,
      "model":"",
      "wwn":null,
      "serial":null,
      "size":13958643712
   },
   "interfaces":{
      "eth0":{
         "ip":"172.24.42.100",
         "mac":"52:54:00:4e:3d:30",
         "pxe":true,
         "client_id":null
      }
   },
   "cpus":2,
   "boot_interface":"52:54:00:4e:3d:30",
   "memory_mb":2048,
   "ipmi_address":"192.167.2.134",
   "inventory":{
      "bmc_address":"192.167.2.134",
      "interfaces":[
         {
            "lldp":null,
            "product":"0x0001",
            "vendor":"0x1af4",
            "name":"eth1",
            "has_carrier":true,
            "ipv4_address":"172.24.42.101",
            "client_id":null,
            "mac_address":"52:54:00:47:20:4d"
         },
         {
            "lldp":null,
            "product":"0x0001",
            "vendor":"0x1af4",
            "name":"eth0",
            "has_carrier":true,
            "ipv4_address":"172.24.42.100",
            "client_id":null,
            "mac_address":"52:54:00:4e:3d:30"
         }
      ],
      "disks":[
         {
            "rotational":true,
            "vendor":"0x1af4",
            "name":"/dev/vda",
            "hctl":null,
            "wwn_vendor_extension":null,
            "wwn_with_extension":null,
            "model":"",
            "wwn":null,
            "serial":null,
            "size":13958643712
         }
      ],
      "boot":{
         "current_boot_mode":"bios",
         "pxe_interface":"52:54:00:4e:3d:30"
      },
      "system_vendor":{
         "serial_number":"Not Specified",
         "product_name":"Bochs",
         "manufacturer":"Bochs"
      },
      "memory":{
         "physical_mb":2048,
         "total":2105864192
      },
      "cpu":{
         "count":2,
         "frequency":"2100.084",
      "flags": [
        "fpu",
        "mmx",
        "fxsr",
        "sse",
        "sse2"
        ],
         "architecture":"x86_64"
      }
   },
   "error":null,
   "local_gb":12,
   "all_interfaces":{
      "eth1":{
         "ip":"172.24.42.101",
         "mac":"52:54:00:47:20:4d",
         "pxe":false,
         "client_id":null
      },
      "eth0":{
         "ip":"172.24.42.100",
         "mac":"52:54:00:4e:3d:30",
         "pxe":true,
         "client_id":null
      }
   }
}
POST
/v1/introspection/{node_id}/data/unprocessed

重新应用数据上的内省

此方法在存储的内省数据或请求中提供的原始内省数据上触发内省。 如果内省数据在请求主体中提供,则应是类似于 ramdisk 回调请求的有效 JSON。

版本 1.15 中添加:可以通过请求主体发送未处理的内省数据。

注意

只有通过 [processing]store_data 启用存储后端时,才能重新应用存储数据上的内省。

正常响应代码:202

错误代码

  • 400 - 请求错误,未配置存储或请求主体中的数据格式错误

  • 401、403 - 缺少或身份验证无效

  • 404 - 节点 ID 找不到节点

  • 409 - inspector 锁定节点进行处理

请求

名称

入参

类型

描述

node_id

路径

字符串

Ironic 节点的 UUID。

处理内省数据

在 ramdisk 从裸机节点收集所需信息后,它应该通过 POST /v1/continue API 将其发布回 Inspector。

警告

提醒操作员不要将 Ironic Inspector API 暴露给不安全和不受信任的网络。 以下 API 可供未经验证的客户端使用,因为 ironic-python-agent ramdisk 无法访问 keystone 凭据。

POST
/v1/continue

Ramdisk 回调

这是 ramdisk 发布所有发现的数据的 API。 不应由 ramdisk 以外的客户端使用。

完整的硬件清单键列表可以在 ironic-python-agent 文档中找到:硬件清单

正常响应代码:201

错误代码:400

请求

强制硬件键列表

名称

入参

类型

描述

inventory

body

对象

包含硬件清单键的字典。

memory

body

字符串

内存信息,至少包含 physical_mb 键,内存大小由 dmidecod 报告。

cpu

body

字符串

CPU 信息,至少包含 count(CPU 计数)和 architecture(CPU 架构,例如 x86_64)键。

interfaces

body

数组

接口信息字典列表,包含以下键

  • name 接口名称,

  • ipv4_address 接口的 IPv4 地址,

  • mac_address 接口的 MAC(物理)地址。

  • client_id InfiniBand 客户端 ID,对于以太网为 None。

disks

body

数组

磁盘块设备列表,至少包含 namesize 键。 如果未提供 disksironic-inspector 假定这是一个无盘节点。

root_disk

body

字符串

ironic-python-agent 算法计算的默认部署根磁盘。

注意

默认处理挂钩 root_disk_selection 可能会根据节点通过属性 root_device 键指定的根设备提示来更改 root_disk。 请参阅 根设备提示文档

bmc_address (可选)

body

字符串

节点的 BMC 的 IP 地址

boot_interface (可选)

body

字符串

通过 PXE 启动的 NIC 的 MAC 地址

错误 (可选)

body

字符串

在 ramdisk 运行时发生的一个错误,由 ramdisk_error 处理钩子解释。

日志 (可选)

body

字符串

来自 ramdisk 的 Base64 编码日志。

示例节点内省继续请求

{
  "root_disk": {
    "rotational": true,
    "vendor": "0x1af4",
    "name": "/dev/vda",
    "hctl": null,
    "wwn_vendor_extension": null,
    "wwn_with_extension": null,
    "model": "",
    "wwn": null,
    "serial": null,
    "size": 13958643712
  },
  "boot_interface": "52:54:00:4e:3d:30",
  "inventory": {
    "bmc_address": "192.167.2.134",
    "interfaces": [
      {
        "lldp": null,
        "product": "0x0001",
        "vendor": "0x1af4",
        "name": "eth1",
        "has_carrier": true,
        "ipv4_address": "172.24.42.101",
        "client_id": null,
        "mac_address": "52:54:00:47:20:4d"
      },
      {
        "lldp": null,
        "product": "0x0001",
        "vendor": "0x1af4",
        "name": "eth0",
        "has_carrier": true,
        "ipv4_address": "172.24.42.100",
        "client_id": null,
        "mac_address": "52:54:00:4e:3d:30"
      }
    ],
    "disks": [
      {
        "rotational": true,
        "vendor": "0x1af4",
        "name": "/dev/vda",
        "hctl": null,
        "wwn_vendor_extension": null,
        "wwn_with_extension": null,
        "model": "",
        "wwn": null,
        "serial": null,
        "size": 13958643712
      }
    ],
    "memory": {
      "physical_mb": 2048,
      "total": 2105864192
    },
    "cpu": {
      "count": 2,
      "frequency": "2100.084",
      "flags": [
        "fpu",
        "mmx",
        "fxsr",
        "sse",
        "sse2",
        ],
      "architecture": "x86_64"
    }
  },
  "logs": "<hidden>"
}

响应

响应将包含 Ironic 节点 uuid 记录。

名称

入参

类型

描述

uuid

body

字符串

Ironic 节点 UUID。

示例 JSON 表示

{
  "uuid": "c244557e-899f-46fa-a1ff-5b2c6718616b"
}

内省规则

用于定义规则的简单基于 JSON 的 DSL,这些规则在内省期间运行。有关规则的更多信息,请参阅 https://docs.openstack.org/ironic-inspector/2025.2/user/usage.html#introspection-rules

POST
/v1/rules

创建内省规则

创建一个新的内省规则。

正常响应代码

  • 200 - API 版本 < 1.6 的 OK

  • 201 - API 版本 1.6 及更高版本的 OK

错误代码

  • 400 - 规则格式错误

请求

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。

条件 (可选)

body

数组

规则中逻辑语句或操作的列表,可以评估为 True 或 False。

动作

body

数组

如果此规则的 conditions 满足,则将执行的操作列表。

description (可选)

body

字符串

规则的人类可读描述。

scope (可选)

body

字符串

内省规则的范围。如果设置,则该规则仅应用于具有匹配 inspection_scope 属性的节点。

示例创建规则请求

{
   "uuid":"7459bf7c-9ff9-43a8-ba9f-48542ecda66c",
   "description":"Set deploy info if not already set on node",
   "actions":[
      {
         "action":"set-attribute",
         "path":"driver_info/deploy_kernel",
         "value":"8fd65-c97b-4d00-aa8b-7ed166a60971"
      },
      {
         "action":"set-attribute",
         "path":"driver_info/deploy_ramdisk",
         "value":"09e5420c-6932-4199-996e-9485c56b3394"
      }
   ],
   "conditions":[
      {
         "op":"is-empty",
         "field":"node://driver_info.deploy_ramdisk"
      },
      {
         "op":"is-empty",
         "field":"node://driver_info.deploy_kernel"
      }
   ],
   "scope":"Delivery_1"
}

Response

响应将包含完整的规则对象,此外 condition 部分可能包含额外的默认字段,例如 invertmultiplefield,请参阅 `条件 https://docs.openstack.org/ironic-inspector/2025.2/user/usage.html#conditions>`_

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。

条件 (可选)

body

数组

规则中逻辑语句或操作的列表,可以评估为 True 或 False。

动作

body

数组

如果此规则的 conditions 满足,则将执行的操作列表。

description (可选)

body

字符串

规则的人类可读描述。

scope (可选)

body

字符串

内省规则的范围。如果设置,则该规则仅应用于具有匹配 inspection_scope 属性的节点。

示例 JSON 表示

{
  "actions": [
    {
      "action": "set-attribute",
      "path": "driver_info/deploy_kernel",
      "value": "8fd65-c97b-4d00-aa8b-7ed166a60971"
    },
    {
      "action": "set-attribute",
      "path": "driver_info/deploy_ramdisk",
      "value": "09e5420c-6932-4199-996e-9485c56b3394"
    }
  ],
  "conditions": [
    {
      "field": "node://driver_info.deploy_ramdisk",
      "invert": false,
      "multiple": "any",
      "op": "is-empty"
    },
    {
      "field": "node://driver_info.deploy_kernel",
      "invert": false,
      "multiple": "any",
      "op": "is-empty"
    }
  ],
  "description": "Set deploy info if not already set on node",
  "links": [
    {
      "href": "/v1/rules/7459bf7c-9ff9-43a8-ba9f-48542ecda66c",
      "rel": "self"
    }
  ],
  "uuid": "7459bf7c-9ff9-43a8-ba9f-48542ecda66c",
  "scope": ""
}
GET
/v1/rules

获取内省规则

列出所有内省规则

正常响应代码:200

响应

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。

description (可选)

body

字符串

规则的人类可读描述。

scope (可选)

body

字符串

内省规则的范围。如果设置,则该规则仅应用于具有匹配 inspection_scope 属性的节点。

links

body

数组

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

示例 JSON 表示

{
  "rules": [
    {
      "description": "Set deploy info if not already set on node",
      "links": [
        {
          "href": "/v1/rules/7459bf7c-9ff9-43a8-ba9f-48542ecda66c",
          "rel": "self"
        }
      ],
      "uuid": "7459bf7c-9ff9-43a8-ba9f-48542ecda66c"
    },
    {
      "description": "Set IPMI driver_info if no credentials",
      "links": [
        {
          "href": "/v1/rules/b0ea6361-03cd-467c-859c-7230547dcb9a",
          "rel": "self"
        }
      ],
      "uuid": "b0ea6361-03cd-467c-859c-7230547dcb9a"
    }
  ]
}
GET
/v1/rules/{uuid}

获取内省规则

通过其 uuid 获取一个内省规则

正常响应代码:200

错误代码

  • 404 - 未找到规则

请求

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。

响应

响应将包含完整的规则对象

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。

条件 (可选)

body

数组

规则中逻辑语句或操作的列表,可以评估为 True 或 False。

动作

body

数组

如果此规则的 conditions 满足,则将执行的操作列表。

description (可选)

body

字符串

规则的人类可读描述。

scope (可选)

body

字符串

内省规则的范围。如果设置,则该规则仅应用于具有匹配 inspection_scope 属性的节点。

示例 JSON 表示

{
  "actions": [
    {
      "action": "set-attribute",
      "path": "driver",
      "value": "agent_ipmitool"
    },
    {
      "action": "set-attribute",
      "path": "driver_info/ipmi_username",
      "value": "username"
    },
    {
      "action": "set-attribute",
      "path": "driver_info/ipmi_password",
      "value": "password"
    }
  ],
  "conditions": [
    {
      "field": "node://driver_info.ipmi_password",
      "invert": false,
      "multiple": "any",
      "op": "is-empty"
    },
    {
      "field": "node://driver_info.ipmi_username",
      "invert": false,
      "multiple": "any",
      "op": "is-empty"
    }
  ],
  "description": "Set IPMI driver_info if no credentials",
  "links": [
    {
      "href": "/v1/rules/b0ea6361-03cd-467c-859c-7230547dcb9a",
      "rel": "self"
    }
  ],
  "uuid": "b0ea6361-03cd-467c-859c-7230547dcb9a"
}
DELETE
/v1/rules

删除内省规则

删除所有内省规则

正常响应代码:204

DELETE
/v1/rules/{uuid}

删除内省规则

通过 uuid 删除内省规则。

正常响应代码:204

错误代码

  • 404 - 未找到规则

请求

名称

入参

类型

描述

uuid

路径

字符串

Ironic Inspector 规则的 UUID。