Create a volume using::
- $ ceph fs volume create <vol_name>
+ $ ceph fs volume create <vol_name> [<placement>]
This creates a CephFS file system and its data and metadata pools. It also tries
to create MDSes for the filesystem using the enabled ceph-mgr orchestrator
command = {'prefix': 'fs rm', 'fs_name': fs_name, 'yes_i_really_mean_it': True}
return mgr.mon_command(command)
-def create_mds(mgr, fs_name):
- spec = orchestrator.ServiceSpec(fs_name)
+def create_mds(mgr, fs_name, placement):
+ spec = orchestrator.ServiceSpec(fs_name, orchestrator.PlacementSpec.from_strings(placement.split()))
try:
completion = mgr.apply_mds(spec)
mgr._orchestrator_wait([completion])
"""
return "cephfs.{}.meta".format(volname), "cephfs.{}.data".format(volname)
-def create_volume(mgr, volname):
+def create_volume(mgr, volname, placement):
"""
create volume (pool, filesystem and mds)
"""
remove_pool(metadata_pool)
return r, outb, outs
# create mds
- return create_mds(mgr, volname)
+ return create_mds(mgr, volname, placement)
def delete_volume(mgr, volname):
"""
### volume operations -- create, rm, ls
- def create_fs_volume(self, volname):
+ def create_fs_volume(self, volname, placement):
if self.is_stopping():
return -errno.ESHUTDOWN, "", "shutdown in progress"
- return create_volume(self.mgr, volname)
+ return create_volume(self.mgr, volname, placement)
def delete_fs_volume(self, volname, confirm):
if self.is_stopping():
},
{
'cmd': 'fs volume create '
- 'name=name,type=CephString ',
+ 'name=name,type=CephString '
+ 'name=placement,type=CephString,req=false ',
'desc': "Create a CephFS volume",
'perm': 'rw'
},
def _cmd_fs_volume_create(self, inbuf, cmd):
vol_id = cmd['name']
- return self.vc.create_fs_volume(vol_id)
+ placement = cmd.get('placement', None)
+ return self.vc.create_fs_volume(vol_id, placement)
def _cmd_fs_volume_rm(self, inbuf, cmd):
vol_name = cmd['vol_name']