_RBD_FEATURE_FAST_DIFF "RBD_FEATURE_FAST_DIFF"
_RBD_FEATURE_DEEP_FLATTEN "RBD_FEATURE_DEEP_FLATTEN"
_RBD_FEATURE_JOURNALING "RBD_FEATURE_JOURNALING"
+ _RBD_FEATURE_DATA_POOL "RBD_FEATURE_DATA_POOL"
_RBD_FEATURES_INCOMPATIBLE "RBD_FEATURES_INCOMPATIBLE"
_RBD_FEATURES_RW_INCOMPATIBLE "RBD_FEATURES_RW_INCOMPATIBLE"
_RBD_IMAGE_OPTION_ORDER "RBD_IMAGE_OPTION_ORDER"
_RBD_IMAGE_OPTION_STRIPE_UNIT "RBD_IMAGE_OPTION_STRIPE_UNIT"
_RBD_IMAGE_OPTION_STRIPE_COUNT "RBD_IMAGE_OPTION_STRIPE_COUNT"
+ _RBD_IMAGE_OPTION_DATA_POOL "RBD_IMAGE_OPTION_DATA_POOL"
RBD_MAX_BLOCK_NAME_SIZE
RBD_MAX_IMAGE_NAME_SIZE
RBD_FEATURE_FAST_DIFF = _RBD_FEATURE_FAST_DIFF
RBD_FEATURE_DEEP_FLATTEN = _RBD_FEATURE_DEEP_FLATTEN
RBD_FEATURE_JOURNALING = _RBD_FEATURE_JOURNALING
+RBD_FEATURE_DATA_POOL = _RBD_FEATURE_DATA_POOL
RBD_FEATURES_INCOMPATIBLE = _RBD_FEATURES_INCOMPATIBLE
RBD_FEATURES_RW_INCOMPATIBLE = _RBD_FEATURES_RW_INCOMPATIBLE
RBD_IMAGE_OPTION_ORDER = _RBD_IMAGE_OPTION_ORDER
RBD_IMAGE_OPTION_STRIPE_UNIT = _RBD_IMAGE_OPTION_STRIPE_UNIT
RBD_IMAGE_OPTION_STRIPE_COUNT = _RBD_IMAGE_OPTION_STRIPE_COUNT
-
+RBD_IMAGE_OPTION_DATA_POOL = _RBD_IMAGE_OPTION_DATA_POOL
class Error(Exception):
pass
return (major, minor, extra)
def create(self, ioctx, name, size, order=None, old_format=True,
- features=None, stripe_unit=None, stripe_count=None):
+ features=None, stripe_unit=None, stripe_count=None,
+ data_pool=None):
"""
Create an rbd image.
:type stripe_unit: int
:param stripe_count: objects to stripe over before looping
:type stripe_count: int
+ :param data_pool: optional separate pool for data blocks
+ :type data_pool: str
:raises: :class:`ImageExists`
:raises: :class:`TypeError`
:raises: :class:`InvalidArgument`
if old_format:
if (features or
((stripe_unit is not None) and stripe_unit != 0) or
- ((stripe_count is not None) and stripe_count != 0)):
- raise InvalidArgument('format 1 images do not support feature'
- ' masks or non-default striping')
+ ((stripe_count is not None) and stripe_count != 0) or
+ data_pool):
+ raise InvalidArgument('format 1 images do not support feature '
+ 'masks, non-default striping, nor data '
+ 'pool')
with nogil:
ret = rbd_create(_ioctx, _name, _size, &_order)
else:
rbd_image_options_set_uint64(opts,
RBD_IMAGE_OPTION_STRIPE_COUNT,
stripe_count)
+ if data_pool is not None:
+ rbd_image_options_set_string(opts,
+ RBD_IMAGE_OPTION_DATA_POOL,
+ data_pool)
with nogil:
ret = rbd_create4(_ioctx, _name, _size, opts)
finally:
raise make_ex(ret, 'error creating image')
def clone(self, p_ioctx, p_name, p_snapname, c_ioctx, c_name,
- features=None, order=None, stripe_unit=None, stripe_count=None):
+ features=None, order=None, stripe_unit=None, stripe_count=None,
+ data_pool=None):
"""
Clone a parent rbd snapshot into a COW sparse child.
:type stripe_unit: int
:param stripe_count: objects to stripe over before looping
:type stripe_count: int
+ :param data_pool: optional separate pool for data blocks
+ :type data_pool: str
:raises: :class:`TypeError`
:raises: :class:`InvalidArgument`
:raises: :class:`ImageExists`
if stripe_count is not None:
rbd_image_options_set_uint64(opts, RBD_IMAGE_OPTION_STRIPE_COUNT,
stripe_count)
+ if data_pool is not None:
+ rbd_image_options_set_string(opts, RBD_IMAGE_OPTION_DATA_POOL,
+ data_pool)
with nogil:
ret = rbd_clone3(_p_ioctx, _p_name, _p_snapname,
_c_ioctx, _c_name, opts)
return owner == 1
def copy(self, dest_ioctx, dest_name, features=None, order=None,
- stripe_unit=None, stripe_count=None):
+ stripe_unit=None, stripe_count=None, data_pool=None):
"""
Copy the image to another location.
:type stripe_unit: int
:param stripe_count: objects to stripe over before looping
:type stripe_count: int
+ :param data_pool: optional separate pool for data blocks
+ :type data_pool: str
:raises: :class:`TypeError`
:raises: :class:`InvalidArgument`
:raises: :class:`ImageExists`
if stripe_count is not None:
rbd_image_options_set_uint64(opts, RBD_IMAGE_OPTION_STRIPE_COUNT,
stripe_count)
+ if data_pool is not None:
+ rbd_image_options_set_string(opts, RBD_IMAGE_OPTION_DATA_POOL,
+ data_pool)
with nogil:
ret = rbd_copy3(self.image, _dest_ioctx, _dest_name, opts)
finally: