通知

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.start

  • baremetal.chassis.create.end

  • baremetal.chassis.create.error

  • baremetal.chassis.update.start

  • baremetal.chassis.update.end

  • baremetal.chassis.update.error

  • baremetal.chassis.delete.start

  • baremetal.chassis.delete.end

  • baremetal.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.start

  • baremetal.deploy_template.create.end

  • baremetal.deploy_template.create.error

  • baremetal.deploy_template.update.start

  • baremetal.deploy_template.update.end

  • baremetal.deploy_template.update.error

  • baremetal.deploy_template.delete.start

  • baremetal.deploy_template.delete.end

  • baremetal.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.start

  • baremetal.node.create.end

  • baremetal.node.create.error

  • baremetal.node.update.start

  • baremetal.node.update.end

  • baremetal.node.update.error

  • baremetal.node.delete.start

  • baremetal.node.delete.end

  • baremetal.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.start

  • baremetal.port.create.end

  • baremetal.port.create.error

  • baremetal.port.update.start

  • baremetal.port.update.end

  • baremetal.port.update.error

  • baremetal.port.delete.start

  • baremetal.port.delete.end

  • baremetal.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.start

  • baremetal.portgroup.create.end

  • baremetal.portgroup.create.error

  • baremetal.portgroup.update.start

  • baremetal.portgroup.update.end

  • baremetal.portgroup.update.error

  • baremetal.portgroup.delete.start

  • baremetal.portgroup.delete.end

  • baremetal.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.start

  • baremetal.volumeconnector.create.end

  • baremetal.volumeconnector.create.error

  • baremetal.volumeconnector.update.start

  • baremetal.volumeconnector.update.end

  • baremetal.volumeconnector.update.error

  • baremetal.volumeconnector.delete.start

  • baremetal.volumeconnector.delete.end

  • baremetal.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.start

  • baremetal.volumetarget.create.end

  • baremetal.volumetarget.create.error

  • baremetal.volumetarget.update.start

  • baremetal.volumetarget.update.end

  • baremetal.volumetarget.update.error

  • baremetal.volumetarget.delete.start

  • baremetal.volumetarget.delete.end

  • baremetal.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.start

  • baremetal.node.maintenance_set.end

  • baremetal.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.start

  • baremetal.node.console_set.end

  • baremetal.node.console_set.error

  • baremetal.node.console_restore.start

  • baremetal.node.console_restore.end

  • baremetal.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"
}