[X2Go-Commits] [x2gobroker] 01/04: Don't check for running/suspended session if the session profile will request a shadowing session.
git-admin at x2go.org
git-admin at x2go.org
Thu Mar 19 02:31:01 CET 2015
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2gobroker.
commit 0e792e061b7a64f5a0fead1139f57cf26ef2aac5
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Thu Mar 19 02:14:03 2015 +0100
Don't check for running/suspended session if the session profile will request a shadowing session.
---
debian/changelog | 2 +
x2gobroker/brokers/base_broker.py | 77 +++++++++++++++++++++++++++----------
2 files changed, 58 insertions(+), 21 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 46229ae..c40a4be 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -222,6 +222,8 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low
if the <hostname> is a valid address on the local network (broker <->
<server> communication), but the host address is valid for clients
(client <-> server communication).
+ - Don't check for running/suspended session if the session profile will
+ request a shadowing session.
* debian/control:
+ Provide separate bin:package for SSH brokerage: x2gobroker-ssh.
+ Replace LDAP support with session brokerage support in LONG_DESCRIPTION.
diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py
index 49042ec..bddca67 100644
--- a/x2gobroker/brokers/base_broker.py
+++ b/x2gobroker/brokers/base_broker.py
@@ -1039,6 +1039,40 @@ class X2GoBroker(object):
return remote_agent
+ def is_shadow_profile(self, profile_id):
+ """\
+ Detect from the session profile, if it defines a desktop sharing (shadow)
+ session.
+
+ @param profile_id: ID of a valid session profile
+ @type profile_id: C{unicode}
+
+ return: C{True} if the session profile defines a desktop sharing (shadow) session
+ rtype: C{bool}
+
+ """
+ profile = self.get_profile(profile_id)
+ return profile['command'] == "SHADOW"
+
+ def check_for_sessions(self, profile_id):
+ """\
+ Detect from the session profile, if we should query the remote broker
+ agent for running or suspended sessions.
+
+ @param profile_id: ID of a valid session profile
+ @type profile_id: C{unicode}
+
+ return: C{True} if the remote broker agent should be queried for running/suspended sessions
+ rtype: C{bool}
+
+ """
+ do_check = True
+
+ # do check, for all commands except the "SHADOW" command
+ do_check = do_check and self.is_shadow_profile(profile_id)
+
+ return do_check
+
def get_profile_for_user(self, profile_id, username, broker_frontend=None):
"""\
Expect a profile id and perform some checks and preparations to
@@ -1088,29 +1122,30 @@ class X2GoBroker(object):
remote_agent = self.get_remote_agent(profile_id)
agent_query_mode = ( remote_agent == u'LOCAL') and u'LOCAL' or u'SSH'
- if remote_agent:
- try:
- success, running_sessions, suspended_sessions = x2gobroker.agent.has_sessions(username, remote_agent=remote_agent)
- if running_sessions:
- logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): found running sessions on host(s): {hosts}'.format(hosts=', '.join(running_sessions)))
- if suspended_sessions:
- logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): found running sessions on host(s): {hosts}'.format(hosts=', '.join(suspended_sessions)))
- suspended_matching_hostnames = x2gobroker.utils.matching_hostnames(profile['host'], suspended_sessions)
- running_matching_hostnames = x2gobroker.utils.matching_hostnames(profile['host'], running_sessions)
- if suspended_matching_hostnames:
- profile['status'] = u'S'
- profile['host'] = [suspended_matching_hostnames[0]]
- elif running_matching_hostnames:
- profile['status'] = u'R'
- profile['host'] = [running_matching_hostnames[0]]
- else:
- profile['host'] = [profile['host'][0]]
+ if self.check_for_sessions(profile_id):
+ if remote_agent:
+ try:
+ success, running_sessions, suspended_sessions = x2gobroker.agent.has_sessions(username, remote_agent=remote_agent)
+ if running_sessions:
+ logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): found running sessions on host(s): {hosts}'.format(hosts=', '.join(running_sessions)))
+ if suspended_sessions:
+ logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): found running sessions on host(s): {hosts}'.format(hosts=', '.join(suspended_sessions)))
+ suspended_matching_hostnames = x2gobroker.utils.matching_hostnames(profile['host'], suspended_sessions)
+ running_matching_hostnames = x2gobroker.utils.matching_hostnames(profile['host'], running_sessions)
+ if suspended_matching_hostnames:
+ profile['status'] = u'S'
+ profile['host'] = [suspended_matching_hostnames[0]]
+ elif running_matching_hostnames:
+ profile['status'] = u'R'
+ profile['host'] = [running_matching_hostnames[0]]
+ else:
+ profile['host'] = [profile['host'][0]]
- if profile.has_key('status') and profile['status']:
- logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): marking session profile {name} as {status}'.format(name=profile['name'], status=profile['status']))
+ if profile.has_key('status') and profile['status']:
+ logger_broker.debug('base_broker.X2GoBroker.get_profile_for_user(): marking session profile {name} as {status}'.format(name=profile['name'], status=profile['status']))
- except x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException:
- pass
+ except x2gobroker.x2gobroker_exceptions.X2GoBrokerAgentException:
+ pass
else:
profile['host'] = [profile['host'][0]]
--
Alioth's /srv/git/code.x2go.org/x2gobroker.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
More information about the x2go-commits
mailing list