Hi,

openstack-virtual baremetal carried patches[1] to enable PXE booting instances, I think the nova project declined including them back when, I do not know why ...

Another potential solution is to use block_device_mappings and attach an iPXE image as a secondary disk and set that as boot_index: 0. I use the following when creating an instance, the "server_img.id" can be a "blank" image initially. Then the second image is an iPXE image. The result is that the instance boots into iPXE which does network boot ...

block_device_mapping = [
    {'uuid': server_img.id,
     'boot_index': 1,
     'source_type': 'image',
     'destination_type': 'volume',
     'device_type': 'disk',
     'volume_size': VOLUME_SIZE,
     'delete_on_termination': True,
    },
    {'uuid': ipxe_image.id,
     'boot_index': 0,
     'source_type': 'image',
     'destination_type': 'volume',
     'device_type': 'cdrom',
     'disk_bus': 'sata',
     'volume_size': VOLUME_SIZE,
     'delete_on_termination': True,
    }
]

[1] https://opendev.org/openstack/openstack-virtual-baremetal/src/branch/stable/2.0/patches/nova 

//
Harald