]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind: fix error hiding and inconsistency on librados load. 3565/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 28 Jan 2015 16:09:20 +0000 (17:09 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Mon, 2 Feb 2015 23:32:45 +0000 (00:32 +0100)
When loading of librados failed, the real cause was hidden in some
circumstances due to exception rewriting. Additionally, the error
reporting was inconsistent -- two paths with different exceptions
and messages existed.

Fixes: #7264
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/pybind/rados.py

index b50b67ce392c09629926668be43714a5c7c59f24..5d2c150a4724b620ca5ed058275a47ed50a9cc05 100644 (file)
@@ -203,17 +203,10 @@ Rados object in state %s." % self.state)
 
     def __init__(self, rados_id=None, name=None, clustername=None,
                  conf_defaults=None, conffile=None, conf=None, flags=0):
-        librados_path = find_library('rados')
-        if not librados_path:
-            #maybe find_library can not find it correctly on all platforms.
-            try:
-                self.librados = CDLL('librados.so.2')
-            except OSError as e:
-                    raise EnvironmentError("Unable to load librados: %s" % e)
-            except:
-                raise Error("Unexpected error")
-        else:
-            self.librados = CDLL(librados_path)
+        library_path  = find_library('rados')
+        # maybe find_library can not find it correctly on all platforms,
+        # so fall back to librados.so.2 in such case.
+        self.librados = CDLL(library_path if library_path is not None else 'librados.so.2')
 
         self.parsed_args = []
         self.conf_defaults = conf_defaults