예제 #1
0
    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())