From a9f8a9e45854786af064a37c6358d3cb4cc43f36 Mon Sep 17 00:00:00 2001 From: John Spray Date: Mon, 17 Mar 2014 16:17:05 +0000 Subject: [PATCH] ceph.in: Better error on bad arg to 'tell' Previously would get a rather enigmatic error: UnboundLocalError: local variable 'ret' referenced before assignment Now give something sensible: ceph_argparse.ArgumentValid: Bad target type 'mds' Also update a couple of the other catch-all exception handlers so that they will let the (nicer) ArgumentError exception through for humans to see instead of munging them into RuntimeErrors. Signed-off-by: John Spray --- src/pybind/ceph_argparse.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py index 1f6e90b6c1d6..8f2eb8f25def 100644 --- a/src/pybind/ceph_argparse.py +++ b/src/pybind/ceph_argparse.py @@ -1061,9 +1061,14 @@ def send_command(cluster, target=('mon', ''), cmd=None, inbuf='', timeout=0, ret, outbuf, outs = cluster.mon_command(cmd, inbuf, timeout) else: ret, outbuf, outs = cluster.mon_command(cmd, inbuf, timeout, target[1]) + else: + raise ArgumentValid("Bad target type '{0}'".format(target[0])) except Exception as e: - raise RuntimeError('"{0}": exception {1}'.format(cmd, e)) + if not isinstance(e, ArgumentError): + raise RuntimeError('"{0}": exception {1}'.format(cmd, e)) + else: + raise return ret, outbuf, outs @@ -1103,7 +1108,10 @@ def json_command(cluster, target=('mon', ''), prefix=None, argdict=None, inbuf, timeout, verbose) except Exception as e: - raise RuntimeError('"{0}": exception {1}'.format(prefix, e)) + if not isinstance(e, ArgumentError): + raise RuntimeError('"{0}": exception {1}'.format(cmd, e)) + else: + raise return ret, outbuf, outs -- 2.47.3