событие libvirt перед миграцией - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь удалить устройство 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()

спасибо заранее за любой указатель

...