Beispiel #1
0
	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()
Beispiel #2
0
    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
Beispiel #3
0
    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()
Beispiel #4
0
	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()
Beispiel #5
0
    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()
Beispiel #6
0
    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
Beispiel #7
0
	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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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