Я пытаюсь удалить устройство pci "ivshmem", которое не может быть перенесено перед миграцией.
Я использовал скрипт ловушки libvirt, который не может подключиться к libvirtd при подключении, поэтому не смог удалить pciустройство.
затем я нашел libvirt api "libvirt-event" и зарегистрировался в "VIR_DOMAIN_EVENT_ID_LIFECYCLE", но это событие "перед миграцией"
вот мой код:
libvirt.virEventRegisterDefaultImpl()
def event_lifecycle_cb(conn, dom, event, detail, opaque):
print ""
print "=-" * 25
print "%s event: %s detail %s" % (dom.name(), str(event), str(detail))
#print "%s: event: %s (%s)" % (dom.name(), VIR_DOMAIN_EVENT_MAPPING.get(event, "?"), event)
#print "%s: state: %s (%s)" % (dom.name(), VIR_DOMAIN_STATE_MAPPING.get(dom.state()[0], "?"), dom.state()[0])
if event == 2:
#
if event == 3 and detail == 1:
# delete the pci device
print "=-" * 25
def conn_register_event_id_lifecycle(conn):
conn.domainEventRegisterAny(
None,
libvirt.VIR_DOMAIN_EVENT_ID_LIFECYCLE,
event_lifecycle_cb,
conn)
# setup connection
#conn=libvirt.open("xen:///")
conn=libvirt.open("qemu:///system")
if conn == None:
print 'Failed to open connection to the hypervisor'
sys.exit(1)
# register events
conn_register_event_id_lifecycle(conn)
# event loop
while True:
libvirt.virEventRunDefaultImpl()
спасибо заранее за любой указатель