summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2013-08-14 15:50:59 -0700
committerJosh Durgin <josh.durgin@inktank.com>2013-08-14 16:11:00 -0700
commita99fef9189086f5dd6ddacaecf967619dc5fe407 (patch)
tree85090146d48000ca82b7be97bf54397fe6c024f1
parentdd0df583e2661444287a36acc240a8ac0ec381e8 (diff)
downloadceph-a99fef9189086f5dd6ddacaecf967619dc5fe407.tar.gz
rados.py: fix Rados() unicode checking
Check new parameters and check that rados_id is not None again to catch the empty string. Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage.weil@inktank.com> (cherry picked from commit 4422f21a6586467a63ce6841552d0f60aa849cf1)
-rw-r--r--src/pybind/rados.py6
-rw-r--r--src/test/pybind/test_rados.py10
2 files changed, 15 insertions, 1 deletions
diff --git a/src/pybind/rados.py b/src/pybind/rados.py
index 34d83c7b353..7768f8c39d3 100644
--- a/src/pybind/rados.py
+++ b/src/pybind/rados.py
@@ -187,10 +187,14 @@ Rados object in state %s." % (self.state))
self.librados = CDLL('librados.so.2')
self.cluster = c_void_p()
self.rados_id = rados_id
- if rados_id and not isinstance(rados_id, str):
+ if rados_id is not None and not isinstance(rados_id, str):
raise TypeError('rados_id must be a string or None')
if conffile is not None and not isinstance(conffile, str):
raise TypeError('conffile must be a string or None')
+ if name is not None and not isinstance(name, str):
+ raise TypeError('name must be a string or None')
+ if clustername is not None and not isinstance(clustername, str):
+ raise TypeError('clustername must be a string or None')
if rados_id and name:
raise Error("Rados(): can't supply both rados_id and name")
if rados_id:
diff --git a/src/test/pybind/test_rados.py b/src/test/pybind/test_rados.py
index 019a86c2763..4628a44a652 100644
--- a/src/test/pybind/test_rados.py
+++ b/src/test/pybind/test_rados.py
@@ -11,6 +11,16 @@ def test_rados_init_error():
assert_raises(Error, Rados, conffile='', name='invalid')
assert_raises(Error, Rados, conffile='', name='bad.invalid')
+def test_rados_init_type_error():
+ assert_raises(TypeError, Rados, rados_id=u'admin')
+ assert_raises(TypeError, Rados, rados_id=u'')
+ assert_raises(TypeError, Rados, name=u'client.admin')
+ assert_raises(TypeError, Rados, name=u'')
+ assert_raises(TypeError, Rados, conffile=u'blah')
+ assert_raises(TypeError, Rados, conffile=u'')
+ assert_raises(TypeError, Rados, clusternaem=u'blah')
+ assert_raises(TypeError, Rados, clustername=u'')
+
def test_rados_init():
with Rados(conffile='', rados_id='admin'):
pass