def finalize(self): Logger._instance.setThreadedMode(False) self.update_locked_sessions() for session in self.sessions.values(): self.manager.session_switch_status(session, Session.SESSION_STATUS_WAIT_DESTROY) System.prepareForSessionActions() cleaner = SessionManagement(self.manager, None, None, None, None) for session in self.sessions.values(): session.end_status = Session.SESSION_END_STATUS_SHUTDOWN cleaner.destroy_session(session) self.manager.purgeGroup() Profile.cleanup()
def __init__(self, main_instance): AbstractRole.__init__(self, main_instance) Logger.info("Guest role::__init__") self.loop = True self.url = None self.host = Conf.hypervisor self.port = "1112" self.session = None self.session_spooler = multiprocessing.Queue() self.session_sync = multiprocessing.Queue() self.manager = Manager(self.main_instance.smRequestManager) self.session_manager = SessionManagement(self.manager, self.session_spooler, self.session_sync) self.current_session_status = None
def finalize(self): Logger._instance.setThreadedMode(False) self.update_locked_sessions() for session in self.sessions.values(): self.manager.session_switch_status( session, Session.SESSION_STATUS_WAIT_DESTROY) System.prepareForSessionActions() cleaner = SessionManagement(self.manager, None, None, None, None) for session in self.sessions.values(): session.end_status = Session.SESSION_END_STATUS_SHUTDOWN cleaner.destroy_session(session) self.manager.purgeGroup() Profile.cleanup()
def stop(self): for thread in self.threads: thread.terminate() for thread in self.threads: thread.join() self.update_locked_sessions() for session in self.sessions.values(): self.manager.session_switch_status(session, Session.SESSION_STATUS_WAIT_DESTROY) Platform.System.prepareForSessionActions() cleaner = SessionManagement(self.manager, None, None, None, None) for session in self.sessions.values(): session.end_status = Session.SESSION_END_STATUS_SHUTDOWN cleaner.destroy_session(session) self.manager.purgeGroup()
def stop(self): for thread in self.threads: thread.terminate() for thread in self.threads: thread.join() self.update_locked_sessions() for session in self.sessions.values(): self.manager.session_switch_status( session, Session.SESSION_STATUS_WAIT_DESTROY) Platform.System.prepareForSessionActions() cleaner = SessionManagement(self.manager, None, None, None, None) for session in self.sessions.values(): session.end_status = Session.SESSION_END_STATUS_SHUTDOWN cleaner.destroy_session(session) self.manager.purgeGroup()
def init(self): Logger.debug("ApplicationServer init") try: TS.getList() except Exception: Logger.exception("RDP server dialog failed ... exiting") return if not System.groupExist(self.manager.ts_group_name): Logger.error("The group '%s' doesn't exist" % (self.manager.ts_group_name)) return False if not System.groupExist(self.manager.ovd_group_name): if not System.groupCreate(self.manager.ovd_group_name): return False if not self.manager.purgeGroup(): Logger.error("Unable to purge group") return False if Config.clean_dump_archive: self.purgeArchives() if Config.thread_count is None: cpuInfos = System.getCPUInfos() vcpu = cpuInfos[0] ram_total = System.getRAMTotal() ram = int(round(ram_total / 1024.0 / 1024.0)) nb_thread = int(round(1 + (ram + vcpu * 2) / 3)) else: nb_thread = Config.thread_count Logger._instance.setQueue(self.logging_queue, True) for _ in xrange(nb_thread): self.threads.append( SessionManagement(self.manager, self.sessions_spooler, self.sessions_spooler2, self.sessions_sync, self.logging_queue)) if self.canManageApplications(): self.apt = Apt() self.apt.init() self.threads.append(self.apt) Logger.info( "ApplicationServer:: retrieve all applications installed (can take some time)" ) self.updateApplications() return True
class Role(AbstractRole): session_spooler = None @staticmethod def getName(): return "Guest" def __init__(self, main_instance): AbstractRole.__init__(self, main_instance) Logger.info("Guest role::__init__") self.loop = True self.url = None self.host = Conf.hypervisor self.port = "1112" self.session = None self.session_spooler = multiprocessing.Queue() self.session_sync = multiprocessing.Queue() self.manager = Manager(self.main_instance.smRequestManager) self.session_manager = SessionManagement(self.manager, self.session_spooler, self.session_sync) self.current_session_status = None def init(self): Logger.info("Guest role::init") return True def launch(self): name = self.get_guest_name_from_hypervisor() Logger.debug("Role:: name : "+name) if name is False: return False self.write_name(name) self.send_couple_ip_nom() def order_stop(self): AbstractRole.order_stop(self) self.session_manager.looping = False self.loop = False def run(self): self.status = Role.STATUS_RUNNING self.launch() self.session_manager.start() Logger.info("Guest role::run begin") while self.loop: while True : try: session = self.session_sync.get(True,4) except Queue.Empty, e: break else: self.session = session if self.session is not None : ts_id = Util.getSessionID(self.session.user.name) if ts_id is not None : ts_status = Util.getState(ts_id) if ts_status == "logged" and self.current_session_status != "logged" : self.manager.session_switch_status(self.session, Session.SESSION_STATUS_ACTIVE) Logger.info("Role::SESSION LOGGED") self.current_session_status = ts_status continue if ts_status == "disconnected" and self.current_session_status != "disconnected" : self.manager.session_switch_status(self.session, Session.SESSION_STATUS_INACTIVE) Logger.info("Role::SESSION_DISCONNECTED") self.current_session_status = ts_status continue else : if self.current_session_status != "disconnected" and self.session.status != Session.SESSION_STATUS_INITED: self.manager.session_switch_status(self.session, Session.SESSION_STATUS_INACTIVE) Logger.info("Role::SESSION DISCONNECTED") self.current_session_status = "disconnected" time.sleep(2) Logger.info("Guest role::run end") self.status = Role.STATUS_STOP
class Role(AbstractRole): session_spooler = None @staticmethod def getName(): return "Guest" def __init__(self, main_instance): AbstractRole.__init__(self, main_instance) Logger.info("Guest role::__init__") self.loop = True self.url = None self.host = Conf.hypervisor self.port = "1112" self.session = None self.session_spooler = multiprocessing.Queue() self.session_sync = multiprocessing.Queue() self.manager = Manager(self.main_instance.smRequestManager) self.session_manager = SessionManagement(self.manager, self.session_spooler, self.session_sync) self.current_session_status = None def init(self): Logger.info("Guest role::init") return True def launch(self): name = self.get_guest_name_from_hypervisor() Logger.debug("Role:: name : " + name) if name is False: return False self.write_name(name) self.send_couple_ip_nom() def order_stop(self): AbstractRole.order_stop(self) self.session_manager.looping = False self.loop = False def run(self): self.status = Role.STATUS_RUNNING self.launch() self.session_manager.start() Logger.info("Guest role::run begin") while self.loop: while True: try: session = self.session_sync.get(True, 4) except Queue.Empty, e: break else: self.session = session if self.session is not None: ts_id = Util.getSessionID(self.session.user.name) if ts_id is not None: ts_status = Util.getState(ts_id) if ts_status == "logged" and self.current_session_status != "logged": self.manager.session_switch_status( self.session, Session.SESSION_STATUS_ACTIVE) Logger.info("Role::SESSION LOGGED") self.current_session_status = ts_status continue if ts_status == "disconnected" and self.current_session_status != "disconnected": self.manager.session_switch_status( self.session, Session.SESSION_STATUS_INACTIVE) Logger.info("Role::SESSION_DISCONNECTED") self.current_session_status = ts_status continue else: if self.current_session_status != "disconnected" and self.session.status != Session.SESSION_STATUS_INITED: self.manager.session_switch_status( self.session, Session.SESSION_STATUS_INACTIVE) Logger.info("Role::SESSION DISCONNECTED") self.current_session_status = "disconnected" time.sleep(2) Logger.info("Guest role::run end") self.status = Role.STATUS_STOP
class Role(AbstractRole): sessions = {} sessions_spooler = None def __init__(self, main_instance): AbstractRole.__init__(self, main_instance) self.dialog = Dialog(self) Logger._instance.close() self.sessions = {} self.locked_sessions = [] self.sessions_spooler = MPQueue.Queue() self.sessions_spooler2 = MPQueue.Queue() self.sessions_sync = MPQueue.Queue() self.logging_queue = MPQueue.Queue() self.manager = Manager(self.main_instance.smRequestManager) self.threads = [] self.applications = {} self.applications_id_SM = {} self.applications_mutex = threading.Lock() self.has_run = False self.static_apps = RolePlatform.ApplicationsStatic( self.main_instance.smRequestManager) self.static_apps_must_synced = False self.static_apps_lock = threading.Lock() def init(self): Logger.debug("ApplicationServer init") try: RolePlatform.TS.getList() except Exception, err: Logger.error("RDP server dialog failed ... exiting") Logger.debug("RDP server dialog: " + str(err)) return if not Platform.System.groupExist(self.manager.ts_group_name): Logger.error("The group '%s' doesn't exist" % (self.manager.ts_group_name)) return False if not Platform.System.groupExist(self.manager.ovd_group_name): if not Platform.System.groupCreate(self.manager.ovd_group_name): return False if not self.manager.purgeGroup(): Logger.error("Unable to purge group") return False if Config.clean_dump_archive: self.purgeArchives() if Config.thread_count is None: cpuInfos = Platform.System.getCPUInfos() vcpu = cpuInfos[0] ram_total = Platform.System.getRAMTotal() ram = int(round(ram_total / 1024.0 / 1024.0)) nb_thread = int(round(1 + (ram + vcpu * 2) / 3)) else: nb_thread = Config.thread_count Logger._instance.setQueue(self.logging_queue, True) Logger._instance.close() for _ in xrange(nb_thread): self.threads.append( SessionManagement(self.manager, self.sessions_spooler, self.sessions_spooler2, self.sessions_sync, self.logging_queue)) if self.canManageApplications(): self.apt = Apt() self.apt.init() self.threads.append(self.apt) return True