通知¶
Ironic 在配置的情况下,会通过消息总线发出通知,指示服务内发生的各种事件。这些通知可以被任何外部服务消费。例如,计费或使用量系统、监控数据存储或其他 OpenStack 服务。本页描述了如何启用通知以及 ironic 可能发出的不同类型的通知。外部消费者会将 ironic 发出的通知视为以下结构的 JSON 对象
{
"priority": <string, defined by the sender>,
"event_type": <string, defined by the sender>,
"timestamp": <string, the isotime of when the notification emitted>,
"publisher_id": <string, defined by the sender>,
"message_id": <uuid, generated by oslo>,
"payload": <json serialized dict, defined by the sender>
}
配置¶
要启用 ironic 的通知,ironic.conf 中必须调整两个配置选项。
第一个选项是配置文件 [DEFAULT] 部分中的 notification_level 选项。它可以设置为“debug”、“info”、“warning”、“error”或“critical”,并确定发出通知的最低优先级级别。例如,如果该选项设置为“warning”,则所有优先级级别为“warning”、“error”或“critical”的通知都会发出,但优先级级别为“debug”或“info”的通知不会发出。有关每个日志级别的语义信息,请参阅 OpenStack 日志记录标准 [1]。如果未设置此选项,则不会发出任何通知。每个可用通知的优先级级别将在下面记录。
第二个选项是配置文件的 [oslo_messaging_notifications] 部分中的 transport_url 选项。这确定了发送通知时使用的消息总线。如果未设置此选项,则将使用 RPC 的默认传输。
所有通知都通过消息总线上的“ironic_versioned_notifications”主题发出。通常,遍历消息总线的每种类型的消息都与描述该消息的主题相关联。有关更多信息,请参阅所选消息总线的文档,例如 RabbitMQ 文档 [2]。
请注意,通知可能会有丢失,并且无法保证通知会通过消息总线传递到消费者。
版本控制¶
每个通知在有效载荷的“ironic_object.version”字段中都有一个关联的版本。保证微版本更新会添加新字段,而宏版本更新不兼容,并且可能删除字段。
默认情况下,版本化通知会发送到 ironic_versioned_notifications 主题。这可以更改,并且可以在 ironic.conf 中使用 versioned_notifications_topics 配置选项进行配置。
可用通知¶
此处描述了 ironic 发出的通知。它们首先按服务(按字母顺序)排列,然后按 event_type 列表排列。以下所有示例都显示在序列化为 JSON 之前的有效载荷。
ironic-api 通知¶
资源 CRUD 通知¶
当 ironic 资源作为创建、更新或删除 (CRUD) [3] 过程的一部分被修改时,这些通知会从 API 服务发出。所有 CRUD 通知都以 INFO 级别发出,除了以 ERROR 级别发出的“error”状态。
机箱的 CRUD 通知列表
baremetal.chassis.create.startbaremetal.chassis.create.endbaremetal.chassis.create.errorbaremetal.chassis.update.startbaremetal.chassis.update.endbaremetal.chassis.update.errorbaremetal.chassis.delete.startbaremetal.chassis.delete.endbaremetal.chassis.delete.error
机箱 CRUD 通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"ChassisCRUDPayload",
"ironic_object.version":"1.0",
"ironic_object.data":{
"created_at": "2016-04-10T10:13:03+00:00",
"description": "bare 28",
"extra": {},
"updated_at": "2016-04-27T21:11:03+00:00",
"uuid": "1910f669-ce8b-43c2-b1d8-cf3d65be815e"
}
},
"event_type":"baremetal.chassis.update.end",
"publisher_id":"ironic-api.hostname02"
}
部署模板的 CRUD 通知列表
baremetal.deploy_template.create.startbaremetal.deploy_template.create.endbaremetal.deploy_template.create.errorbaremetal.deploy_template.update.startbaremetal.deploy_template.update.endbaremetal.deploy_template.update.errorbaremetal.deploy_template.delete.startbaremetal.deploy_template.delete.endbaremetal.deploy_template.delete.error
部署模板 CRUD 通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"DeployTemplateCRUDPayload",
"ironic_object.version":"1.0",
"ironic_object.data":{
"created_at": "2019-02-10T10:13:03+00:00",
"extra": {},
"name": "CUSTOM_HYPERTHREADING_ON",
"steps": [
{
"interface": "bios",
"step": "apply_configuration",
"args": {
"settings": [
{
"name": "LogicalProc",
"value": "Enabled"
}
]
},
"priority": 150
}
],
"updated_at": "2019-02-27T21:11:03+00:00",
"uuid": "1910f669-ce8b-43c2-b1d8-cf3d65be815e"
}
},
"event_type":"baremetal.deploy_template.update.end",
"publisher_id":"ironic-api.hostname02"
}
节点 CRUD 通知列表
baremetal.node.create.startbaremetal.node.create.endbaremetal.node.create.errorbaremetal.node.update.startbaremetal.node.update.endbaremetal.node.update.errorbaremetal.node.delete.startbaremetal.node.delete.endbaremetal.node.delete.error
节点 CRUD 通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodeCRUDPayload",
"ironic_object.version":"1.13",
"ironic_object.data":{
"chassis_uuid": "db0eef9d-45b2-4dc0-94a8-fc283c01171f",
"clean_step": None,
"conductor_group": "",
"console_enabled": False,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"driver_info": {
"ipmi_address": "192.168.0.111",
"ipmi_username": "root"},
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_info": {},
"instance_uuid": None,
"last_error": None,
"lessee": None,
"maintenance": False,
"maintenance_reason": None,
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None,
"provision_state": "deploying",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": "active",
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
},
"event_type":"baremetal.node.update.end",
"publisher_id":"ironic-api.hostname02"
}
端口 CRUD 通知列表
baremetal.port.create.startbaremetal.port.create.endbaremetal.port.create.errorbaremetal.port.update.startbaremetal.port.update.endbaremetal.port.update.errorbaremetal.port.delete.startbaremetal.port.delete.endbaremetal.port.delete.error
端口 CRUD 通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"PortCRUDPayload",
"ironic_object.version":"1.3",
"ironic_object.data":{
"address": "77:66:23:34:11:b7",
"created_at": "2016-02-11T15:23:03+00:00",
"node_uuid": "5b236cab-ad4e-4220-b57c-e827e858745a",
"extra": {},
"is_smartnic": True,
"local_link_connection": {},
"physical_network": "physnet1",
"portgroup_uuid": "bd2f385e-c51c-4752-82d1-7a9ec2c25f24",
"pxe_enabled": True,
"updated_at": "2016-03-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
},
"event_type":"baremetal.port.update.end",
"publisher_id":"ironic-api.hostname02"
}
端口组 CRUD 通知列表
baremetal.portgroup.create.startbaremetal.portgroup.create.endbaremetal.portgroup.create.errorbaremetal.portgroup.update.startbaremetal.portgroup.update.endbaremetal.portgroup.update.errorbaremetal.portgroup.delete.startbaremetal.portgroup.delete.endbaremetal.portgroup.delete.error
端口组 CRUD 通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"PortgroupCRUDPayload",
"ironic_object.version":"1.0",
"ironic_object.data":{
"address": "11:44:32:87:61:e5",
"created_at": "2017-01-11T11:33:03+00:00",
"node_uuid": "5b236cab-ad4e-4220-b57c-e827e858745a",
"extra": {},
"mode": "7",
"name": "portgroup-node-18",
"properties": {},
"standalone_ports_supported": True,
"updated_at": "2017-01-31T11:41:07+00:00",
"uuid": "db033a40-bfed-4c84-815a-3db26bb268bb",
}
},
"event_type":"baremetal.portgroup.update.end",
"publisher_id":"ironic-api.hostname02"
}
卷连接器 CRUD 通知列表
baremetal.volumeconnector.create.startbaremetal.volumeconnector.create.endbaremetal.volumeconnector.create.errorbaremetal.volumeconnector.update.startbaremetal.volumeconnector.update.endbaremetal.volumeconnector.update.errorbaremetal.volumeconnector.delete.startbaremetal.volumeconnector.delete.endbaremetal.volumeconnector.delete.error
卷连接器 CRUD 通知示例
{
"priority": "info",
"payload": {
"ironic_object.namespace": "ironic",
"ironic_object.name": "VolumeConnectorCRUDPayload",
"ironic_object.version": "1.0",
"ironic_object.data": {
"connector_id": "iqn.2017-05.org.openstack:01:d9a51732c3f",
"created_at": "2017-05-11T05:57:36+00:00",
"extra": {},
"node_uuid": "4dbb4e69-99a8-4e13-b6e8-dd2ad4a20caf",
"type": "iqn",
"updated_at": "2017-05-11T08:28:58+00:00",
"uuid": "19b9f3ab-4754-4725-a7a4-c43ea7e57360"
}
},
"event_type": "baremetal.volumeconnector.update.end",
"publisher_id":"ironic-api.hostname02"
}
卷目标 CRUD 通知列表
baremetal.volumetarget.create.startbaremetal.volumetarget.create.endbaremetal.volumetarget.create.errorbaremetal.volumetarget.update.startbaremetal.volumetarget.update.endbaremetal.volumetarget.update.errorbaremetal.volumetarget.delete.startbaremetal.volumetarget.delete.endbaremetal.volumetarget.delete.error
卷目标 CRUD 通知示例
{
"priority": "info",
"payload": {
"ironic_object.namespace": "ironic",
"ironic_object.version": "1.0",
"ironic_object.name": "VolumeTargetCRUDPayload"
"ironic_object.data": {
"boot_index": 0,
"created_at": "2017-05-11T09:38:59+00:00",
"extra": {},
"node_uuid": "4dbb4e69-99a8-4e13-b6e8-dd2ad4a20caf",
"properties": {
"access_mode": "rw",
"auth_method": "CHAP"
"auth_password": "***",
"auth_username": "urxhQCzAKr4sjyE8DivY",
"encrypted": false,
"qos_specs": null,
"target_discovered": false,
"target_iqn": "iqn.2010-10.org.openstack:volume-f0d9b0e6-b242-9105-91d4-a20331693ad8",
"target_lun": 1,
"target_portal": "192.168.12.34:3260",
"volume_id": "f0d9b0e6-b042-4105-91d4-a20331693ad8",
},
"updated_at": "2017-05-11T09:52:04+00:00",
"uuid": "82a45833-9c58-4ec1-943c-2091ab10e47b",
"volume_id": "f0d9b0e6-b242-9105-91d4-a20331693ad8",
"volume_type": "iscsi"
}
},
"event_type": "baremetal.volumetarget.update.end",
"publisher_id":"ironic-api.hostname02"
}
节点维护通知¶
当通过 API 服务更改维护模式时,这些通知会从 API 服务发出。节点维护通知列表
baremetal.node.maintenance_set.startbaremetal.node.maintenance_set.endbaremetal.node.maintenance_set.error
“start”和“end”通知具有 INFO 级别,“error”具有 ERROR 级别。节点维护通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodePayload",
"ironic_object.version":"1.15",
"ironic_object.data":{
"clean_step": None,
"conductor_group": "",
"console_enabled": False,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_info": {},
"instance_uuid": None,
"last_error": None,
"lessee": None,
"maintenance": True,
"maintenance_reason": "hw upgrade",
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None,
"provision_state": "available",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": None,
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
},
"event_type":"baremetal.node.maintenance_set.start",
"publisher_id":"ironic-api.hostname02"
}
ironic-conductor 通知¶
节点控制台通知¶
当 conductor 服务启动或停止节点的控制台时,这些通知会由 ironic-conductor 服务发出。节点控制台的通知事件类型为
baremetal.node.console_set.startbaremetal.node.console_set.endbaremetal.node.console_set.errorbaremetal.node.console_restore.startbaremetal.node.console_restore.endbaremetal.node.console_restore.error
console_set 操作用于启动或停止控制台。 console_restore 操作用于控制台已启用,但驱动程序必须重新启动控制台,因为 ironic-conductor 已重新启动。当 ironic-conductor 接管由另一个 ironic-conductor 管理的节点时,也可能会发送此通知。“start”和“end”通知具有 INFO 级别,“error”具有 ERROR 级别。节点控制台通知示例
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodePayload",
"ironic_object.version":"1.15",
"ironic_object.data":{
"clean_step": None,
"conductor_group": "",
"console_enabled": True,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_info": {},
"instance_uuid": None,
"last_error": None,
"lessee": None,
"maintenance": False,
"maintenance_reason": None,
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None,
"provision_state": "available",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": None,
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"
}
},
"event_type":"baremetal.node.console_set.end",
"publisher_id":"ironic-conductor.hostname01"
}
baremetal.node.power_set¶
baremetal.node.power_set.start由 ironic-conductor 服务发出,当它开始电源状态更改时。它具有 INFO 级别的通知。baremetal.node.power_set.end在 ironic-conductor 成功完成电源状态更改任务时发出。它具有 INFO 级别的通知。baremetal.node.power_set.error由 ironic-conductor 发出,当它无法设置节点的电源状态时。它具有 ERROR 级别的通知。如果 ironic 无法在节点上设置新的电源状态之前检索旧的电源状态,或者如果请求更改时无法设置电源状态,则可能会发生这种情况。
这是一个具有此事件类型的通知的示例有效载荷。 “to_power”有效载荷字段指示 ironic-conductor 尝试更改节点电源状态的目标状态
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodeSetPowerStatePayload",
"ironic_object.version":"1.15",
"ironic_object.data":{
"clean_step": None,
"conductor_group": "",
"console_enabled": False,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_uuid": "d6ea00c1-1f94-4e95-90b3-3462d7031678",
"last_error": None,
"lessee": None,
"maintenance": False,
"maintenance_reason": None,
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None
"provision_state": "available",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": None,
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"to_power": "power on"
}
},
"event_type":"baremetal.node.power_set.start",
"publisher_id":"ironic-conductor.hostname01"
}
baremetal.node.power_state_corrected¶
baremetal.node.power_state_corrected.success由 ironic-conductor 发出,当裸机硬件上的电源状态与节点的先前已知电源状态不同,并且数据库已更正以反映这种新的电源状态时。它具有 INFO 级别的通知。
这是一个具有此 event_type 的通知的示例有效载荷。 “from_power”有效载荷字段指示在更正之前节点上的先前电源状态
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodeCorrectedPowerStatePayload",
"ironic_object.version":"1.15",
"ironic_object.data":{
"clean_step": None,
"conductor_group": "",
"console_enabled": False,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_uuid": "d6ea00c1-1f94-4e95-90b3-3462d7031678",
"last_error": None,
"lessee": None,
"maintenance": False,
"maintenance_reason": None,
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None,
"provision_state": "available",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": None,
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"from_power": "power on"
}
},
"event_type":"baremetal.node.power_state_corrected.success",
"publisher_id":"ironic-conductor.cond-hostname02"
}
baremetal.node.provision_set¶
baremetal.node.provision_set.start由 ironic-conductor 服务发出,当它开始配置状态转换时。它具有 INFO 级别的通知。baremetal.node.provision_set.end在 ironic-conductor 成功完成配置状态转换时发出。它具有 INFO 级别的通知。baremetal.node.provision_set.success在 ironic-conductor 成功更改配置状态,无需任何中间工作时发出(例如,AVAILABLE 到 MANAGEABLE)。它具有 INFO 级别的通知。baremetal.node.provision_set.error由 ironic-conductor 发出,当它作为错误事件处理的结果更改配置状态时。它具有 ERROR 级别的通知。
这是一个具有此事件类型的通知的示例有效载荷。 “previous_provision_state”和“previous_target_provision_state”有效载荷字段指示状态更改之前的节点配置状态,“event”是触发状态更改的 FSM(有限状态机)事件
{
"priority": "info",
"payload":{
"ironic_object.namespace":"ironic",
"ironic_object.name":"NodeSetProvisionStatePayload",
"ironic_object.version":"1.16",
"ironic_object.data":{
"clean_step": None,
"conductor_group": "",
"console_enabled": False,
"created_at": "2016-01-26T20:41:03+00:00",
"deploy_step": None,
"description": "my sample node",
"driver": "ipmi",
"driver_internal_info": {
"is_whole_disk_image": True},
"extra": {},
"inspection_finished_at": None,
"inspection_started_at": None,
"instance_info": {},
"instance_uuid": None,
"last_error": None,
"lessee": None,
"maintenance": False,
"maintenance_reason": None,
"fault": None,
"bios_interface": "no-bios",
"boot_interface": "pxe",
"console_interface": "no-console",
"deploy_interface": "direct",
"inspect_interface": "no-inspect",
"management_interface": "ipmitool",
"network_interface": "flat",
"power_interface": "ipmitool",
"raid_interface": "no-raid",
"rescue_interface": "no-rescue",
"storage_interface": "noop",
"vendor_interface": "no-vendor",
"name": None,
"owner": None,
"power_state": "power off",
"properties": {
"memory_mb": 4096,
"cpu_arch": "x86_64",
"local_gb": 10,
"cpus": 8},
"protected": False,
"protected_reason": None,
"provision_state": "deploying",
"provision_updated_at": "2016-01-27T20:41:03+00:00",
"resource_class": None,
"retired": None,
"retired_reason": None,
"target_power_state": None,
"target_provision_state": "active",
"traits": [
"CUSTOM_TRAIT1",
"HW_CPU_X86_VMX"],
"updated_at": "2016-01-27T20:41:03+00:00",
"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123",
"previous_provision_state": "available",
"previous_target_provision_state": None,
"event": "deploy"
}
},
"event_type":"baremetal.node.provision_set.start",
"publisher_id":"ironic-conductor.hostname01"
}