The branch, build-baikal has been updated via 7cde3c55db76d4650561e2dec2be27c38809d840 (commit) from 5fd36925787861001bdb4d64fe86e45173871e3b (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: x2go/backends/control/_stdout.py | 10 ++++------ x2go/backends/profiles/_file.py | 37 +++++++++++++++++++++++++------------ x2go/client.py | 3 ++- 3 files changed, 31 insertions(+), 19 deletions(-) The diff of changes is: diff --git a/x2go/backends/control/_stdout.py b/x2go/backends/control/_stdout.py index 3fe5fc2..6eb0854 100644 --- a/x2go/backends/control/_stdout.py +++ b/x2go/backends/control/_stdout.py @@ -136,16 +136,16 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient): self.ssh_rootdir = ssh_rootdir paramiko.SSHClient.__init__(self, *args, **kwargs) - if self.add_to_known_hosts: self.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + self.session_died = False + + def load_session_host_keys(self): if self.known_hosts is not None: utils.touch_file(self.known_hosts) self.load_host_keys(self.known_hosts) - self.session_died = False - def __del__(self): self.disconnect() @@ -358,9 +358,7 @@ class X2goControlSessionSTDOUT(paramiko.SSHClient): self.logger('connecting to %s' % hostname, loglevel=log.loglevel_NOTICE) - if self.known_hosts is not None: - utils.touch_file(self.known_hosts) - self.load_host_keys(self.known_hosts) + self.load_session_host_keys() if (key_filename and os.path.exists(os.path.normpath(key_filename))) or pkey: try: self.logger('trying SSH pub/priv key authentication with server', loglevel=log.loglevel_DEBUG) diff --git a/x2go/backends/profiles/_file.py b/x2go/backends/profiles/_file.py index fffdd7c..4a1daa8 100644 --- a/x2go/backends/profiles/_file.py +++ b/x2go/backends/profiles/_file.py @@ -52,6 +52,8 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): """ self.defaultValues = {} self._profile_metatypes = {} + self._cached_profile_ids = [] + self._cached_profile_names = [] if logger is None: self.logger = log.X2goLogger(loglevel=loglevel) @@ -79,7 +81,7 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): """ _profile_id = check_profile_id_or_name(self, profile_id_or_name) - return self.get_profile_config(_profile_id) + return self.get_profile_config(profile_id=_profile_id) def get_profile_metatype(self, profile_id_or_name, force=False): @@ -117,12 +119,12 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): except KeyError: return types.StringType - def get_profile_config(self, profile_id_or_name): + def get_profile_config(self, profile_id_or_name=None, profile_id=None): """\ STILL UNDOCUMENTED """ - _profile_id = self.check_profile_id_or_name(profile_id_or_name) + _profile_id = profile_id or self.check_profile_id_or_name(profile_id_or_name) _profile_config = {} for option in self.iniConfig.options(_profile_id): _profile_config[option] = self.get(_profile_id, option, key_type=self.get_profile_option_type(option)) @@ -148,7 +150,10 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): STILL UNDOCUMENTED """ - return [ s for s in self.iniConfig.sections() if s not in self._non_profile_sections ] + if not self._cached_profile_ids: + print "updating profile ids cache" + self._cached_profile_ids = [ s for s in self.iniConfig.sections() if s not in self._non_profile_sections ] + return self._cached_profile_ids def has_profile_id(self, profile_id): """\ @@ -163,7 +168,10 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): STILL UNDOCUMENTED """ - return [ self.to_profile_name(p) for p in self.profile_ids ] + if not self._cached_profile_names: + print "updating profile names cache" + self._cached_profile_names = [ self.to_profile_name(p) for p in self.profile_ids ] + return self._cached_profile_names def has_profile_name(self, profile_name): """\ @@ -190,7 +198,7 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): STILL UNDOCUMENTED """ - return self.get_profile_config(profile_id)['name'] + return self.get_profile_config(profile_id=profile_id)['name'] def add_profile(self, profile_id=None, **kwargs): """\ @@ -209,6 +217,9 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): if key in kwargs: continue self.update_value(profile_id, key, value) + self._cached_profile_ids = [] + self._cached_profile_names = [] + return profile_id def delete_profile(self, profile_id_or_name): @@ -220,6 +231,8 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): self.iniConfig.remove_section(_profile_id) self.write_user_config = True self.write() + self._cached_profile_ids = [] + self._cached_profile_names = [] def check_profile_id_or_name(self, profile_id_or_name): """\ @@ -227,22 +240,22 @@ class X2goSessionProfilesFILE(inifiles.X2goIniFile): """ _profile_id = None - if self.has_profile_id(profile_id_or_name): - # we were given a session profile id... - _profile_id = profile_id_or_name - elif self.has_profile_name(profile_id_or_name): + if self.has_profile_name(profile_id_or_name): # we were given a sesion profile name... _profile_id = self.to_profile_id(profile_id_or_name) + elif self.has_profile_id(profile_id_or_name): + # we were given a session profile id... + _profile_id = profile_id_or_name else: raise X2goProfileException('No session profile with id or name ,,%s\'\' exists.' % profile_id_or_name) return _profile_id - def to_session_params(self, profile_id_or_name): + def to_session_params(self, profile_id_or_name=None, profile_id=None): """\ STILL UNDOCUMENTED """ - _profile_id = self.check_profile_id_or_name(profile_id_or_name) + _profile_id = profile_id or self.check_profile_id_or_name(profile_id_or_name) return utils._convert_SessionProfileOptions_2_SessionParams(self.get_profile_config(_profile_id)) def get_session_param(self, profile_id_or_name, param): diff --git a/x2go/client.py b/x2go/client.py index 77dfeb1..d171aa8 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -122,6 +122,7 @@ import copy import sys import types import os +import gevent # Python X2go modules from registry import X2goSessionRegistry @@ -559,7 +560,7 @@ class X2goClient(object): _profile_id = self.session_profiles.check_profile_id_or_name(_p) _profile_name = self.session_profiles.to_profile_name(_profile_id) - _params = self.session_profiles.to_session_params(_profile_id) + _params = self.session_profiles.to_session_params(profile_id=_profile_id) del _params['profile_name'] # override any available session parameter passed to this method 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).