Skip to content

Commit

Permalink
mgr / volumes: maintain connection pool for fs volumes
Browse files Browse the repository at this point in the history
Signed-off-by: Venky Shankar <vshankar@redhat.com>
  • Loading branch information
vshankar committed May 29, 2019
1 parent 35d1b1a commit c1d7733
Show file tree
Hide file tree
Showing 3 changed files with 294 additions and 196 deletions.
88 changes: 34 additions & 54 deletions src/pybind/mgr/volumes/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,84 +195,64 @@ def _cmd_fs_subvolumegroup_create(self, inbuf, cmd):
"""
:return: a 3-tuple of return code(int), empty string(str), error message (str)
"""
vol_name = cmd['vol_name']
group_name = cmd['group_name']

return self.vc.create_subvolume_group(vol_name, group_name)
return self.vc.create_subvolume_group(
None, vol_name=cmd['vol_name'], group_name=cmd['group_name'])

def _cmd_fs_subvolumegroup_rm(self, inbuf, cmd):
"""
:return: a 3-tuple of return code(int), empty string(str), error message (str)
"""
vol_name = cmd['vol_name']
group_name = cmd['group_name']
force = cmd.get('force', False)

return self.vc.remove_subvolume_group(vol_name, group_name, force)
return self.vc.remove_subvolume_group(None, vol_name=cmd['vol_name'],
group_name=cmd['group_name'],
force=cmd.get('force', False))

def _cmd_fs_subvolume_create(self, inbuf, cmd):
"""
:return: a 3-tuple of return code(int), empty string(str), error message (str)
"""
vol_name = cmd['vol_name']
sub_name = cmd['sub_name']
size = cmd.get('size', None)
group_name = cmd.get('group_name', None)

return self.vc.create_subvolume(vol_name, sub_name, group_name, size)
return self.vc.create_subvolume(None, vol_name=cmd['vol_name'],
sub_name=cmd['sub_name'],
group_name=cmd.get('group_name', None),
size=cmd.get('size', None))

def _cmd_fs_subvolume_rm(self, inbuf, cmd):
"""
:return: a 3-tuple of return code(int), empty string(str), error message (str)
"""
vol_name = cmd['vol_name']
sub_name = cmd['sub_name']
force = cmd.get('force', False)
group_name = cmd.get('group_name', None)

return self.vc.remove_subvolume(vol_name, sub_name, group_name, force)
return self.vc.remove_subvolume(None, vol_name=cmd['vol_name'],
sub_name=cmd['sub_name'],
group_name=cmd.get('group_name', None),
force=cmd.get('force', False))

def _cmd_fs_subvolume_ls(self, inbuf, cmd):
vol_name = cmd['vol_name']
group_name = cmd.get('group_name', None)

self.vc.list_subvolumes(vol_name, group_name)
self.vc.list_subvolumes(None, vol_name=cmd['vol_name'],
group_nmae=cmd.get('group_name', None))

def _cmd_fs_subvolume_getpath(self, inbuf, cmd):
vol_name = cmd['vol_name']
sub_name = cmd['sub_name']
group_name = cmd.get('group_name', None)

return self.vc.subvolume_getpath(vol_name, sub_name, group_name)
return self.vc.subvolume_getpath(None, vol_name=cmd['vol_name'],
sub_name=cmd['sub_name'],
group_name=cmd.get('group_name', None))

def _cmd_fs_subvolumegroup_snapshot_create(self, inbuf, cmd):
vol_name = cmd['vol_name']
group_name = cmd['group_name']
snap_name = cmd['snap_name']

return self.vc.create_subvolume_group_snapshot(vol_name, group_name, snap_name)
return self.vc.create_subvolume_group_snapshot(None, vol_name=cmd['vol_name'],
group_name=cmd['group_name'],
snap_name=cmd['snap_name'])

def _cmd_fs_subvolumegroup_snapshot_rm(self, inbuf, cmd):
vol_name = cmd['vol_name']
group_name = cmd['group_name']
snap_name = cmd['snap_name']
force = cmd.get('force', False)

return self.vc.remove_subvolume_group_snapshot(vol_name, group_name, snap_name, force)
return self.vc.remove_subvolume_group_snapshot(None, vol_name=cmd['vol_name'],
group_name=cmd['group_name'],
snap_name=cmd['snap_name'],
force=cmd.get('force', False))

def _cmd_fs_subvolume_snapshot_create(self, inbuf, cmd):
vol_name = cmd['vol_name']
sub_name = cmd['sub_name']
snap_name = cmd['snap_name']
group_name = cmd.get('group_name', None)

return self.vc.create_subvolume_snapshot(vol_name, sub_name, snap_name, group_name)
return self.vc.create_subvolume_snapshot(None, vol_name=cmd['vol_name'],
sub_name=cmd['sub_name'],
snap_name=cmd['snap_name'],
group_name=cmd.get('group_name', None))

def _cmd_fs_subvolume_snapshot_rm(self, inbuf, cmd):
vol_name = cmd['vol_name']
sub_name = cmd['sub_name']
snap_name = cmd['snap_name']
force = cmd.get('force', False)
group_name = cmd.get('group_name', None)

return self.vc.remove_subvolume_snapshot(vol_name, sub_name, snap_name, group_name, force)
return self.vc.remove_subvolume_snapshot(None, vol_name=cmd['vol_name'],
sub_name=cmd['sub_name'],
snap_name=cmd['snap_name'],
group_name=cmd.get('group_name', None),
force=cmd.get('force', False))
31 changes: 3 additions & 28 deletions src/pybind/mgr/volumes/subvolume.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,8 @@ class SubVolume(object):
"""


def __init__(self, mgr, fs_name=None):
self.fs = None
self.fs_name = fs_name
self.connected = False

def __init__(self, mgr, fs_handle):
self.fs = fs_handle
self.rados = mgr.rados

def _mkdir_p(self, path, mode=0o755):
Expand Down Expand Up @@ -279,31 +276,9 @@ def remove_group_snapshot(self, spec, snapname, force):
snappath = spec.make_group_snap_path(self.rados.conf_get('client_snapdir'), snapname)
return self._snapshot_delete(snappath, force)

def connect(self):
log.debug("Connecting to cephfs...")
self.fs = cephfs.LibCephFS(rados_inst=self.rados)
log.debug("CephFS initializing...")
self.fs.init()
log.debug("CephFS mounting...")
self.fs.mount(filesystem_name=self.fs_name)
log.debug("Connection to cephfs complete")

def disconnect(self):
log.info("disconnect")
if self.fs:
log.debug("Disconnecting cephfs...")
self.fs.shutdown()
self.fs = None
log.debug("Disconnecting cephfs complete")

def __enter__(self):
self.connect()
return self

def __exit__(self, exc_type, exc_val, exc_tb):
self.disconnect()

def __del__(self):
self.disconnect()

pass

Loading

0 comments on commit c1d7733

Please sign in to comment.