]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph: catch exceptions thrown during the rados handle init
authorSage Weil <sage@inktank.com>
Tue, 22 Oct 2013 19:54:09 +0000 (12:54 -0700)
committerSage Weil <sage@inktank.com>
Tue, 22 Oct 2013 19:54:09 +0000 (12:54 -0700)
In my case, making ceph.conf unreadable triggers an exception here:

Traceback (most recent call last):
  File "./ceph", line 802, in <module>
    sys.exit(main())
  File "./ceph", line 575, in main
    conf_defaults=conf_defaults, conffile=conffile)
  File "/home/sage/src/ceph/src/pybind/rados.py", line 221, in __init__
    self.conf_read_file(conffile)
  File "/home/sage/src/ceph/src/pybind/rados.py", line 272, in conf_read_file
    raise make_ex(ret, "error calling conf_read_file")
rados.Error: error calling conf_read_file: errno EACCES

Signed-off-by: Sage Weil <sage@inktank.com>
src/ceph.in

index 6c528a474734d29861776358ea03f4b94cdc176d..94de9b7f4bd38cfd816e54801ef14db74e34a7ed 100755 (executable)
@@ -568,10 +568,16 @@ def main():
     if parsed_args.cluster:
         clustername = parsed_args.cluster
 
-    cluster_handle = rados.Rados(name=name, clustername=clustername,
-                                 conf_defaults=conf_defaults, conffile=conffile)
+    try:
+        cluster_handle = rados.Rados(name=name, clustername=clustername,
+                                     conf_defaults=conf_defaults,
+                                     conffile=conffile)
+        retargs = cluster_handle.conf_parse_argv(childargs)
+    except rados.Error as e:
+        print >> sys.stderr, 'Error initializing cluster client: {0}'.\
+            format(e.__class__.__name__)
+        return 1
 
-    retargs = cluster_handle.conf_parse_argv(childargs)
     #tmp = childargs
     childargs = retargs
     if not childargs: