ANONYMOUS_AUID = 0xffffffffffffffff
ADMIN_AUID = 0
+LIBRADOS_ALL_NSPACES = '\001'
class Error(Exception):
""" `Error` class, derived from `Exception` """
def __init__(self, ioctx):
self.ioctx = ioctx
self.ctx = c_void_p()
- ret = run_in_thread(self.ioctx.librados.rados_objects_list_open,
+ ret = run_in_thread(self.ioctx.librados.rados_nobjects_list_open,
(self.ioctx.io, byref(self.ctx)))
if ret < 0:
raise make_ex(ret, "error iterating over the objects in ioctx '%s'" \
"""
key = c_char_p()
locator = c_char_p()
- nspace = c_char_p("")
- ret = run_in_thread(self.ioctx.librados.rados_objects_list_next,
- (self.ctx, byref(key), byref(locator)))
+ nspace = c_char_p()
+ ret = run_in_thread(self.ioctx.librados.rados_nobjects_list_next,
+ (self.ctx, byref(key), byref(locator), byref(nspace)))
if ret < 0:
raise StopIteration()
return Object(self.ioctx, key.value, locator.value, nspace.value)
def __del__(self):
- run_in_thread(self.ioctx.librados.rados_objects_list_close, (self.ctx,))
+ run_in_thread(self.ioctx.librados.rados_nobjects_list_close, (self.ctx,))
class XattrIterator(object):
"""Extended attribute iterator"""
from nose.tools import eq_ as eq, assert_raises
from rados import (Rados, Error, Object, ObjectExists, ObjectNotFound,
- ANONYMOUS_AUID, ADMIN_AUID)
+ ANONYMOUS_AUID, ADMIN_AUID, LIBRADOS_ALL_NSPACES)
import threading
import json
import errno
object_names = [obj.key for obj in self.ioctx.list_objects()]
eq(sorted(object_names), ['a', 'b', 'c', 'd'])
+ def test_list_ns_objects(self):
+ self.ioctx.write('a', '')
+ self.ioctx.write('b', 'foo')
+ self.ioctx.write_full('c', 'bar')
+ self.ioctx.append('d', 'jazz')
+ self.ioctx.set_namespace("ns1")
+ self.ioctx.write('ns1-a', '')
+ self.ioctx.write('ns1-b', 'foo')
+ self.ioctx.write_full('ns1-c', 'bar')
+ self.ioctx.append('ns1-d', 'jazz')
+ self.ioctx.append('d', 'jazz')
+ self.ioctx.set_namespace(LIBRADOS_ALL_NSPACES)
+ object_names = [(obj.nspace, obj.key) for obj in self.ioctx.list_objects()]
+ eq(sorted(object_names), [('', 'a'), ('','b'), ('','c'), ('','d'),\
+ ('ns1', 'd'), ('ns1', 'ns1-a'), ('ns1', 'ns1-b'),\
+ ('ns1', 'ns1-c'), ('ns1', 'ns1-d')])
+
def test_xattrs(self):
xattrs = dict(a='1', b='2', c='3', d='a\0b', e='\0')
self.ioctx.write('abc', '')