def guest_state_report_engine(self): """ Guest 状态上报引擎 """ guest_state_mapping = dict() while True: if Utils.exit_flag: msg = 'Thread guest_state_report_engine say bye-bye' print msg logger.info(msg=msg) return try: # 3 秒钟更新一次 time.sleep(config['engine_cycle_interval'] * 3) threads_status['guest_state_report_engine'] = { 'timestamp': ji.Common.ts() } self.refresh_dom_mapping() for uuid, dom in self.dom_mapping_by_uuid.items(): state = Guest.get_state(dom=dom) if uuid in guest_state_mapping and guest_state_mapping[ uuid] == state: continue guest_state_mapping[uuid] = state Guest.guest_state_report(dom=dom) except: log_emit.warn(traceback.format_exc())
def refresh_guest_state(self): try: self.refresh_dom_mapping() for dom in self.dom_mapping_by_uuid.values(): Guest.guest_state_report(dom=dom) except: log_emit.warn(traceback.format_exc())
def refresh_guest_state(self): try: self.init_conn() self.refresh_guest_mapping() for guest in self.guest_mapping_by_uuid.values(): Guest.guest_state_report(guest) except: logger.error(traceback.format_exc()) log_emit.error(traceback.format_exc())
def guest_booting2running_report_engine(self): """ Guest 启动到运行状态上报 """ self.init_conn() list_booting_guest = list() def is_running(_guest): running = False try: exec_ret = libvirt_qemu.qemuAgentCommand(_guest, json.dumps({ 'execute': 'guest-ping', 'arguments': { } }), 3, libvirt_qemu.VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT) running = True except: logger.error(traceback.format_exc()) return running while True: if Utils.exit_flag: msg = 'Thread guest_booting2running_report_engine say bye-bye' print msg logger.info(msg=msg) return # noinspection PyBroadException try: try: payload = q_booting_guest.get(timeout=config['engine_cycle_interval']) list_booting_guest.append(payload) q_booting_guest.task_done() except Queue.Empty as e: time.sleep(config['engine_cycle_interval']) threads_status['guest_booting2running_report_engine'] = dict() threads_status['guest_booting2running_report_engine']['timestamp'] = ji.Common.ts() for i, uuid in enumerate(list_booting_guest): guest = self.conn.lookupByUUIDString(uuidstr=uuid) log = u' '.join([u'域', guest.name(), u', UUID', uuid, u'的状态改变为']) if guest is not None and guest.isActive() and is_running(_guest=guest): log += u' Running。' guest_event_emit.running(uuid=uuid) logger.info(log) log_emit.info(log) else: time.sleep(config['engine_cycle_interval']) Guest.guest_state_report(guest=guest) del list_booting_guest[i] except: logger.error(traceback.format_exc()) log_emit.error(traceback.format_exc())