[entropy.services] open_session() can return None, state it clearly and handle the case everywhere the function is used

This commit is contained in:
Fabio Erculiani
2010-09-15 07:20:45 +02:00
parent c95b27e78e
commit ccb57e05d1
4 changed files with 53 additions and 39 deletions
+19 -14
View File
@@ -1370,6 +1370,8 @@ class AvailablePackagesRepositoryUpdater(object):
return False
session = eapi3_interface.open_session()
if session is None:
return False
try:
mydbconn = self.__get_eapi3_local_database()
@@ -1719,22 +1721,25 @@ class AvailablePackagesRepositoryUpdater(object):
self._repo_eapi -= 1
else:
session = eapi3_interface.open_session()
repo_metadata = self.__get_eapi3_repository_metadata(
eapi3_interface, session)
self.__eapi3_close(eapi3_interface, session = session)
repo_rev = repo_metadata.get('revision')
if repo_rev is not None:
try:
repo_rev = int(repo_rev)
except (ValueError, TypeError):
repo_rev = None
if repo_rev is None:
# cannot reliably detect revision in EAPI=3 world
# so we need to drop EAPI3 in favour of EAPI2
if session is None:
self._repo_eapi -= 1
else:
self._last_rev = repo_rev
return repo_rev
repo_metadata = self.__get_eapi3_repository_metadata(
eapi3_interface, session)
self.__eapi3_close(eapi3_interface, session = session)
repo_rev = repo_metadata.get('revision')
if repo_rev is not None:
try:
repo_rev = int(repo_rev)
except (ValueError, TypeError):
repo_rev = None
if repo_rev is None:
# cannot reliably detect revision in EAPI=3 world
# so we need to drop EAPI3 in favour of EAPI2
self._repo_eapi -= 1
else:
self._last_rev = repo_rev
return repo_rev
avail_data = self._settings['repositories']['available']
repo_data = avail_data[self.__repository_id]
@@ -231,29 +231,29 @@ class Client:
with self.CacheLock:
srv = self.get_connection_cache()
if srv == None:
if srv is None:
srv = self.get_service_connection(timeout = self.socket_timeout)
if srv != None:
self.cache_connection(srv)
else:
srv = srv['conn']
if srv == None:
if srv is None:
return False, 'no connection'
cmd_tuple = (login_required, func,)
new_session = False
session = self.get_session_cache(cmd_tuple)
if session == None:
if session is None:
new_session = True
session = srv.open_session()
if session == None:
if session is None:
return False, 'no session'
else:
if not srv.is_session_alive(session):
new_session = True
session = srv.open_session()
if session == None:
if session is None:
return False, 'no session'
self.set_session_cache(cmd_tuple, session)
@@ -94,17 +94,17 @@ class Client:
aware = self.UGCCache._get_live_cache_item(repository,
'is_repository_eapi3_aware')
if aware != None:
if aware is not None:
return aware
try:
srv = self.get_service_connection(repository, check = False,
timeout = 6)
if srv == None:
if srv is None:
aware = False
else:
session = srv.open_session()
if session != None:
if session is not None:
srv.close_session(session)
srv.disconnect()
aware = True
@@ -126,7 +126,7 @@ class Client:
def do_login(self, repository, force = False):
login_data = self.read_login(repository)
if (login_data != None) and not force:
if (login_data is not None) and not force:
return True, _('ok')
aware = self.is_repository_eapi3_aware(repository)
@@ -155,9 +155,11 @@ class Client:
# now verify
srv = self.get_service_connection(repository)
if srv == None:
if srv is None:
return False, _('connection issues')
session = srv.open_session()
if session is None:
return False, _('cannot open a session')
login_status, login_msg = srv.CmdInterface.service_login(
login_data['username'], login_data['password'], session)
if not login_status:
@@ -206,10 +208,10 @@ class Client:
return False, err_msg
srv = self.get_service_connection(repository)
if srv == None:
if srv is None:
return False, 'no connection'
session = srv.open_session()
if session == None:
if session is None:
return False, 'no session'
args.insert(0, session)
@@ -218,7 +220,7 @@ class Client:
while True:
# login
login_data = self.read_login(repository)
if login_data == None:
if login_data is None:
status, msg = self.login(repository)
if not status:
return status, msg
@@ -415,7 +417,7 @@ class AuthStore(Singleton):
self.xmldoc = self.minidom.parse(self.access_file)
except (self.expat.ExpatError, IOError,):
self.xmldoc = None
if self.xmldoc != None:
if self.xmldoc is not None:
try:
self.parse_document()
except self.expat.ExpatError:
@@ -424,7 +426,7 @@ class AuthStore(Singleton):
def setup_store_paths(self):
myhome = os.getenv("HOME")
if myhome != None:
if myhome is not None:
if os.path.isdir(myhome) and os.access(myhome, os.W_OK):
self.access_file = os.path.join(myhome, ".config/entropy",
os.path.basename(self.access_file))
@@ -650,7 +652,7 @@ class Cache:
try:
os.chmod(cache_file, 0o664)
if etpConst['entropygid'] != None:
if etpConst['entropygid'] is not None:
os.chown(cache_file, -1, etpConst['entropygid'])
except OSError:
raise PermissionDenied("PermissionDenied: %s %s" % (
@@ -666,7 +668,7 @@ class Cache:
def update_vote_cache(self, repository, vote_dict):
cached = self.get_vote_cache(repository)
if cached == None:
if cached is None:
cached = vote_dict.copy()
else:
cached.update(vote_dict)
@@ -674,7 +676,7 @@ class Cache:
def update_downloads_cache(self, repository, down_dict):
cached = self.get_downloads_cache(repository)
if cached == None:
if cached is None:
cached = down_dict.copy()
else:
cached.update(down_dict)
@@ -713,7 +715,7 @@ class Cache:
def get_vote_cache(self, repository):
cache_key = self._get_vote_cache_key(repository)
cached = self._get_live_cache_item(repository, cache_key)
if cached != None:
if cached is not None:
return cached
with self.CacheLock:
cache_file = self._get_vote_cache_file(repository)
@@ -721,7 +723,7 @@ class Cache:
data = entropy.dump.loadobj(
cache_file,
complete_path = True)
if data != None:
if data is not None:
self._set_live_cache_item(repository, cache_key, data)
except (IOError, EOFError, OSError):
data = None
@@ -748,13 +750,13 @@ class Cache:
def get_downloads_cache(self, repository):
cache_key = self._get_downloads_cache_key(repository)
cached = self._get_live_cache_item(repository, cache_key)
if cached != None:
if cached is not None:
return cached
with self.CacheLock:
cache_file = self._get_downloads_cache_file(repository)
try:
data = entropy.dump.loadobj(cache_file, complete_path = True)
if data != None:
if data is not None:
self._set_live_cache_item(repository, cache_key, data)
except (IOError, EOFError, OSError):
data = None
@@ -790,7 +792,7 @@ class Cache:
cache_file = self._get_alldocs_cache_file(pkgkey, repository)
try:
data = entropy.dump.loadobj(cache_file, complete_path = True)
if data != None:
if data is not None:
cached[pkgkey] = data
self._set_live_cache_item(repository, cache_key, cached)
except (IOError, EOFError, OSError):
+9 -2
View File
@@ -1995,10 +1995,17 @@ class Client:
return data
def open_session(self):
"""
Open a remote session, returning a valid session id or None (in case
of errors).
"""
self.check_socket_connection()
self.socket.setdefaulttimeout(self.socket_timeout)
self.transmit('begin')
data = self.receive()
try:
self.transmit('begin')
data = self.receive()
except (SSLError, self.socket.error):
return None
return const_convert_to_unicode(data)
def is_session_alive(self, session):