[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: 0.2.0.10-77-g5ba7271

X2Go dev team git-admin at x2go.org
Wed Jan 8 15:29:29 CET 2014


The branch, build-baikal has been updated
       via  5ba7271ccdfd828b3c045b4b6878a56df6336c2e (commit)
      from  564bc7cc97eccfc1ddca356a2bf52b093b9004a3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog |    1 +
 x2go/client.py   |   24 ++++++++++++++++++------
 x2go/guardian.py |    3 ++-
 x2go/registry.py |    6 ++++--
 4 files changed, 25 insertions(+), 9 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 9ef6745..3cd247b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -47,6 +47,7 @@ python-x2go (0.2.1.0-0~x2go1) UNRELEASED; urgency=low
     - Use threading.Lock to prohibit simultaneous calls of
       get_published_applications() of control sessions.
     - Implement some internal locking for X2goSession objects.
+    - Add option to disable auto-registration of pubapp sessions.
   * /debian/rules:
     + Allow package build on systems with missing dh_python2.
   * /debian/control:
diff --git a/x2go/client.py b/x2go/client.py
index 62da464..2429cb9 100644
--- a/x2go/client.py
+++ b/x2go/client.py
@@ -200,6 +200,7 @@ class X2goClient(object):
                  auto_update_listmounts_cache=False,
                  auto_update_sessionregistry=False,
                  auto_register_sessions=False,
+                 no_auto_register_pubapp_sessions=False,
                  refresh_interval=5,
                  pulseaudio_installdir=os.path.join(os.getcwd(), 'pulseaudio'),
                  logger=None, loglevel=log.loglevel_DEFAULT):
@@ -244,6 +245,8 @@ class X2goClient(object):
         @type auto_update_sessionregistry: C{bool}
         @param auto_register_sessions: activate automatic X2Go session registration
         @type auto_register_sessions: C{bool}
+        @param no_auto_register_pubapp_sessions: skip automatic X2Go session registration for suspended/running published applications sessions
+        @type no_auto_register_pubapp_sessions: C{bool}
         @param refresh_interval: refresh session list cache and session status every C{refresh_interval} seconds
         @type refresh_interval: C{int}
         @param pulseaudio_installdir: install path of Pulseaudio binary
@@ -346,12 +349,14 @@ class X2goClient(object):
             self.pulseaudio = X2goPulseAudio(path=self.pulseaudio_installdir, client_instance=self, logger=self.logger)
 
         self.auto_register_sessions = auto_register_sessions
+        self.no_auto_register_pubapp_sessions = no_auto_register_pubapp_sessions
         self.session_registry = X2goSessionRegistry(self, logger=self.logger)
         self.session_guardian = X2goSessionGuardian(self, auto_update_listsessions_cache=auto_update_listsessions_cache & (use_listsessions_cache|use_cache),
                                                     auto_update_listdesktops_cache=auto_update_listdesktops_cache & use_listsessions_cache,
                                                     auto_update_listmounts_cache=auto_update_listmounts_cache & use_listsessions_cache,
                                                     auto_update_sessionregistry=auto_update_sessionregistry,
                                                     auto_register_sessions=auto_register_sessions, 
+                                                    no_auto_register_pubapp_sessions=no_auto_register_pubapp_sessions,
                                                     refresh_interval=refresh_interval,
                                                     logger=self.logger
                                                    )
@@ -2950,7 +2955,7 @@ class X2goClient(object):
 
     __update_cache_all_profiles = update_cache_all_profiles
 
-    def register_available_server_sessions_by_profile_name(self, profile_name, re_register=False):
+    def register_available_server_sessions_by_profile_name(self, profile_name, re_register=False, skip_pubapp_sessions=False):
         """\
         Register available sessions that are found on the X2Go server the profile
         of name C{profile_name} is connected to.
@@ -2959,6 +2964,8 @@ class X2goClient(object):
         @type profile_name: C{str}
         @param re_register: re-register available sessions, needs to be done after session profile changes
         @type re_register: C{bool}
+        @param skip_pubapp_sessions: Do not auto-register published applications sessions.
+        @type skip_pubapp_sessions: C{bool}
 
         """
         if profile_name not in self.client_connected_profiles(return_profile_names=True):
@@ -2968,34 +2975,39 @@ class X2goClient(object):
                                           register_sessions=False,
                                          )
         try:
-            self.session_registry.register_available_server_sessions(profile_name, session_list=session_list, re_register=re_register)
+            self.session_registry.register_available_server_sessions(profile_name, session_list=session_list, re_register=re_register, skip_pubapp_sessions=skip_pubapp_sessions)
         except x2go_exceptions.X2goControlSessionException, e:
             self.HOOK_on_control_session_death(profile_name)
             self.disconnect_profile(profile_name)
             raise e
     __register_available_server_sessions_by_profile_name = register_available_server_sessions_by_profile_name
 
-    def register_available_server_sessions_by_session_uuid(self, session_uuid):
+    def register_available_server_sessions_by_session_uuid(self, session_uuid, skip_pubapp_sessions=False):
         """\
         Register available sessions that are found on the X2Go server that the L{X2goSession} instance 
         with session identifier <session_uuid> is connected to.
 
         @param session_uuid: the X2Go session's UUID registry hash
         @type session_uuid: C{str}
+        @param skip_pubapp_sessions: Do not auto-register published applications sessions.
+        @type skip_pubapp_sessions: C{bool}
 
         """
         profile_name = self.get_session_profile_name(session_uuid)
-        self.__register_available_server_sessions_by_profile_name(profile_name)
+        self.__register_available_server_sessions_by_profile_name(profile_name, skip_pubapp_sessions=skip_pubapp_sessions)
     __register_available_server_sessions_by_session_uuid = register_available_server_sessions_by_session_uuid
 
-    def register_available_server_sessions_all_profiles(self):
+    def register_available_server_sessions_all_profiles(self, skip_pubapp_sessions=False):
         """\
         Register all available sessions found on an X2Go server for each session profile.
 
+        @param skip_pubapp_sessions: Do not auto-register published applications sessions.
+        @type skip_pubapp_sessions: C{bool}
+
         """
         for profile_name in self.client_connected_profiles(return_profile_names=True):
             try:
-                self.__register_available_server_sessions_by_profile_name(profile_name)
+                self.__register_available_server_sessions_by_profile_name(profile_name, skip_pubapp_sessions=skip_pubapp_sessions)
             except x2go_exceptions.X2goSessionRegistryException:
                 pass
     __register_available_server_sessions_all_profiles = register_available_server_sessions_all_profiles
diff --git a/x2go/guardian.py b/x2go/guardian.py
index ba5d5b2..a164e7a 100644
--- a/x2go/guardian.py
+++ b/x2go/guardian.py
@@ -85,6 +85,7 @@ class X2goSessionGuardian(threading.Thread):
         self.auto_update_listmounts_cache = auto_update_listmounts_cache
         self.auto_update_sessionregistry = auto_update_sessionregistry
         self.auto_register_sessions = auto_register_sessions
+        self.no_auto_register_pubapp_sessions = no_auto_register_pubapp_sessions
         self.refresh_interval = refresh_interval
 
         threading.Thread.__init__(self, target=self.guardian)
@@ -117,7 +118,7 @@ class X2goSessionGuardian(threading.Thread):
 
                 # session auto-registration will automatically trigger an update of the session registry status
                 if self.auto_register_sessions:
-                    self.client_instance.register_available_server_sessions_all_profiles()
+                    self.client_instance.register_available_server_sessions_all_profiles(skip_pubapp_sessions=self.no_auto_register_pubapp_sessions)
 
         self.logger('X2Go session guardian thread waking up after %s seconds' % seconds, loglevel=log.loglevel_DEBUG)
 
diff --git a/x2go/registry.py b/x2go/registry.py
index 4245cac..de55998 100644
--- a/x2go/registry.py
+++ b/x2go/registry.py
@@ -376,7 +376,7 @@ class X2goSessionRegistry(object):
 
         return True
 
-    def register_available_server_sessions(self, profile_name, session_list=None, newly_connected=False, re_register=False):
+    def register_available_server_sessions(self, profile_name, session_list=None, newly_connected=False, re_register=False, skip_pubapp_sessions=False):
         """\
         Register server-side available X2Go sessions with this L{X2goSessionRegistry} instance for a given profile name.
 
@@ -389,6 +389,8 @@ class X2goSessionRegistry(object):
         @type newly_connected: C{bool}
         @param re_register: re-register available sessions, needs to be done after changes to the session profile
         @type re_register: C{bool}
+        @param skip_pubapp_sessions: Do not register published applications sessions
+        @type skip_pubapp_sessions: C{bool}
 
         """
         if self._last_available_session_registration is not None:
@@ -444,7 +446,7 @@ class X2goSessionRegistry(object):
                     except: pass
 
                     # this if clause catches problems when x2golistsessions commands give weird results
-                    if not self.has_session_of_session_name(session_name) or re_register:
+                    if not (self.has_session_of_session_name(session_name) and not re.match('.*_stRPUBLISHED_.*', session_name)) or re_register:
                         session_uuid = self.register(server, profile_id, profile_name,
                                                      session_name=session_name, virgin=False,
                                                      **kwargs


hooks/post-receive
-- 
python-x2go.git (Python X2Go Client API)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-x2go.git" (Python X2Go Client API).




More information about the x2go-commits mailing list