コード例 #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())
コード例 #2
0
    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())
コード例 #3
0
ファイル: host.py プロジェクト: xuhengpw/JimV-N
    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())
コード例 #4
0
ファイル: host.py プロジェクト: xuhengpw/JimV-N
    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())