コード例 #1
0
def myDomainTimeoutCalllback(timer, opaque):
    conn = libvirt.open('qemu:///system')
    if conn == None:
        print('Failed to open connection to qemu:///system', file=sys.stderr)
        exit(1)
    if conn.lookupByName(opaque).info()[0] == libvirt.VIR_DOMAIN_RUNNING:
        conn.lookupByName(opaque).shutdown()
        time.sleep(10)
        if conn.lookupByName(opaque).info()[0] == libvirt.VIR_DOMAIN_RUNNING:
            conn.lookupByName(opaque).destroy()
    libvirt.virEventRemoveTimeout(timer)
コード例 #2
0
 def remove_timeout(self, timer):
     try:
         return libvirt.virEventRemoveTimeout(timer)
     except libvirt.libvirtError, e:
         message = e.get_error_message()
         code = e.get_error_code()
         raise exception.LibvirtAPI(message, code)
コード例 #3
0
ファイル: builder.py プロジェクト: jon-turney/carpetbag
def wait_for_guest_agent(conn, domain, timeout):
    done = False

    def timeoutEventCallback(timer, opaque):
        logging.info("timeout event:")
        nonlocal done
        done = True

    def domainEventAgentLifecycleCallback (conn, dom, state, reason, opaque):
        logging.info("agentLifecycle event: domain '%s' state %d reason %d" % (dom.name(), state, reason))
        if state == libvirt.VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_CONNECTED:
            nonlocal done
            done = True

    timer_id = libvirt.virEventAddTimeout(timeout*1000, timeoutEventCallback, None)

    conn.domainEventRegisterAny(domain, libvirt.VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE, domainEventAgentLifecycleCallback, None)

    while not done:
        libvirt.virEventRunDefaultImpl()

    libvirt.virEventRemoveTimeout(timer_id)
コード例 #4
0
 def _retry_register_watches(self, timer, libvirt_domain):
     libvirt.virEventRemoveTimeout(timer)
     self._register_watches(libvirt_domain)